Hoofdstuk 4:
Klassen definiëren
Inleiding Informatica
Prof. Dr. O. De Troyer
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
Inleiding Informatica
Prof. Dr. O. De Troyer
2
Klasse definitie
class klasse-naam {
instantie variabelen
constructor definities
methode definities
}
Voorbeeld
Class Lacher {
...
}
Inleiding Informatica
delimiter
Gebruik
Lacher x ;
klasse-naam
x
Prof. Dr. O. De Troyer
3
Methode definitie
public return-waarde methode-naam ( parameter-definities)
{ body van de methode }
Voorbeeld
Return-waarde: geen
public void lachen ( ) {
System.out.println( “haha”);
System.out.println( “haha”);
}
Parameterdefinities: geen
Methode-naam
Body van de methode
Inleiding Informatica
Prof. Dr. O. De Troyer
4
Methode aanroep
• Veronderstel een referentie variabele
x die verwijst naar een object van de
klasse Lacher
...
Lacher x ;
...
x.lachen() ;
x
lachen()
lachen()
Inleiding Informatica
Prof. Dr. O. De Troyer
Lacher object
5
Methode - uitvoering
public void lachen ( ) {
System.out.println( “haha”);
System.out.println( “haha”);
}
lachen()
x
Lacher object
• Instructies in de body van de methode
worden één voor één uitgevoerd
Inleiding Informatica
Prof. Dr. O. De Troyer
6
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
Inleiding Informatica
Prof. Dr. O. De Troyer
7
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
x
Lacher x ;
x = new Lacher();
Inleiding Informatica
Lacher object
Prof. Dr. O. De Troyer
8
Voorbeeld Lacher
class Lacher {
public Lacher ( ) {
}
public void lachen ( ) {
System.out.println( “haha”);
System.out.println( “haha”);
}
}
Gebruik
De constructor
Een methode
Lacher x ;
x = new Lacher();
x.lachen() ;
Inleiding Informatica
Prof. Dr. O. De Troyer
9
Voorbeeld Lacher - meerdere instanties
class Lacher {
public Lacher ( ) {
}
public void lachen ( ) {
System.out.println( “haha”);
System.out.println( “haha”);
}
Gebruik
}
Lacher x , y;
x = new Lacher();
y = new Lacher();
x.lachen() ;
y.lachen() ;
Inleiding Informatica
Prof. Dr. O. De Troyer
x
Lacher object
y
Lacher object
10
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”)
type
– Methode definitie:
Naam van de parameter
public void lachen (String geluid )
Definitie van het argument,
ook parameter genoemd
Inleiding Informatica
Prof. Dr. O. De Troyer
11
Methode definitie - met parameters
Voorbeeld
public void lachen (String geluid ) {
System.out.println( geluid ) ;
System.out.println( geluid ) ;
}
Inleiding Informatica
Gebruik van de parameter,
zoals een variabele
Prof. Dr. O. De Troyer
12
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
Inleiding Informatica
Prof. Dr. O. De Troyer
13
Parameters - werking
public void lachen (String geluid ) {
System.out.println( geluid ) ;
System.out.println( geluid ) ;
}
Werking bij activatie
x.lachen(“hihi”) ;
Inleiding Informatica
Prof. Dr. O. De Troyer
geluid
“hihi”
14
Parameters - werking (2)
public void lachen (String geluid ) {
System.out.println( geluid ) ;
System.out.println( geluid ) ;
}
Werking bij activatie
x.lachen(“hihi”) ;
x.lachen(“hoho”) ;
Inleiding Informatica
Prof. Dr. O. De Troyer
geluid
“hihi”
15
Parameters - werking
public void lachen (String geluid ) {
System.out.println( geluid ) ;
System.out.println( geluid ) ;
}
Werking bij activatie
x.lachen(“hihi”) ;
x.lachen(“hoho”) ;
Inleiding Informatica
Prof. Dr. O. De Troyer
geluid
“hoho”
16
Klasse definitie met overloading
class Lacher {
public Lacher ( ) {
}
public void lachen () {
System.out.println( “haha”) ;
}
public void lachen (String geluid ) {
System.out.println( geluid ) ;
}
}
Inleiding Informatica
Prof. Dr. O. De Troyer
Methode naam is
“overladen”
Maar verschillende
signatuur.
Gebruik
Lacher x ;
x = new Lacher ;
x.lachen();
x.lachen(“hihi”) ;
17
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
Inleiding Informatica
Prof. Dr. O. De Troyer
18
Voorbeeld instantie variabelen
Voorbeeld: Lacher klasse die toelaat om het default lachgeluid bij
het maken van een object vast te leggen.
class Lacher {
Instantie variabele
private String defaultGeluid ;
public Lacher (String geluid ) {
…}
public void lachen () {
…}
public void lachen (String geluid) {
…}
}
Inleiding Informatica
Prof. Dr. O. De Troyer
Gebruik
Lacher x ;
x = new Lacher( “hihi”);
x
defaultGeluid
19
Gebruik van instantie variabelen
class Lacher {
Instantie variabele
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) ;
}
x
}
Gebruik van de
instantie variabele
Gebruik
Lacher x ;
x = new Lacher(‘hihi”);
x .lachen();
x .lachen(“haha”);
defaultGeluid
“hihi”
Inleiding Informatica
Prof. Dr. O. De Troyer
20
Meerdere instanties en instantie variabelen
class Lacher {
private String defaultGeluid ;
Gebruik
public Lacher (String default ) {
defaultGeluid = default ;
}
public void lachen () {
System.out.println( defaultGeluid) ;
}
public void lachen (String geluid) {
System.out.println( geluid) ;
}
}
x
defaultGeluid
“hihi”
Inleiding Informatica
Prof. Dr. O. De Troyer
Lacher x, y ;
x = new Lacher(‘hihi”);
y = new Lacher(‘hoho”);
x .lachen();
y .lachen();
y
defaultGeluid
“hoho”
21
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) ;
}
}
Inleiding Informatica
Prof. Dr. O. De Troyer
Variabele enkel voor de
methode lachen()
Is een lokale variabele
23
Lokale variabelen - werking
public void lachen () {
String geluid;
geluid = defaultKlank.concat(defaultKlank) ;
System.out.println( geluid) ;
geluid
}
Werking bij activatie
Lacher
x;
x = new Lacher(‘hi”);
x.lachen() ;
“hihi”
x
defaultKlank
“hi”
Inleiding Informatica
Prof. Dr. O. De Troyer
24
Meerdere methoden met variabelen
class Lacher {
Private String defaultKlank ;
public Lacher (String klank ) {
defaultKlank = klank ;
}
Variabele enkel voor
public void lachen () {
deze methode lachen()
String defaultGeluid;
defaultGeluid = defaultKlank.concat(defaultKlank) ;
System.out.println( defaultGeluid) ;
}
public void lachen (String klank) {
Variabele enkel voor de
String geluid;
methode lachten(String
geluid = klank.concat(klank) ;
klank)
System.out.println( geluid) ;
}
}
Inleiding Informatica
Prof. Dr. O. De Troyer
25
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
Inleiding Informatica
Prof. Dr. O. De Troyer
26
Voorbeeld - definitie klasse
• Lacher.java bestand
import java.io.*;
class Lacher {
//nodig omdat we een PrintStream object gebruiken
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) ;
}
}
Inleiding Informatica
Prof. Dr. O. De Troyer
27
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();
}
}
Inleiding Informatica
Prof. Dr. O. De Troyer
28
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)
Inleiding Informatica
Prof. Dr. O. De Troyer
29
Voorbeeld - klasse ontwerp
• Ontwerp klasse voor het behandelen
van tijdstippen :
class Tijdstip
Inleiding Informatica
Prof. Dr. O. De Troyer
30
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
Inleiding Informatica
Prof. Dr. O. De Troyer
31
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( )
Inleiding Informatica
Prof. Dr. O. De Troyer
32
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)
Inleiding Informatica
Prof. Dr. O. De Troyer
33
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( )
Inleiding Informatica
Prof. Dr. O. De Troyer
34
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();
}
}
Inleiding Informatica
Prof. Dr. O. De Troyer
35
Tijdstip vb - Klasse skelet
class Tijdstip {
instantie variabelen indien nodig
public Tijdstip() {
statements
}
// geef waarde
public void zet(int u, int m, int s) {
statements
}
// geef uur;
public int geefUur( ) {
statements
}
Inleiding Informatica
Prof. Dr. O. De Troyer
36
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
}
Inleiding Informatica
Prof. Dr. O. De Troyer
37
Tijdstip vb - Klasse skelet (vervolg)
// wijzig sec ;
public void wijzigSec(int s) {
statements
}
// druk af op het scherm
public void drukaf ( ) {
statements
}
}
Inleiding Informatica
Prof. Dr. O. De Troyer
38
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() {
}
Inleiding Informatica
Prof. Dr. O. De Troyer
39
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 ;
}
Inleiding Informatica
Prof. Dr. O. De Troyer
40
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 ;
}
Inleiding Informatica
Prof. Dr. O. De Troyer
41
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 ;
}
Inleiding Informatica
Prof. Dr. O. De Troyer
42
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
public void drukaf() {
System.out.println(uur + “:” + min + “:” + sec );
}
Inleiding Informatica
Prof. Dr. O. De Troyer
43
Declaratie volgorde
• De volgorde van variabelen en
methoden binnen een klasse is niet van
belang.
• Java Conventie:
– Constructors
– Methoden
– Instantie variabelen
Inleiding Informatica
Prof. Dr. O. De Troyer
44
Return statement
• Uitvoering van een methode stopt indien:
1. return-statement wordt uitgevoerd
2. Einde ( } ) van methode bereikt wordt bij voidmethode
• Void-methode kan ook return hebben
return;
public void drukaf() {
System.out.println(uur + “:”
+ min + “:”
+ sec );
return ;
}
Inleiding Informatica
Prof. Dr. O. De Troyer
public void drukafVerkeerd() {
String st = uur + “:” + min + “:” + sec ;
return ;
System.out.println (st) ;
}
45
Return waarde
• Methoden kunnen slechts één waarde terug
geven
– return uur, min, sec kan niet
– Oplossing: zie later
Inleiding Informatica
Prof. Dr. O. De Troyer
46
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”
Inleiding Informatica
Prof. Dr. O. De Troyer
47
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” ;
…
}
Inleiding Informatica
Prof. Dr. O. De Troyer
Draagwijdte (scope) van deze s
Twee verschillende variabelen
Draagwijdte (scope) van deze s
48
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
Inleiding Informatica
Prof. Dr. O. De Troyer
49
Voorbeeld
Referentie naar
“herfst” is weg!
Java zal “herfst” object
vernietigen.
String
t
t;
t = “herfst” ;
“herfst”
t = “winter” ;
“winter”
Inleiding Informatica
Prof. Dr. O. De Troyer
50
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
Inleiding Informatica
Prof. Dr. O. De Troyer
51
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
Activatie
methode
Einde
methode
tijd
Public void m(String s1, String s2) {
String hulp;
...
Inleiding Informatica
Prof. Dr. O. De Troyer
52
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 ;
Lokale variabele s
…
s
Welke s?
}
private String s
}
Inleiding Informatica
- s voor lokale s
- this.s voor instantie
variabele s
Instantie variabele s
Prof. Dr. O. De Troyer
53
Voorbeeld 2 - klasse ontwerp
• Ontwerp een klasse voor het
behandelen van namen:
Name
Inleiding Informatica
Prof. Dr. O. De Troyer
54
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-voornaamfamilienaam formaat (als string)
Inleiding Informatica
Prof. Dr. O. De Troyer
55
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);
Inleiding Informatica
Prof. Dr. O. De Troyer
56
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 “;
Inleiding Informatica
Prof. Dr. O. De Troyer
57
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());
}
Inleiding Informatica
Prof. Dr. O. De Troyer
58
Name vb - Klasse skelet
class Name {
instantie variabelen indien nodig
public Name( String first, String last ) {
statements
}
//geef initialen
public 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
}
}
Inleiding Informatica
Prof. Dr. O. De Troyer
59
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 = ” ” ;
}
Inleiding Informatica
Prof. Dr. O. De Troyer
60
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 ;
}
Inleiding Informatica
Prof. Dr. O. De Troyer
61
Name vb - voorbeeld programma
Maak 2 Name-objecten met voornaam “Olga”, familienaam “De
Troyer”, resp. “Dirk”, “De Troyer” en schrijf ze uit in het familienaamvoornaam 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)
Inleiding Informatica
Prof. Dr. O. De Troyer
62
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
Inleiding Informatica
Prof. Dr. O. De Troyer
63
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 () {
…
}
Inleiding Informatica
Prof. Dr. O. De Troyer
64
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
Inleiding Informatica
Prof. Dr. O. De Troyer
65
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
Inleiding Informatica
Prof. Dr. O. De Troyer
66
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 ;
Inleiding Informatica
Prof. Dr. O. De Troyer
Klasse variabele
67
Klasse variablen - voorbeeld (2)
public boolean testLength( String s ) {
if (s.length() <= maxNameLength return true;
else return false ;
}
}
Inleiding Informatica
Prof. Dr. O. De Troyer
68
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
}
Klasse methode
}
Aanroep:
i = Name.getMaxLength();
Inleiding Informatica
Prof. Dr. O. De Troyer
69
Packages
• Klassen kan men groeperen in packages
– Voorbeeld: io-package
• Packages kunnen andere packages
bevatten
– Hierarchie van packages
java
awt
Inleiding Informatica
beans
Prof. Dr. O. De Troyer
io
70
Package gebruiken
• Via import statement
import package-naam
Geeft aan dat men het
package java.io wilt
gebruiken
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.”);
}
}
• java.io geeft package hierarchie aan
• * betekent alle klassen uit het package
Inleiding Informatica
Prof. Dr. O. De Troyer
71
Package maken
package package-naam
package bank ;
public class Rekening {
…}
package bank.interest ;
public class Interest {
…}
Inleiding Informatica
Prof. Dr. O. De Troyer
Klasse binnen package
moet public zijn om ze
buiten het package te
kunnen gebruiken (via
import)
Package binnen
package
72
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, ...
Inleiding Informatica
Prof. Dr. O. De Troyer
73
Het AWT package (2)
• Methoden voor het opvangen van user
interactie
•
•
•
•
Openen en sluiten van een window
Text invoeren
Button indrukken
…
Inleiding Informatica
Prof. Dr. O. De Troyer
74