Hoofdstuk 4: Klassen definiëren

Slides:



Advertisements
Verwante presentaties
KWALITEITSZORG november 2012
Advertisements


Stilstaan bij parkeren Dat houdt ons in beweging
‘SMS’ Studeren met Succes deel 1
Paulus' eerste brief aan Korinthe (20) 23 januari 2013 Bodegraven.
NEDERLANDS WOORD BEELD IN & IN Klik met de muis

November 2013 Opinieonderzoek Vlaanderen – oktober 2013 Opiniepeiling Vlaanderen uitgevoerd op het iVOXpanel.
Uitgaven aan zorg per financieringsbron / /Hoofdstuk 2 Zorg in perspectief /pagina 1.
1 COVER: Selecteer het grijze vlak hiernaast met rechtsklik & kies ‘change picture’ voor een ander beeld of verwijder deze slide & kies in de menubalk.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Percelen.
 Deel 1: Introductie / presentatie  DVD  Presentatie enquête  Ervaringen gemeente  Pauze  Deel 2 Discussie in kleinere groepen  Discussies in lokalen.
STAPPENPLAN GRAMMATICUS.
Hoofdstuk 8: Recursie.
Ronde (Sport & Spel) Quiz Night !
Een Concert van het Nederlands Philharmonisch Orkest LES 4 1.
Van domeinklasse tot implementatie
Een optimale benutting van vierkante meters Breda, 6 juni 2007.
Kb.1 Ik leer op een goede manier optellen en aftrekken
Het ontwerpen van een klasse
Tevredenheids- enquête 2012 P. Grouwels Inleiding Mogelijke antwoorden: Zeer goed: 4 sterren ****: volledig tevreden; Goed: 3 sterren ***:
Het type int Tekenen met Java operatoren
Klassen en objecten.
9 januari 2013 Bodegraven 1. 1Korinthe 11 1 Wordt mijn navolgers, gelijk ook ik Christus navolg. 2.
Nooit meer onnodig groen? Luuk Misdom, IT&T
Hoofdstuk 5: Bestanden.
Inleiding Informatica
Hoofdstuk 6: Controle structuren
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
FOD VOLKSGEZONDHEID, VEILIGHEID VAN DE VOEDSELKETEN EN LEEFMILIEU 1 Kwaliteit en Patiëntveiligheid in de Belgische ziekenhuizen anno 2008 Rapportage over.
Elke 7 seconden een nieuw getal
Softwarepakket voor het catalogeren en determineren van fruitsoorten
1 introductie 3'46” …………… normaal hart hond 1'41” ……..
Oefeningen F-toetsen ANOVA.
‘Inleiding programmeren in Java’ Derde college Maandag 22 januari 2001 drs. F. de Vries.
Wat levert de tweede pensioenpijler op voor het personeelslid? 1 Enkele simulaties op basis van de weddeschaal B1-B3.
1 WIJZIGINGEN UNIEK VERSLAG. 2 Agenda Verbeteringen Veranderingen formulieren Praktische herinneringen Nieuwe formulieren Sociale en culturele participatie.
In dit vakje zie je hoeveel je moet betalen. Uit de volgende drie vakjes kan je dan kiezen. Er is er telkens maar eentje juist. Ken je het juiste antwoord,
13 maart 2014 Bodegraven 1. 1Korinthe Want gelijk het lichaam één is en vele leden heeft, en al de leden van het lichaam, hoe vele ook, een lichaam.
1. 33 GERECHTIGHEID GODS 21 Thans is echter buiten de wet om GERECHTIGHEID GODS openbaar geworden, waarvan de wet en de profeten getuigen, 34.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Seminarie 1: Pythagoreïsche drietallen
Ben Bruidegom 1 Sequentiële schakelingen Toestand uitgang bepaald door:  ingangen;  vorige toestand uitgang.
ribwis1 Toegepaste wiskunde – Differentieren Lesweek 7
Algoritmiek Object-georiënteerd Programmeren
6.1 Inleiding HOOFDSTUK 6 METHODEN
Hoofdstuk 3: Inleiding tot Java Applets
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Hoe gaat dit spel te werk?! Klik op het antwoord dat juist is. Klik op de pijl om door te gaan!
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 15: Herhaling Java-programmatie en geautomatiseerd testen.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
Fractale en Wavelet Beeldcompressie
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 3: Werken met numerieke gegevens.
De financiële functie: Integrale bedrijfsanalyse©
Waar gaat het nou toch om?!
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
12 sept 2013 Bodegraven 1. 2  vooraf lezen: 1Kor.7:12 t/m 24  indeling 1Korinthe 7  1 t/m 9: over het huwelijk  10 t/m 16: over echtscheiding  16.
13 november 2014 Bodegraven 1. 2 de vorige keer: 1Kor.15:29-34 indien er geen doden opgewekt worden...  vs 29: waarom dopen?  vs.30-32: waarom doodsgevaren.
1 Week /03/ is gestart in mineur De voorspellingen van alle groten der aarden dat de beurzen zouden stijgen is omgekeerd uitgedraaid.
Openbaar je talent Service public, talent particulier.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Hoofdstuk 6 – Objectgeoriënteerd Programmeren: Overerving
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
23 mei 2013 Bodegraven vanaf hoofdstuk 6: hoofdst.1: de wijsheid van de wereld hoofdst.2: de wijsheid van God hoofdst.3: Gods akker en Gods bouwwerk.
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Transcript van de presentatie:

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 Naam methode, beschrijving van de argumenten en beschrijving van de “return” waarde Argumenten worden ook wel parameters genoemd

