JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object...

65
JAVA 1 ONTWERPDOELEN (1) JAVA IS: • eenvoudig • automatische garbage collection • klein • object georiënteerd • betrouwbaar

Transcript of JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object...

Page 1: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 1

ONTWERPDOELEN (1)

JAVA IS:

• eenvoudig

• automatische garbage collection

• klein

• object georiënteerd

• betrouwbaar

Page 2: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 2

JAVA IS:

• veilig

• architectuurneutraal

• portable

• goede performance

• multithreaded

ONTWERPDOELEN (2)

Page 3: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 3

VIRTUELE MACHINE

• Java-bytecode

• Virtuele machine in browser

Page 4: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 4

Computer die bezocht wordt

Java-programma CompilatieJava byte-code

Internet

verificatie

Schematisch:

Java byte-code

verwerking

Browser omgeving

interpreterJava virtuele machine

Uw computer

VIRTUELE MACHINE

Page 5: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 5

<HTML>

<HEAD>

<TITLE> Invoer </TITLE>

</HEAD>

<BODY>

<APPLET CODE= “InvoerApplet.class” WIDTH=426

HEIGHT=266> </APPLET>

</BODY>

</HTML>

HTML-CODE

Page 6: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 6

APPLETS VS. APPLICATIES

Applicaties:

• cfr. programma’s in C++

• uitvoeren mits JVM

• vb. : Hot Java Browser

Applets:

• cliënt

• interactiviteit op webpagina’s

Page 7: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 7

APPLICATIE

import java.lang.*;

public class Som

{ public static void main( String[] args)

{ int x = 2, y = 3, som;

som = x * x + y * y;

System.out.println("Som = "+ som);

try

{ Thread.currentThread().sleep(5000);

}

catch (InterruptedException e) {};

}

}

Page 8: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 8

UITVOERING APPLICATIE

Page 9: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 9

APPLET

import java.applet.*;

import java.awt.*;

public class Applet1 extends Applet

{ private Font f = new Font(“TimesRoman”,Font.BOLD,36);

public void paint(Graphics g)

{ g.setFont(f);

g.setColor(Color.red);

g.drawString(“Een bijzonder eenvoudige applet”,20,150);

}

}

Page 10: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 10

UITVOERING APPLET

Page 11: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 11

VISUAL CAFE

• componentenpalet (Component Tool Palette)

• ontwerpscherm (Form Designer)

• projectvenster (Project Window)

• broncode-editor (Source Editor)

• eigenschappenlijst (Property List)

• Applet-viewer

Page 12: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 12

VOORBEELD 1

import java.awt.*;

import java.applet.*;

public class WelkomApplet extends Applet

{ public void init()

{ setLayout(null);

setSize(426,266);

bt_Welkom = new java.awt.Button();

bt_Welkom.setLabel("Spreek!");

bt_Welkom.setBounds(72,60,191,61);

bt_Welkom.setBackground(new Color(12632256));

add(bt_Welkom);

Page 13: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 13

lbl_Welkom = new java.awt.Label(" ");

lbl_Welkom.setBounds(72,132,190,48);

add(lbl_Welkom);

SymMouse aSymMouse = new SymMouse();

bt_Welkom.addMouseListener(aSymMouse);

}

Java.awt.Button bt_Welkom;

java.awt.Label lbl_Welkom;

VOORBEELD 1(vervolg)

Page 14: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 14

class SymMouse extends java.awt.event.MouseAdapter

{ public void mouseClicked(java.awt.event.MouseEvent event)

{ Object object = event.getSource();

if (object == bt_Welkom)

btWelkom_MouseClick(event);

}

}

void btWelkom_MouseClick(java.awt.event.MouseEvent event)

{ lbl_Welkom.setText("Welkom bij Visual Café!");

}

}

VOORBEELD 1 (vervolg)

Page 15: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 15

RESULTAATSCHERM

Page 16: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 16

INGREDIENTEN VAN EEN APPLET

• subklasse van de standaardklasse Applet

• moet zich houden aan een aantal veiligheidsristricties

