hoofdstuk 4: klassen definiëren
DESCRIPTION
Hoofdstuk 4: Klassen definiëren. Klasse. Herinner: Gelijksoortige objecten met hetzelfde gedrag en gelijksoortige attributen worden gedefinieerd door een klasse Toestand: attributen of instantie variabelen Gedrag: methoden Prototype van een methode - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/1.jpg)
Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Hoofdstuk 4: Klassen definiëren
Hoofdstuk 4: Klassen definiëren
![Page 2: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/2.jpg)
22Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
KlasseKlasse
• Herinner:Gelijksoortige objecten met hetzelfde gedrag en gelijksoortige attributen worden gedefinieerd door een klasseklasse• Toestand: attributen of instantie variabelen• Gedrag: methoden
– Prototype van een methode» Naam methode, beschrijving van de argumenten
en beschrijving van de “return” waarde– Argumenten worden ook wel parameters genoemd
![Page 3: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/3.jpg)
33Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Klasse definitieKlasse definitie
class klasse-naam {
instantie variabelen constructor definitiesmethode definities
}
delimiterdelimiter
Voorbeeld
Class Lacher {...}
klasse-naamklasse-naam
GebruikLacher x ;GebruikLacher x ;
x
![Page 4: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/4.jpg)
44Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Methode definitieMethode definitie
public return-waarde methode-naam ( parameter-definities)
{ body van de methode }
Voorbeeld
public void lachen ( ) { System.out.println( “haha”); System.out.println( “haha”);}
Return-waarde: geenReturn-waarde: geen
Methode-naamMethode-naam
Parameter-definities: geenParameter-definities: geen
Body van de methodeBody van de methode
![Page 5: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/5.jpg)
55Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Methode aanroepMethode aanroep
• Veronderstel een referentie variabele x die verwijst naar een object van de klasse Lacher
...Lacher x ;...x.lachen() ;
x
Lacher objectlachen()
lachen()
![Page 6: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/6.jpg)
66Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Methode - uitvoeringMethode - uitvoering
public void lachen ( ) { System.out.println( “haha”); System.out.println( “haha”);}
x
Lacher objectlachen()
• Instructies in de body van de methode worden één voor één uitgevoerd
![Page 7: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/7.jpg)
77Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Constructor definitieConstructor definitie
• Zoals methode• Geen return-type • Naam is steeds naam van de klasse
• Herinner: constructor maakt bij aanroep een nieuwe instantie van de klasse
![Page 8: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/8.jpg)
88Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Constructor definitie - voorbeeldConstructor definitie - voorbeeld
Voorbeeldclass Lacher {
public Lacher ( ) {
// deze constructor maakt alleen een nieuwe instantie
// van de klasse Lachter, verder doet die niets
}
}
Definitie van een constructorDefinitie van een constructor
Gebruik
Lacher x ;
Gebruik
Lacher x ;
x
x = new Lacher();Lacher object
![Page 9: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/9.jpg)
99Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Voorbeeld LacherVoorbeeld Lacher
class Lacher {
public Lacher ( ) {
}
public void lachen ( ) {
System.out.println( “haha”);
System.out.println( “haha”);
}}
De constructorDe constructor
Een methodeEen methode
GebruikLacher x ;x = new Lacher();x.lachen() ;
GebruikLacher x ;x = new Lacher();x.lachen() ;
![Page 10: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/10.jpg)
1010Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Voorbeeld Lacher - meerdere instantiesVoorbeeld Lacher - meerdere instanties
class Lacher {public Lacher ( ) {
}public void lachen ( ) {
System.out.println( “haha”); System.out.println( “haha”);}
}GebruikLacher x , y;x = new Lacher();y = new Lacher();
x.lachen() ;y.lachen() ;
GebruikLacher x , y;x = new Lacher();y = new Lacher();
x.lachen() ;y.lachen() ;
y
x
Lacher object
Lacher object
![Page 11: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/11.jpg)
1111Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Methode met argumentenMethode met argumenten
• We willen het geluid van de lacher kunnen veranderen.– Via een argument bij de methode
lachenx.lachen ( “hihi”)x.lachen (“hoho”)
– Methode definitie:public void lachen (String geluid )
Definitie van het argument, ook parameter genoemd
Definitie van het argument, ook parameter genoemd
typetype
Naam van de parameterNaam van de parameter
![Page 12: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/12.jpg)
1212Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Methode definitie - met parametersMethode definitie - met parameters
Voorbeeld
public void lachen (String geluid ) { System.out.println( geluid ) ; System.out.println( geluid ) ;
}Gebruik van de parameter,zoals een variabeleGebruik van de parameter,zoals een variabele
![Page 13: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/13.jpg)
1313Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
ParametersParameters
• Een parameter is zoals een variabele, maar– bestaat maar zolang de methode uitgevoerd
wordt– De waarde bij aanvang wordt gegeven bij de
aanroep van de methode
![Page 14: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/14.jpg)
1414Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Parameters - werkingParameters - werking
public void lachen (String geluid ) {
System.out.println( geluid ) ;
System.out.println( geluid ) ;
}
Werking bij activatiex.lachen(“hihi”) ;
“hihi”
geluid
![Page 15: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/15.jpg)
1515Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Parameters - werking (2)Parameters - werking (2)
public void lachen (String geluid ) {
System.out.println( geluid ) ;
System.out.println( geluid ) ;
}
Werking bij activatiex.lachen(“hihi”) ;
x.lachen(“hoho”) ;
“hihi”
geluid
![Page 16: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/16.jpg)
1616Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Parameters - werkingParameters - werking
public void lachen (String geluid ) {
System.out.println( geluid ) ;
System.out.println( geluid ) ;
}
Werking bij activatiex.lachen(“hihi”) ;
x.lachen(“hoho”) ;
geluid
“hoho”
![Page 17: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/17.jpg)
1717Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Klasse definitie met overloadingKlasse definitie met overloading
class Lacher {
public Lacher ( ) {
}
public void lachen () {
System.out.println( “haha”) ;
}
public void lachen (String geluid ) {
System.out.println( geluid ) ;
}
}
Methode naam is “overladen”Maar verschillende signatuur.
Methode naam is “overladen”Maar verschillende signatuur.
GebruikLacher x ;x = new Lacher ;x.lachen();x.lachen(“hihi”) ;
GebruikLacher x ;x = new Lacher ;x.lachen();x.lachen(“hihi”) ;
![Page 18: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/18.jpg)
1818Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Klasse definitie met instantie variabelenKlasse definitie met instantie variabelen
• Instantie variabelen dienen om toestand van een object te beschrijven
• Zijn variabelen • Zijn toegankelijk vanuit al de
methoden gedefinieerd in de klasse• Zijn enkel toegankelijk voor die
methoden
private type identifier
![Page 19: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/19.jpg)
1919Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
class Lacher {
private String defaultGeluid ;
public Lacher (String geluid ) {… }
public void lachen () {… }
public void lachen (String geluid) {… }
}
Voorbeeld instantie variabelenVoorbeeld instantie variabelenVoorbeeld: Lacher klasse die toelaat om het default lachgeluid
bij het maken van een object vast te leggen.
Instantie variabeleInstantie variabele
GebruikLacher x ;GebruikLacher x ;
x
defaultGeluid
x = new Lacher( “hihi”);
![Page 20: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/20.jpg)
2020Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
class Lacher {
private String defaultGeluid ;
public Lacher (String default ) {defaultGeluid = default ;
}public void lachen () {
System.out.println( defaultGeluid) ;}
public void lachen (String geluid) {System.out.println( geluid) ;}
}
Gebruik van instantie variabelenGebruik van instantie variabelen
Instantie variabeleInstantie variabele
Gebruik van de instantie variabeleGebruik van de instantie variabele
GebruikLacher x ;GebruikLacher x ;
x
defaultGeluid
x = new Lacher(‘hihi”);
“hihi”
x .lachen();x .lachen(“haha”);
![Page 21: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/21.jpg)
2121Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
class Lacher {private String defaultGeluid ;
public Lacher (String default ) {defaultGeluid = default ;
}public void lachen () {
System.out.println( defaultGeluid) ;}
public void lachen (String geluid) {System.out.println( geluid) ;}
}
Meerdere instanties en instantie variabelenMeerdere instanties en instantie variabelen
GebruikLacher x, y ;x = new Lacher(‘hihi”);
GebruikLacher x, y ;x = new Lacher(‘hihi”);
x
defaultGeluid
“hihi”
y
defaultGeluid
“hoho”
y = new Lacher(‘hoho”);
x .lachen();y .lachen();
![Page 22: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/22.jpg)
2323Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Variabelen voor methodenVariabelen voor methoden
class Lacher {private String defaultKlank ;
public Lacher (String klank ) {defaultKlank = klank ;
}public void lachen () {
String geluid;geluid = defaultKlank.concat(defaultKlank) ;System.out.println( geluid) ;}
}
Variabele enkel voor de methode lachen() Is een lokale variabele
Variabele enkel voor de methode lachen() Is een lokale variabele
• We wijzigen de klasse en houden in de instantie variabele enkel de klank bij, bv. “ha” of “hi”. Bij de methode lachen wordt het lachgeluid dan samengesteld door concatenatie.
![Page 23: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/23.jpg)
2424Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Lokale variabelen - werkingLokale variabelen - werking
public void lachen () {String geluid;geluid = defaultKlank.concat(defaultKlank) ;System.out.println( geluid) ;}
Werking bij activatieLacher x;
x = new Lacher(‘hi”);
x.lachen() ;
“hihi”
geluid
“hi”
x
defaultKlank
![Page 24: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/24.jpg)
2525Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Meerdere methoden met variabelenMeerdere methoden met variabelen
class Lacher {
Private String defaultKlank ;
public Lacher (String klank ) {defaultKlank = klank ;
}public void lachen () {
String defaultGeluid;defaultGeluid = defaultKlank.concat(defaultKlank) ;System.out.println( defaultGeluid) ;}
public void lachen (String klank) {String geluid;geluid = klank.concat(klank) ; System.out.println( geluid) ;}
}
Variabele enkel voor deze methode lachen()
Variabele enkel voor deze methode lachen()
Variabele enkel voor de methode lachten(String klank)
Variabele enkel voor de methode lachten(String klank)
![Page 25: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/25.jpg)
2626Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Een klasse gebruikenEen klasse gebruiken
• Stap 1: maak bestand klasse-naam.java met klasse definitie
• Stap 2:Compileer dit bestand -> resultaat bestand klasse-naam.class
• Stap 3:klasse kan nu gebruikt worden
![Page 26: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/26.jpg)
2727Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Voorbeeld - definitie klasseVoorbeeld - definitie klasse• Lacher.java bestandimport java.io.*; //nodig omdat we een PrintStream object gebruikenclass Lacher {
private String defaultKlank ;
public Lacher (String klank ) {defaultKlank = klank ;
}public void lachen () {
String geluid;geluid = defaultKlank.concat(defaultKlank) ;System.out.println( geluid) ;}
public void lachen (String klank) {String geluid;geluid = klank.concat(klank) ; System.out.println( geluid) ;}
}
![Page 27: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/27.jpg)
2828Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Voorbeeld - gebruik klasseVoorbeeld - gebruik klasse
import java.io.*;
class ProgrammaLachen {
public static void main(String[ ] arg) { System.out.println(“Lekker lachen”);
Lacher x, y ;
x = new Lacher(“yuk”) ;
y = new Lacher(“harr”);
x.lachen();
x.lachen(“hee”);
y.lachen();
}
}
![Page 28: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/28.jpg)
2929Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Klassen ontwerpenKlassen ontwerpen
Methode1. Bepaal het gewenste gedrag
methoden2. Bepaal de interface van de methoden
Prototype van de methoden3. Schrijf een voorbeeld programma die de
klasse gebruiktCheck
4. Maak het skelet van de klasse5. Schrijf de code voor de methoden
(implementeer)
![Page 29: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/29.jpg)
3030Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Voorbeeld - klasse ontwerpVoorbeeld - klasse ontwerp
• Ontwerp klasse voor het behandelen van tijdstippen :
class Tijdstip
![Page 30: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/30.jpg)
3131Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Bepaal het gedragTijdstip vb - Bepaal het gedrag
• We willen het volgende gedrag– Een tijdstip een waarde (uren, min en sec)
kunnen geven– Het uur van een tijdstip kunnen opvragen– De minuten van een tijdstip kunnen opvragen– De seconden van een tijdstip kunnen
opvragen– Het uur van een tijdstip kunnen wijzigen– De minuten van een tijdstip kunnen wijzigen– De seconden van een tijdstip kunnen wijzigen– Het tijdstip kunnen afdrukken op het scherm
![Page 31: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/31.jpg)
3232Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Bepaal de interfaceTijdstip vb - Bepaal de interface– Class name: Tijdstip
– Constructor: Tijdstip()
• Vb: Tijdstip t1 = new Tijdstip();public Tijdstip()
– Tijdstip een waarde geven: Vb: t1.zet(23, 40, 15);
public void zet( int u, int m, int s)
– Het uur van een tijdstip kunnen opvragen: Vb: int u1 ;
u1 = t1.geefUur();public int geefUur( )
![Page 32: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/32.jpg)
3333Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Bepaal de interface (vervolg)Tijdstip vb - Bepaal de interface (vervolg)
– De minuten van een tijdstip kunnen opvragen:
Vb: int m1 ;
m1 = t1.geefMin();public int geefMin( )
– De sec van een tijdstip kunnen opvragen: Vb: int s1 ;
s1 = t1.geefSec();public int geefSec( )
– Het uur van een tijdstip kunnen wijzigen: Vb: t1.wijzigUur(11);
public void wijzigUur( int u)
![Page 33: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/33.jpg)
3434Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Bepaal de interface (vervolg)Tijdstip vb - Bepaal de interface (vervolg)
– De minuten van een tijdstip kunnen wijzigen: Vb: t1.wijzigMin(44);
public void wijzigMin( int m)
– De seconden van een tijdstip kunnen wijzigen:
Vb: t1.wijzigSec(20);public void wijzigSec( int s)
– Het tijdstip kunnen afdrukken op het scherm: Vb: t1.drukaf();
public void drukaf( )
![Page 34: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/34.jpg)
3535Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Een vb-programmaTijdstip vb - Een vb-programmaimport java.io.*; class ProbeerTijdstip {
public static void main(String[ ] arg) throws IOException { Tijdstip t1 = new Tijdstip ();Tijdstip t2 = new Tijdstip();t1.zet(10, 15, 30) ;int u, m, s ;u = t1.geefUur ();m = t1.geefMin() ;s = t1.geefSec();t2.zet(u +1, m, s) ;t1.wijzigMin(30) ;t1.drukaf();t2.drukaf();}
}
![Page 35: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/35.jpg)
3636Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Klasse skeletTijdstip vb - Klasse skeletclass Tijdstip {
instantie variabelen indien nodig
public Tijdstip() {statements
}// geef waardepublic void zet(int u, int m, int s) {
statements}// geef uur; public int geefUur( ) {
statements}
![Page 36: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/36.jpg)
3737Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Klasse skelet (vervolg)Tijdstip vb - Klasse skelet (vervolg)// geef min; public int geefMin( ) {
statements}// geef sec; public int geefSec( ) {
statements}// wijzig uur ; public void wijzigUur(int u) {
statements}// wijzig min ; public void wijzigMin(int m) {
statements}
![Page 37: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/37.jpg)
3838Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Klasse skelet (vervolg)Tijdstip vb - Klasse skelet (vervolg)
// wijzig sec ; public void wijzigSec(int s) {
statements}// druk af op het schermpublic void drukaf ( ) {
statements}
}
![Page 38: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/38.jpg)
3939Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - ImplementatieTijdstip vb - Implementatie
• Welke instantie variabelen nodig?– Bijhouden uur, minuten, seconden
• 3 integer variabelen: uur, min en sec
int uur, min, sec ;
• De constructor Tijdstip()
public Tijdstip() {}
![Page 39: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/39.jpg)
4040Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Implementatie (2)Tijdstip vb - Implementatie (2)
• Begin bij eender welke methode– Meestal de gemakkelijksteBv. zet
public void zet(int u, int m, int s) {uur = u ;min = m ;sec = s ;
}
![Page 40: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/40.jpg)
4141Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Implementatie (3)Tijdstip vb - Implementatie (3)
• De methodes geefUur, geefMin en geefSec
public int geefUur() {return uur ;}
Speciale instructie: “return waarde” ; Speciale instructie: “return waarde” ;
public int geefMin() {return min ;}
public int geefSec() {return sec ;}
![Page 41: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/41.jpg)
4242Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Implementatie (4)Tijdstip vb - Implementatie (4)
• De methodes wijzigUur, wijzigMin en wijzigSec
public void wijzigUur(int u) {uur = u ;}
public void wijzigMin(int m) {min = m ;}
public void wijzigSec(int s) {sec = s ;}
![Page 42: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/42.jpg)
4343Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Tijdstip vb - Implementatie (5)Tijdstip vb - Implementatie (5)
• De methode drukaf
public void drukaf() {String tijdstipAlsString ; // in het formaat uu:mm:sstijdstipAlsString = uur + “:” + min + “:” + sec ;System.out.println( tijdstipAlsString);
}
of nog korterpublic void drukaf() {
System.out.println(uur + “:” + min + “:” + sec );}
![Page 43: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/43.jpg)
4444Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Declaratie volgordeDeclaratie volgorde
• De volgorde van variabelen en methoden binnen een klasse is niet van belang.
• Java Conventie:– Constructors– Methoden– Instantie variabelen
![Page 44: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/44.jpg)
4545Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Return statementReturn statement
• Uitvoering van een methode stopt indien:1. return-statement wordt uitgevoerd2. Einde ( } ) van methode bereikt wordt bij
void-methode
• Void-methode kan ook return hebbenreturn;
public void drukafVerkeerd() { String st = uur + “:” + min + “:” + sec ; return ; System.out.println (st) ;
}
public void drukaf() { System.out.println(uur + “:”
+ min + “:” + sec );
return ;}
![Page 45: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/45.jpg)
4646Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Return waardeReturn waarde
• Methoden kunnen slechts één waarde terug geven– return uur, min, sec kan niet– Oplossing: zie later
![Page 46: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/46.jpg)
4747Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
public versus privatepublic versus private
• privateverhindert dat de methode of variabele buiten de klasse kan worden gebruikt
• publiclaat gebruik van de methode of variabele buiten de klasse toe
• In ‘t algemeen:– Methoden uit de interface zijn “public”– Hulp-methoden zijn “private”– Instantie variabelen zijn “private”
![Page 47: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/47.jpg)
4848Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Toegankelijkheid en zichtbaarheidToegankelijkheid en zichtbaarheid
• Lokale variabelen zijn niet toegankelijk buiten de methode
• Ze zijn ook niet zichtbaar buiten de methode
public void methode1() {String s = “test1” ;...
}public void methode2 () {
String s = “test2” ;…
}
Twee verschillende variabelenTwee verschillende variabelen
Draagwijdte (scope) van deze sDraagwijdte (scope) van deze s
Draagwijdte (scope) van deze sDraagwijdte (scope) van deze s
![Page 48: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/48.jpg)
4949Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
De levensduur van een objectDe levensduur van een object
• Het “leven” van een object begint bij de creatie van het object– door de new operator
• Een object blijft “leven” zolang er ten minste één referentie variabele naar verwijst.
• Java vernietigt automatische alle objecten waarnaar niet meer gerefereerd wordt
![Page 49: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/49.jpg)
5050Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
t
“herfst”“herfst”
String t ;
t = “herfst” ;
Voorbeeld Voorbeeld
String t ;
t = “herfst” ;
t = “winter” ;
t
“herfst”“herfst”
“winter”“winter”
String t ;t
Referentie naar “herfst” is weg! Java zal “herfst” objectvernietigen.
Referentie naar “herfst” is weg! Java zal “herfst” objectvernietigen.
![Page 50: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/50.jpg)
5151Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Levensduur van variabelen (1)Levensduur van variabelen (1)
• Instantie variabelen worden samen met het object gecreëerd – De levensduur is dus gelijk aan de
levensduur van het object
ObjectToestand
Kleur: “blauw”Merk: “Opel”Nummerplaat: “ARJ775”
GedragRijdenRemmenToeteren
Instantie variabelenInstantie variabelen
![Page 51: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/51.jpg)
5252Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Levenduur van variabelen (2)Levenduur van variabelen (2)
• Parameters en lokale variabelen van een methode worden gecreëerd wanneer de methode aangeroepen wordt
• Ze worden vernietigd als de uitvoering van de methode stopt
tijdActivatiemethode
Eindemethode
Levensduur van s1, s2 en hulp
Public void m(String s1, String s2) { String hulp; ...
![Page 52: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/52.jpg)
5353Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
• this ook te gebruiken om een onderscheid te maken tussen instantie variabele en lokale variabele met dezelfde naam class … { public void methode1 {
String s ;…s}
private String s }
thisthis• Een bericht wordt naar een object
gestuurd. • Om binnen een methode naar dit object te
refereren gebruiken we “this”this.doeIets
Lokale variabele sLokale variabele s
Instantie variabele sInstantie variabele s
Welke s? Welke s? - s voor lokale s- this.s voor instantie variabele s
- s voor lokale s- this.s voor instantie variabele s
![Page 53: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/53.jpg)
5454Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Voorbeeld 2 - klasse ontwerpVoorbeeld 2 - klasse ontwerp
• Ontwerp een klasse voor het behandelen van namen:
Name
![Page 54: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/54.jpg)
5555Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Klasse Name - Bepaal het gedragKlasse Name - Bepaal het gedrag
• We willen het volgende gedrag– Geef de initialen van de naam (als
string)– Voeg een titel (Mr, Mrs, …) toe of
vervang die– Geef de naam in familienaam-
voornaam formaat (als string)– Geef de naam in titel-voornaam-
familienaam formaat (als string)
![Page 55: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/55.jpg)
5656Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Name vb - Bepaal de interfaceName vb - Bepaal de interface
– Class name: Name
– Constructor: vb: Name ik = new Name(“Olga”, “De Troyer”);public Name(String first, String last)
– Geef initialen: vb: String inits = ik.getInitials();public String getInitials()
– Geef familienaam, voornaam: vb: String s = ik.getLastFirst();public String getLastFirst()
– Geef titel, voornaam, familienaam: vb: String s = ik.getFirstLast();public String getFirstLast()
– Voeg titel toe: vb: String s = ik.setTitle(“Prof. Dr.”);public void setTitle(String newTitle);
![Page 56: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/56.jpg)
5757Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Name vb - Een vb-programmaName vb - Een vb-programmaSchrijf een programma met 3 strings (voornaam, achternaam, titel); hiervan een naam maakt; deze 3 strings op een lijn schrijft gevolgd door de naam in familienaam-voornaam formaat; de initialen; de naam in voornaam- familienaam formaat; telkens op een nieuwe lijn
import java.io.*; class IllustrateName {
public static void main(String[] arg) throws IOException { Name n ;String first, last, title ;first = “Vera”last = “Janssens“;title = “Dr “;
![Page 57: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/57.jpg)
5858Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Name vb - Een vb-programma (2)Name vb - Een vb-programma (2)//maak de naamn = new Name(first, last);n.setTitle(title);
//schrijf de 3 strings op een lijnSystem.out.print(first);System.out.print(last);System.out.println(title);
//schrijf familienaam voornaamSystem.out.println(n.getLastFirst());
//schrijf initialen System.out.println(n.getInitials());
//schrijf voornaam familienaamSystem.out.println(n.getFirstLast());}
}
![Page 58: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/58.jpg)
5959Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Name vb - Klasse skeletName vb - Klasse skeletclass Name {
instantie variabelen indien nodigpublic Name( String first, String last ) {
statements}//geef initialenpublic String getInitials( ) {
statements}// geef voornaam, familienaaam public String getFirstLast( ) {
statements}// geef familienaam, voornaaam public String getLastFirst( ) {
statements}// voeg titel toe public void setTitle( String newTitle) {
statements}
}
![Page 59: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/59.jpg)
6060Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Name vb - ImplementatieName vb - Implementatie
• Hoe de naam bijhouden?– Instantie variabel(en)– 1 of 3 ?
private String firstName;private String lastName;private String title;
• Hoe waarde geven?– Via constructor
public Name( String first, String last) {firstName = first ;lastName = last ;title = ? ;
} title = ” ” ;title = ” ” ;
![Page 60: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/60.jpg)
6161Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Name vb - Implementatie (2)Name vb - Implementatie (2)public void setTitle( String newtitle) {
title = newtitle ;}
public String getLastFirst ( ) {return lastName.concat(“, “).concat(firstName);
} public String getFirstLast ( ) {
return title.concat(“ “). concat(firstName).concat(“ “).concat(lastName);
} public String getInitials ( ) {
String s ;s = firstName.substring(0,1) ;s = s.concat(“.”);s = s.concat( lastName.substring(0,1));s = s.concat(“.”);return s ;
}
![Page 61: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/61.jpg)
6262Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Name vb - voorbeeld programmaName vb - voorbeeld programmaMaak 2 Name-objecten met voornaam “Olga”, familienaam “De Troyer”, resp. “Dirk”, “De Troyer” en schrijf ze uit in het familienaam-voornaam formaat telkens op een nieuwe lijn.
import java.io.* ;class program4 {
public static void main(String arg [] ) throw IOException {Name n1 , n2 ;n1 = new Name(“Olga”, “De Troyer”);n2 = new Name(“Dirk”, “De Troyer”);System.out.println(n1.getLastFirst());System.out.println(n2.getLastFirst());}
}Twee Name-objecten elk met hun eigen
instantie variabelen (= hun toestand)
![Page 62: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/62.jpg)
6363Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Klasse methodenKlasse methoden
• Nieuwe instantie van een klasse maken – Geen object-ontvanger !
• Bericht kan niet naar een object gestuurd worden
• Bericht wordt naar de klasse gestuurd Klasse methode
![Page 63: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/63.jpg)
6464Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Klasse methoden (2)Klasse methoden (2)
• Worden gedefinieerd zoals andere methoden maar met het sleutelwoord static voor het return-type– Ook wel statische methoden genoemd
public static int klasseMethode () {
…}
![Page 64: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/64.jpg)
6565Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Programma’s en Klasse methoden ...Programma’s en Klasse methoden ...
import java.io.*;class Programma1 {
public static void main (String[] arg) { System.out.println(“Dit is mijn eerste Java programma”);System.out.println(“maar niet mijn laatste.”);
}}
• Een programma is een klasse • Zo een klasse heeft een main-methode• De main-methode is een klasse methode
– Er bestaan immers geen objecten bij aanvang van een programma
![Page 65: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/65.jpg)
6666Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Klasse variabelenKlasse variabelen
• Een klasse attribuut of klasse variabele is een attribuut gemeenschappelijk aan alle instanties van een klasse.
• Dus eigenlijk een attribuut van de klasse• Worden aangeduid door het sleutelwoord
static
![Page 66: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/66.jpg)
6767Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Klasse variabelen - voorbeeldKlasse variabelen - voorbeeld• Voorbeeld - Name klasse:
Veronderstel een maximale lengte voor de namen
class Name {public Name( String first, String last ) {
... }public String getInitials( ) {
... }public String getFirstLast( ) {
… }public String getLastFirst( ) {
... } public void setTitle( String newTitle) {
... }private String firstName;private String LastName;private String title;
static maxNameLength = 50 ;Klasse variabeleKlasse variabele
![Page 67: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/67.jpg)
6868Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Klasse variablen - voorbeeld (2) Klasse variablen - voorbeeld (2)
public boolean testLength( String s ) {if (s.length() <= maxNameLength return true;else return false ;
}
}
![Page 68: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/68.jpg)
6969Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Klasse methode- voorbeeldKlasse methode- voorbeeld• Name klasse met maximale lengte voor de
namen.• Klasse methode om deze lengte op te vragen
class Name { static maxNameLength = 50 ;
... public static int getMaxLength( ) {
return maxNameLength}
} Aanroep: i = Name.getMaxLength();
Klasse methodeKlasse methode
![Page 69: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/69.jpg)
7070Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
PackagesPackages
• Klassen kan men groeperen in packages– Voorbeeld: io-package
• Packages kunnen andere packages bevatten– Hierarchie van packages
java
awt beans io
![Page 70: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/70.jpg)
7171Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Package gebruikenPackage gebruiken
• Via import statementimport package-naam
import java.io.*;class Programma1 {
public static void main (String[] arg) { System.out.println(“Dit is mijn eerste Java programma”);System.out.println(“maar niet mijn laatste.”);
}}
Geeft aan dat men het package java.io wilt gebruiken
• java.io geeft package hierarchie aan• * betekent alle klassen uit het package
![Page 71: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/71.jpg)
7272Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Package makenPackage maken
package package-naam
package bank ;
public class Rekening {
…}
Klasse binnen package moet public zijn om ze buiten het package te kunnen gebruiken (via import)
package bank.interest ;public class Interest {
…}Package binnen package
![Page 72: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/72.jpg)
7373Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Het AWT packageHet AWT package
• AWT = Abstract Window Toolkit• Klassen om grafische interface te maken
door middel van visuele componenten• Button• TextArea, TextField• Frame• …
– Met methoden zoals• setFont, setSize, remove, setText, ...
![Page 73: Hoofdstuk 4: Klassen definiëren](https://reader036.vdocuments.net/reader036/viewer/2022070417/56815546550346895dc31771/html5/thumbnails/73.jpg)
7474Inleiding InformaticaInleiding Informatica Prof. Dr. O. De TroyerProf. Dr. O. De Troyer
Het AWT package (2)Het AWT package (2)
• Methoden voor het opvangen van user interactie
• Openen en sluiten van een window• Text invoeren• Button indrukken• …