Inleiding Informatica

advertisement
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
Download