• geen main()-methode of ander beginpunt

• wordt uitgevoerd door een browser of applet-viewer

• moet public gedeclareerd zijn

Page 17: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 17

LEVENSVERLOOP VAN EEN APPLET

• creatie van een instantie d.m.v. de constructor Applet()

• de applet wordt geïnitialiseerd door de functie init()

• de applet wordt gestart door de functie start()

• de methode paint() wordt automatisch uitgevoerd

• de applet wordt indien nodig hertekend door repaint()

• bij het stopzetten, wordt de functie stop() aangeroepen

• het applet-object wordt vernietigd door de functie destroy()

Page 18: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 18

REGELS VOOR NAMEN IN JAVA (1)

• kleine letters, hoofdletters, cijfers, de underscore

en het dollarteken

• willekeurige lengte

• betekenisvolle namen

• nooit beginnen met een cijfer!

• namen van klassen beginnen ALTIJD met een hoofdletter

Page 19: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 19

REGELS VOOR NAMEN IN JAVA (2)

• namen van objecten en functies beginnen ALTIJD met

een kleine letter

• bestaat een naam van een object of een functie uit meer

dan 1 woord , dan begint het eerste woord met een kleine

letter en het volgende woord met een hoofdletter

vbn. nieuwSaldo, percentageEersteSchijf

Page 20: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 20

TEKENEN MET JAVA (1)

public class Applet2 extends Applet{ public void init()

{setBackground( Color.yellow );

}public void paint( Graphics g ){ // een driehoek in het blauw

g.setColor( Color.blue );g.drawLine(0,0,100,200);g.drawLine(100,200,0,200);g.drawLine(0,200,0,0);

Page 21: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 21

TEKENEN MET JAVA (2)

//een rechthoek van 100 breed bij 50 hoog op positie (260,10)

g.setColor(Color.green);g.drawRect(260,10,100,50);

// een ellips van 100 bij 50 op positie (260,80) in het witg.setColor(Color.white);g.drawOval(260,80,100,50);

// een gevulde rechthoek en ellips in het paarsg.setColor(Color.magenta);g.fillRect(130,10,100,50);g.fillOval(130,80,100,50);

Page 22: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 22

TEKENEN MET JAVA (3)

// een rechthoek met afgeronde hoeken in het roodg.setColor(Color.red);g.drawRoundRect(130,150,100,70,40,40);

//ook fillRoundRect();// een boog en een taartpunt (= gevulde boog) in het grijs

g.setColor(Color.gray);g.drawArc(230,200,188,100,15,75);g.fillArc(260,200,60,40,15,75);

}}

Page 23: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 23

EVENTS

Schematisch:

Event Event-object

Event-afhandeling De methode

ActionActionEvent

actionPerformed(ActionEvent e)

Page 24: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 24

EVENTS - VOORBEELD 1 (1)

import java.awt.*;import java.applet.Applet;import java.awt.event.*;public class Schuifbalk extends Applet

implements AdjustmentListener{ private Scrollbar slider;

private int sliderValue = 0; public void init() { slider = new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,100);

add(slider);slider.addAdjustmentListener(this);

}

Page 25: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 25

EVENTS - VOORBEELD 1 (2)

public void paint(Graphics g) {

g.drawString(“Current value is “ + sliderValue,100,100); }

public void adjustmentValueChanged (AdjustmentEvent e) {

sliderValue = slider.getValue();// haalt de momentele waarde van de schuifbalk oprepaint(); // paint() wordt terug aangeroepen

}}

Page 26: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 26

EVENTS - VOORBEELD 2 (1)