Klasse definitie class klasse-naam { instantie variabelen constructor definities methode definities } delimiter Gebruik Lacher x ; Voorbeeld Class Lacher { ... } klasse-naam x

Methode definitie public return-waarde methode-naam ( parameter-definities) { body van de methode } Voorbeeld public void lachen ( ) { System.out.println( “haha”); } Return-waarde: geen Parameter-definities: geen Methode-naam Body van de methode

Methode aanroep Veronderstel een referentie variabele x die verwijst naar een object van de klasse Lacher ... Lacher x ; x.lachen() ; x Lacher object lachen() lachen()

Methode - uitvoering public void lachen ( ) { System.out.println( “haha”); } x Lacher object lachen() Instructies in de body van de methode worden één voor één uitgevoerd

Constructor definitie Zoals methode Geen return-type Naam is steeds naam van de klasse Herinner: constructor maakt bij aanroep een nieuwe instantie van de klasse

Constructor definitie - voorbeeld Definitie van een constructor Voorbeeld class Lacher { public Lacher ( ) { // deze constructor maakt alleen een nieuwe instantie // van de klasse Lachter, verder doet die niets } Gebruik Lacher x ; x Lacher object x = new Lacher();

Voorbeeld Lacher class Lacher { public Lacher ( ) { } public void lachen ( ) { System.out.println( “haha”); De constructor Een methode Gebruik Lacher x ; x = new Lacher(); x.lachen() ;

Voorbeeld Lacher - meerdere instanties class Lacher { public Lacher ( ) { } public void lachen ( ) { System.out.println( “haha”); y x Gebruik Lacher x , y; x = new Lacher(); y = new Lacher(); x.lachen() ; y.lachen() ; Lacher object

Methode met argumenten We willen het geluid van de lacher kunnen veranderen. Via een argument bij de methode lachen x.lachen ( “hihi”) x.lachen (“hoho”) Methode definitie: public void lachen (String geluid ) type Naam van de parameter Definitie van het argument, ook parameter genoemd

Methode definitie - met parameters Voorbeeld public void lachen (String geluid ) { System.out.println( geluid ) ; } Gebruik van de parameter, zoals een variabele

Parameters 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

Parameters - werking Werking bij activatie x.lachen(“hihi”) ; public void lachen (String geluid ) { System.out.println( geluid ) ; } Werking bij activatie x.lachen(“hihi”) ; geluid “hihi”

Parameters - werking (2) public void lachen (String geluid ) { System.out.println( geluid ) ; } Werking bij activatie x.lachen(“hihi”) ; x.lachen(“hoho”) ; geluid “hihi”

Parameters - werking Werking bij activatie x.lachen(“hihi”) ; public void lachen (String geluid ) { System.out.println( geluid ) ; } Werking bij activatie x.lachen(“hihi”) ; x.lachen(“hoho”) ; geluid “hoho”

Klasse 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. Gebruik Lacher x ; x = new Lacher ; x.lachen(); x.lachen(“hihi”) ;

Klasse 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

Voorbeeld instantie variabelen Voorbeeld: Lacher klasse die toelaat om het default lachgeluid bij het maken van een object vast te leggen. class Lacher { private String defaultGeluid ; public Lacher (String geluid ) { … } public void lachen () { public void lachen (String geluid) { } Instantie variabele Gebruik Lacher x ; x = new Lacher( “hihi”); x defaultGeluid

Gebruik van instantie variabelen 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) ; Instantie variabele Gebruik van de instantie variabele Gebruik Lacher x ; x = new Lacher(‘hihi”); x .lachen(); x .lachen(“haha”); x defaultGeluid “hihi”

Meerdere instanties en instantie variabelen 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 Lacher x, y ; x = new Lacher(‘hihi”); y = new Lacher(‘hoho”); x .lachen(); y .lachen(); y defaultGeluid “hoho” x defaultGeluid “hihi”

Conventie voor instantie variabelen De instantie variabelen worden meestal als laatste deel in de klasse definitie gegeven. class Lacher { public Lacher (String default ) { defaultGeluid = default ; } public void lachen () { System.out.println( defaultGeluid) ; public void lachen (String geluid) { System.out.println( geluid) ; private String defaultGeluid ;

Variabelen voor methoden 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. 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

Lokale variabelen - werking public void lachen () { String geluid; geluid = defaultKlank.concat(defaultKlank) ; System.out.println( geluid) ; } Werking bij activatie Lacher x; x = new Lacher(‘hi”); x.lachen() ; geluid “hihi” x defaultKlank “hi”

Meerdere 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 de methode lachten(String klank)

Een 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

Voorbeeld - definitie klasse Lacher.java bestand import java.io.*; //nodig omdat we een PrintStream object gebruiken class 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) { geluid = klank.concat(klank) ;

Voorbeeld - 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(); }

Klassen ontwerpen Methode 1. Bepaal het gewenste gedrag methoden 2. Bepaal de interface van de methoden Prototype van de methoden 3. Schrijf een voorbeeld programma die de klasse gebruikt Check 4. Maak het skelet van de klasse 5. Schrijf de code voor de methoden (implementeer)

Voorbeeld - klasse ontwerp Ontwerp klasse voor het behandelen van tijdstippen : class Tijdstip

Tijdstip 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

Tijdstip 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( )

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)

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( )

Tijdstip vb - Een vb-programma import 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(); }

Tijdstip vb - Klasse skelet class Tijdstip { instantie variabelen indien nodig public Tijdstip() { statements } // geef waarde public void zet(int u, int m, int s) { // geef uur; public int geefUur( ) {

Tijdstip vb - Klasse skelet (vervolg) // geef min; public int geefMin( ) { statements } // geef sec; public int geefSec( ) { // wijzig uur ; public void wijzigUur(int u) { // wijzig min ; public void wijzigMin(int m) {

Tijdstip vb - Klasse skelet (vervolg) // wijzig sec ; public void wijzigSec(int s) { statements } // druk af op het scherm public void drukaf ( ) {

Tijdstip 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() { }

Tijdstip vb - Implementatie (2) Begin bij eender welke methode Meestal de gemakkelijkste Bv. zet public void zet(int u, int m, int s) { uur = u ; min = m ; sec = s ; }

Tijdstip vb - Implementatie (3) De methodes geefUur, geefMin en geefSec public int geefUur() { return uur ; } Speciale instructie: “return waarde” ; public int geefMin() { return min ; } public int geefSec() { return sec ;

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 ;

Tijdstip vb - Implementatie (5) De methode drukaf public void drukaf() { String tijdstipAlsString ; // in het formaat uu:mm:ss tijdstipAlsString = uur + “:” + min + “:” + sec ; System.out.println( tijdstipAlsString); } of nog korter System.out.println(uur + “:” + min + “:” + sec );

Declaratie volgorde De volgorde van variabelen en methoden binnen een klasse is niet van belang. Java Conventie: Constructors Methoden Instantie variabelen

Return statement Uitvoering van een methode stopt indien: 1. return-statement wordt uitgevoerd 2. Einde ( } ) van methode bereikt wordt bij void-methode Void-methode kan ook return hebben return; public void drukaf() { System.out.println(uur + “:” + min + “:” + sec ); return ; } public void drukafVerkeerd() { String st = uur + “:” + min + “:” + sec ; return ; System.out.println (st) ; }

Return waarde Methoden kunnen slechts één waarde terug geven return uur, min, sec kan niet Oplossing: zie later

public versus private private verhindert dat de methode of variabele buiten de klasse kan worden gebruikt public laat 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”

Toegankelijkheid 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” ; … Draagwijdte (scope) van deze s Twee verschillende variabelen Draagwijdte (scope) van deze s

De 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

Voorbeeld String t ; String t ; t = “herfst” ; t = “winter” ; “herfst” Referentie naar “herfst” is weg! Java zal “herfst” object vernietigen. String t ; t String t ; t = “herfst” ; t = “winter” ; t “herfst” “winter” t “herfst” String t ; t = “herfst” ;

Levensduur van variabelen (1) Instantie variabelen worden samen met het object gecreëerd De levensduur is dus gelijk aan de levensduur van het object Instantie variabelen Object Toestand Kleur: “blauw” Merk: “Opel” Nummerplaat: “ARJ775” Gedrag Rijden Remmen Toeteren

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 Levensduur van s1, s2 en hulp Einde methode Activatie methode tijd Public void m(String s1, String s2) { String hulp; ...

this Een bericht wordt naar een object gestuurd. Om binnen een methode naar dit object te refereren gebruiken we “this” this.doeIets 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 Lokale variabele s - s voor lokale s - this.s voor instantie variabele s Welke s? Instantie variabele s

Voorbeeld 2 - klasse ontwerp Ontwerp een klasse voor het behandelen van namen: Name

Klasse 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)

Name 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);

Name vb - Een vb-programma Schrijf 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 “;

Name vb - Een vb-programma (2) //maak de naam n = new Name(first, last); n.setTitle(title); //schrijf de 3 strings op een lijn System.out.print(first); System.out.print(last); System.out.println(title); //schrijf familienaam voornaam System.out.println(n.getLastFirst()); //schrijf initialen System.out.println(n.getInitials()); //schrijf voornaam familienaam System.out.println(n.getFirstLast()); }

Name vb - Klasse skelet class Name { instantie variabelen indien nodig public Name( String first, String last ) { statements } //geef initialen public String getInitials( ) { // geef voornaam, familienaaam public String getFirstLast( ) { // geef familienaam, voornaaam public String getLastFirst( ) { // voeg titel toe public void setTitle( String newTitle) {

Name 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 = ” ” ;

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)); return s ;

Name vb - voorbeeld programma Maak 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)

Klasse 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

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 () { … }

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

Klasse 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

Klasse 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 variabele

Klasse variablen - voorbeeld (2) public boolean testLength( String s ) { if (s.length() <= maxNameLength return true; else return false ; }

Klasse 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 methode

Packages Klassen kan men groeperen in packages Voorbeeld: io-package Packages kunnen andere packages bevatten Hierarchie van packages java awt beans io

Package gebruiken Via import statement import 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

Package 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 binnen package package bank.interest ; public class Interest { …}

Het 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, ...

Het AWT package (2) Methoden voor het opvangen van user interactie Openen en sluiten van een window Text invoeren Button indrukken …