Hoofdstuk 4: Klassen defini - PowerPoint PPT Presentation

1 / 73
About This Presentation
Title:

Hoofdstuk 4: Klassen defini

Description:

Hoofdstuk 4: Klassen defini ren – PowerPoint PPT presentation

Number of Views:113
Avg rating:3.0/5.0
Slides: 74
Provided by: OlgaD150
Category:

less

Transcript and Presenter's Notes

Title: Hoofdstuk 4: Klassen defini


1
Hoofdstuk 4 Klassen definiëren
2
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

3
Klasse definitie
  • class klasse-naam
  • instantie variabelen constructor definities
  • methode definities

Gebruik Lacher x
Voorbeeld Class Lacher ...
4
Methode definitie
  • public return-waarde methode-naam (
    parameter-definities)
  • body van de methode

Voorbeeld public void lachen ( )
System.out.println( haha)
System.out.println( haha)
5
Methode aanroep
  • Veronderstel een referentie variabele x die
    verwijst naar een object van de klasse Lacher

... Lacher x ... x.lachen()
6
Methode - uitvoering
public void lachen ( ) System.out.println(
haha) System.out.println( haha)
  • Instructies in de body van de methode worden één
    voor één uitgevoerd

7
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

8
Constructor definitie - voorbeeld
  • Voorbeeld
  • class Lacher
  • public Lacher ( )
  • // deze constructor maakt alleen een nieuwe
    instantie
  • // van de klasse Lachter, verder doet die niets

Gebruik Lacher x
x new Lacher()
9
Voorbeeld Lacher
  • class Lacher
  • public Lacher ( )
  • public void lachen ( )
  • System.out.println( haha)
  • System.out.println( haha)

Gebruik Lacher x x new Lacher() x.lachen()

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

12
Methode definitie - met parameters
Voorbeeld public void lachen (String geluid )
System.out.println( geluid )
System.out.println( geluid )
13
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

14
Parameters - werking
  • public void lachen (String geluid )
  • System.out.println( geluid )
  • System.out.println( geluid )
  • Werking bij activatie
  • x.lachen(hihi)

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

16
Parameters - werking
  • public void lachen (String geluid )
  • System.out.println( geluid )
  • System.out.println( geluid )
  • Werking bij activatie
  • x.lachen(hihi)
  • x.lachen(hoho)

17
Klasse definitie met overloading
  • class Lacher
  • public Lacher ( )
  • public void lachen ()
  • System.out.println( haha)
  • public void lachen (String geluid )
  • System.out.println( geluid )

Gebruik Lacher x x new Lacher
x.lachen() x.lachen(hihi)
18
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

19
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)
Gebruik Lacher x
x new Lacher( hihi)
20
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)
Gebruik Lacher x
x new Lacher(hihi)
x .lachen()
x .lachen(haha)
21
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()
22
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
23
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)

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

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

26
Een klasse gebruiken
  • Stap 1 maak bestand klasse-naam.java met klasse
    definitie
  • Stap 2Compileer dit bestand -gt resultaat
    bestand klasse-naam.class
  • Stap 3klasse kan nu gebruikt worden

27
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)
  • String geluid
  • geluid klank.concat(klank)
  • System.out.println( geluid)

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

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

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

31
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

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

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

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

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

36
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

37
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

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

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

40
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

41
Tijdstip vb - Implementatie (3)
  • De methodes geefUur, geefMin en geefSec
  • public int geefUur()
  • return uur

public int geefMin() return min
public int geefSec() return sec

42
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

43
Tijdstip vb - Implementatie (5)
  • De methode drukaf
  • public void drukaf()
  • String tijdstipAlsString // in het
    formaat uummss
  • tijdstipAlsString uur min sec
  • System.out.println( tijdstipAlsString)
  • of nog korter
  • public void drukaf()
  • System.out.println(uur min sec
    )

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

45
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)
46
Return waarde
  • Methoden kunnen slechts één waarde terug geven
  • return uur, min, sec kan niet
  • Oplossing zie later

47
public 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

48
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

49
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

50
Voorbeeld
51
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
52
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

Public void m(String s1, String s2) String
hulp ...
53
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

- s voor lokale s - this.s voor instantie
variabele s
54
Voorbeeld 2 - klasse ontwerp
  • Ontwerp een klasse voor het behandelen van namen
  • Name

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

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

57
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

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

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

60
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 ?

61
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

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

63
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

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

65
Programmas 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

66
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

67
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

68
Klasse variablen - voorbeeld (2)
  • public boolean testLength( String s )
  • if (s.length() lt maxNameLength return true
  • else return false

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

70
Packages
  • Klassen kan men groeperen in packages
  • Voorbeeld io-package
  • Packages kunnen andere packages bevatten
  • Hierarchie van packages

71
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.)
  • java.io geeft package hierarchie aan
  • betekent alle klassen uit het package

72
Package maken
  • package package-naam
  • package bank
  • public class Rekening

package bank.interest public class Interest

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

74
Het AWT package (2)
  • Methoden voor het opvangen van user interactie
  • Openen en sluiten van een window
  • Text invoeren
  • Button indrukken
Write a Comment
User Comments (0)
About PowerShow.com