public class Safe extends Applet implements ActionListener{ private int guess = 0, combination = 321;

private Button btnOne, btnTwo, btnThree, btnAgain; public void init()

{ btnOne = new Button(“1”); add(btnOne);btnOne.addActionListener(this);btnTwo = new Button(“2”); add(btnTwo);btnTwo.addActionListener(this);btnThree = new Button(“3”); add(btnThree);btnThree.addActionListener(this);btnAgain = new Button(“Try again”); add(btnAgain);btnAgain.addActionListener(this);

}

Page 27: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 27

EVENTS - VOORBEELD 2 (2)

public void paint(Graphics g){ if (guess == combination)

g.drawString(“Unlocked”,50,50);else g.drawString(“Locked”,50,50);

} public void actionPerformed (ActionEvent event)

{ if (event.getSource() == btnOne)guess = guess*10 + 1;

else if (event.getSource() == btnTwo)guess = guess*10 + 2;

else if (event.getSource() == btnThree)guess = guess*10 + 3;

else if (event.getSource() == btnAgain) guess = 0;repaint();

}}

Page 28: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 28

VOORBEELD 3 - UITVOER

Page 29: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 29

JAR- files

• samenvoegen van verschillende files tot 1 JAR-file (1.1)• snelle transportatie over het net (gecompresseerde file)• ARCHIVE-attribuut van de <APPLET>-tag gebruiken:<APPLET code = "voorbeelden.applet.ColorScribble.class” ARCHIVE = "Scribbleapplet.jar" width = 400 height = 400> <PARAM name = "foreground" value = "FF0000"> <PARAM name = "background" value = "CCFFCC"> </APPLET>• het ARCHIVE-attribuut vervangt het CODE-attribuut niet!

Page 30: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 30

VARIABELEN (H. 4)

• 3 soorten : instantievar., klassevar., lokale variabelen• variabelen, die naar een object verwijzen = REFERENTIES Voorbeeld: Font f; // = null, als f een member is f = new Font(“TimesRoman”,Font.BOLD,20);

• variabelen van een primitief type (GEEN objecten)byte boolean 1bchar short 2bint float 4bdouble long 8b

Page 31: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 31

REFERENTIETYPEN

• een toekenningsopdracht = een wijzertoekenning (b2 = b1;)

> OPL = een methode toevoegen aan de klasse, die een > diepe kopie maakt (b2 = b1.kopie();)

• een vergelijking = een wijzervergelijking ( if (b2 == b1) ...)

> OPL1 = de methode equals uit de moederklasse Object > overridden ( if (b1.equals(b2))... )> OPL2 = een methode uitwerken voor waardevergelijking in> de betreffende klasse ( if (b1.isGelijk(b2)) ... )

Page 32: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 32

PRIMITIEVE TYPE : int en Integer (1)

• geen controle op de grenzen (cirkel)• dezelfde rekenkundige operatoren als in C++• Integer = verpakkingsklasse (java.lang) > 1 member, een int, die niet wijzigbaar is (private)> 2 constanten : MAX_VALUE en MIN_VALUE> nuttige functies:Integer obj = new Integer(3); // of new Integer(“3”);int i = obj.intValue(); // terug uitpakken

// invoer van een getal:String s = txtInvoer.getText(); int j = Integer.parseInt(s); // static functie!

Page 33: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 33

PRIMITIEVE TYPE : int en Integer (2)

// uitvoer van een getal in een tekstvak:txtUitvoer.setText(Integer.toString(j)); // oftxtUitvoer.setText(String.valueOf(j));

// uitvoer naar het grafische scherm van j:g.drawString (“Het resultaat is “ + j,10,10);// uitvoer naar het scherm van een object van de klasse Datum:g.drawString(“Vandaag is het “ + vandaag);// mits in de klasse Datum de volgende functie staat:public String toString(){ return dag + “/” + maand + “/” + jaar; }

Page 34: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 34

PRIMITIEVE TYPE : double en Double

• een constante van de vorm 3.5 is een double• delen door 0 is toegelaten -> Infinity• geen automatische conversie van een hoger naar een lager type : float f = 10.3; geeft een compilatiefout> OPL = suffix f gebruiken: 10.3f• alle operatoren voor integers kunnen hier ook gebruikt worden• // invoer van een getal:String s = txtInvoer.getText(); Double hulp = Double.valueOf(s); // static functie!double getal = hulp.doubleValue();// ofdouble getal = Double.parseDouble(s); // JDK 1.2!!!

Page 35: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 35

CONSTANTEN

• Karakterconstanten � tussen apostrofs: char ch = ‘A’;� UNICODE - 16 bits: \udddd = Unicode-teken, bevat bijna alle bestaande alfabetten van moderne talen (cultuuronafh.)� escape codes, bv. \u000A = ‘\n’

• Boole-constanten : true en false• String-constanten = OBJECT van de klasse String (geen array)

• Numerieke constanten � final int AANTAL = 5;� constanten in een klasse static declareren (vb. Math.PI)

Page 36: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 36

HERHALINGEN

• relationele operatoren: <, <=, >, >=, ==, !=• logische operatoren: &&, ||, !• Alle logische expressies MOETEN true of false opleveren!!! NIET : if (i) .... ;

• while (logische expressie) statement• do statement while (logische expressie);• for (init-expr.;log. expr.;incr. expr.) statement

• een break- of een continue-statement in een lus• komma-operator

Page 37: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 37

BESLISSINGEN

• if (logische expressie) statement• if (logische expressie) statement1 else statement2• switch-statement (VERGEET de break niet na elke case!)switch (discrete var.) {

case waarde1: statement1

break;

case waarde2: statement2

break;

default: statement

break;

}• conditionele expressie : x = 3 * (a > b? a : b ) + 100;

Page 38: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 38

CONVERSIE

• Promotie en casting:

• impliciete conversie

int a= 10;

double b = 10.2;

b += a;

• expliciete conversie

int i = (int) 3.14;

Page 39: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 39

SPECIFICATIE VAN EEN KLASSE

(eventueel) public(eventueel) final(eventueel) abstractclass <naam van de klasse>(eventueel) extends <naam van de moederklasse>(eventueel) implements <lijst van interfaces>{ <opsomming van eigenschappen en methoden>}

Page 40: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 40

VOORBEELD - HAPPER - UITVOER

Page 41: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 41

ARRAYS - declaratie en initialisatie

• Arrays in Java zijn objecten!

• Bevat waarden van een elementair type of een object

int[] a;

a= new int[10];

OF

int a[];

a= new int[10];

OF

int[] a = new int [10];

Page 42: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 42

• Een rij van objecten van de klasse Punt: Punt [] r;

r = new Punt[10]; // r is een referentie naar een rij van 10 referenties, die = null

for (int i = 0;i < 10;i++) r[i] = new Punt(i+1,i+2);

ARRAYS - declaratie en initialisatie

Page 43: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 43

ARRAYS - declaratie en initialisatie

• a en r zijn referenties naar een array met 10 elementen

• Default-initialisatie op 0 en op null

• De lengte hoeft geen constante te zijn, doch de waarde moet op voorhand gekend zijn:

double[] b;

int n;

//toekennen van een waarde aan n

b = new double[n];

Page 44: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 44

ARRAYS - declaratie en initialisatie

• length: public attribuut dat de lengte weergeeft

b.length (kan niet meer gewijzigd worden)

• Declaratie en initialisatie kan gelijktijdig:

String[] s= {’’ Jan ’’, ’’Stijn ’’, ’’Steven ’’}

• Automatische controle op de lengte (vs. C++)

Page 45: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 45

ARRAYS - voorbeeld - veelhoekapplet

 public class VeelhoekApplet extends Applet

{ private Polygon pijl, pijl2;

private int[] xRij = { 50, 100, 100, 150, 100, 100, 50, 50 };

private int[] yRij = { 100, 100, 60, 125, 190, 150, 150, 100 };

private final int AANTALPUNTEN = xRij.length;

public void init()

{ pijl = new Polygon( xRij, yRij, AANTALPUNTEN );

for( int i = 0; i < AANTALPUNTEN; i++ ) xRij[ i ] += 150;

pijl2 = new Polygon( xRij, yRij, AANTALPUNTEN ); }

public void paint( Graphics g )

{ g.drawPolygon( pijl );

g.setColor( Color.blue );

g.fillPolygon( pijl2 );

}

}

Page 46: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 46

ARRAYS - referentiekarakter

• Referentiekarakter bij toekenning

• Stel: int[] a = new int[10], b;

a[1] = 1;

b = a;// a en b wijzen naar dezelfdearray!

b[1] = 10;

a[2] = 20;

• Om in b enkel dezelfde waarden te hebben: kopiëren!!

For-lus

Arraycopy-methode van de klasse System

Page 47: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 47

ARRAYS - referentiekarakter

Opgelet : eerst een creatie met new voor b

• Referentiekarakter bij vergelijking

• functie equals() uit de moederklasse overridden

• zelf een functie ontwerpen

Page 48: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 48

ARRAY als argument van een methode

Uitvoer StaafdiagramApplet:

Page 49: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 49

ARGUMENTEN VAN EEN METHODE

• Algemeen:

• Objecten: steeds BY REFERENCE

• Primitieve types: steeds BY VALUE

Gevolg:

int i = 5, j = 7;

verwissel (i, j) ; // dit gaat niet!

Oplossing: Eigen wrapperklasse maken

Page 50: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 50

EIGEN WRAPPERKLASSE (1)

public class IntObj{ public static void main (String[] args)

{ MijnInt i = new MijnInt(5), j = new MijnInt(7) ; verwissel(i, j) ; System.out.println("Na verwisseling is : ") ; System.out.println("i = " + i.x) ; System.out.println("j = "+ j.x) ; }static void verwissel( MijnInt a, MijnInt b){ int h = a.getX() ; a.setX(b.getX()) ; b.setX(h); }

}

Page 51: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 51

EIGEN WRAPPERKLASSE (2)

class MijnInt{

private int x ;

MijnInt( int i) {

x = i ;}int getX() { return x;}void setX(int n) { x = n;}

}

Page 52: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 52

Array als terugkeerwaarde van een methode

int [] f() { int [] a = new int [10];

.....

return a;

}

Page 53: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 53

TWEEDIMENSIONALE ARRAYS

int [ ] [ ] sales = new int [4] [7] ;

String [ ] [ ] schaakbord = new String [8] [8 ] ;

sales [3] [2] = 99;

schaakbord [2] [7] = "paard"; // geen new nodig!

int [ ] [ ] tabel = {{1, 0}, {0, 1, 0}} ;

int aantalRijen = tabel.length ;

int aantalKolRij0 = tabel[0].length ; // de lengte van rij 0

// tabel[0] refereert naar de eerste rij

Page 54: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 54

STRINGS - declaratie en initialisatie

• Strings zijn objecten! Doch new is overbodig!

Voorbeeld: String tekst;

tekst = “Jan”;

• Concatenatie:

+ of zelfs += (impliciete aanroep van concat())

concat-methode:

public String concat(String str)

Page 55: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 55

STRINGS - conversie

Conversie van een getal naar een String

• Via lege string: s= “” + 123;

• Via static-methode valueOf() uit de String klasse

int i = 321;

String is = String.valueOf(i);

double x = 3.14;

String sx = String.valueOf(x);

Opm: lengte van een string te bepalen via methode length():

int i = sx.length(); // GEEN static-methode!

Page 56: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 56

STRINGS EN REFERENTIES

• String-objecten gecreëerd via new en constructor zijn ECHTE referenties naar objecten:

String s1= new String(“Klaar!”), s2= new String (“Klaar!”);

s1 s2

De test s1.equals(s2) levert true op!

De test s1 == s2 levert false op!

Klaar! Klaar !

Page 57: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 57

STRINGS EN REFERENTIES

• String ‘variabelen’ gecreëerd zonder new, komen terecht in een pool van strings:

String s1=“Klaar!”,

s2=“Klaar!”;

JAVA springt zuinig om met String-objecten!

Nu blijken s1 en s2 ook

gelijk te zijn!

s1,s2 °”Klaar !”°”Daag” °”Jan”

Page 58: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 58

STRINGS EN REFERENTIES

Het statement s2 = “Niet klaar!”; zorgt ervoor dat in beide gevallen s2 gaat wijzen naar een andere string!

Besluit: een string is niet-modificeerbaar (=constante)

bij elke aanroep van een string-methode of string- operatie wordt een nieuwe string aangemaakt (de oude is afval) of wordt gebruik gemaakt van de klasse StringBuffer (bevat methoden om strings te wijzigen)!!

Voorbeelden:

s = s.replace(‘f’,’p’); // NIET : s.replace(‘f’,’p’);

s = s.toUpperCase();

Page 59: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 59

STRINGS EN REFERENTIES

String uit = “TIN” + 3 + ‘A ‘;

met uitsluitend stringmethoden:

String uit = “TIN”.concat(String.valueOf(3)).concat(String.valueOf(‘A’));

Wanneer voor elk tussenresultaat een nieuwe string wordt aangemaakt, zou de compiler erg zorgeloos met geheugen omspringen -> de klasse StringBuffer:

String uit = new StringBuffer().append(“TIN”).

append(3).append(‘A’).toString();

Page 60: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 60

Klasse String : nuttige functies

char charAt (int index); // om een karakter uit de string// te halen; de notatie str[i] bestaat niet in Java!

int length(); // lengte = logische lengte

String replace (char c1, char c2);

String substring (int beginIndex);String substring (int beginIndex,int eindIndex);String toLowerCase();String toUpperCase();Enz...

Page 61: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 61

Klasse StringBuffer : nuttige functies

3 constructoren:StringBuffer() : cap.=16 karakters ( = fysische lengte) , length = 0StringBuffer(l): cap. = l karakters, length = 0StringBuffer(String) : cap. = length = lengte van de string

append(...) : toevoegen van een double, float, boolean, char, int, long, Object, char[] of een String aan een StringBufferinsert(...,...) : toevoegen op een bepaalde index = eerste argument, tweede argument = toevoegselsetCharAt(int i, char c) : vervangen van het karakter op positie i door char c met i >= 0 en i < lengthsetLength(int) : de logische lengte wijzigen

Page 62: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 62

VOORBEELD - ReverseString

public class ReverseString{ // st2 = reverse(st1);

public static String reverse (String source){

int len = source.length();StringBuffer dest = new StringBuffer(len);for (int i = len - 1;i >= 0;i--)

dest.append(source.charAt(i));return dest.toString();

} public static void main(String[] args)

{ System.out.println(reverse(“JAVA”)); }}

Page 63: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 63

OEFENING op strings

Maak een applicatie, die werkt met invoer via de programmaparameters: een string en een cijfer (tussen 1 en 4).Voer de volgende testen uit op de parameters in de static functie test():

het aantal parameters moet twee zijn de tweede parameter moet een cijfer zijn de tweede parameter moet gelegen zijn tussen 1 en 4

Afhankelijk van de tweede parameter moet de volgende bewerking uitgevoerd worden op de string:

• Zet alle kleine letters in de string om in hoofdletters (1).• Zet de beginletter van de string om in een hoofdletter (2).• Tel het aantal klinkers in het woord (3).• Ga na of de string een palindroom is (4).

Schrijf voor elk van de volgende functionaliteiten een aparte functie en druk het resultaat telkens in main() af.

Page 64: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 64

OEFENING 4 : BOODSCHAPPENLIJST (1)

TOEVOEGEN

VERWIJDEREN

ACHTERAAN

VOORAAN

LEEGMAKEN

Appels

PerenRijstBrood

List-component

Page 65: JAVA1 ONTWERPDOELEN (1) JAVA IS: eenvoudig automatische garbage collection klein object georiënteerd betrouwbaar.

JAVA 65

OEFENING 4 : BOODSCHAPPENLIJST (2)

Belangrijkste functies op een List-component l:

• l.clear();• int tel = l.countItems();• int n = l.getSelectedIndex(); // n = 0, ...• String s = l.getSelectedItem();• l.delItem(n);• l.addItem(s); // achteraan toevoegen• l.addItem(s,0); // vooraan toevoegen