You are on page 1of 25

• Klassen en objecten

• Zelf klassen maken


• Analyse en ontwerp
• Collecties
• Operatoren
• Keuzes
• Herhalingen
• Statische variabelen – methoden – main functie
• algoritmen
• Polymorfie en overerving
• Gebruikersinterface
• Polymorfisme met interfaces
• Exception afhandeling
• Afbeeldingen en animaties
• Streams
API

• Application programming interface


• Verzameling definities
• Vormen scheiding tussen lagen van abstractie
• Voordeel : applicaties kunnen werken op hoog niveau
van abstractie
• Verbergt voor gebruiker onbelangrijke details
• Vb tekenprogramma moet niets afweten hoe printer
aangestuurd wordt, roept daarvoor een stuk software
in printer – api op.
• Is niet gelijk aan bibliotheek : api’s geven toegang
tot bibliotheek.
API

• Vanuit BlueJ

• Rechtstreeks via website : http://java.sun.com


/j2se/1.5.0/docs/api/
• Lokaal downloaden :
http://java.sun.com/j2se/1.5.0/docs/index.htm
l

•Api (lokaal)
• packages
Statische variabelen

• Member variabelen
– Elke object heeft eigen member variabele met
eigen waarde.
– Soms heeft elk object een kenmerk die voor elk
object gelijk is.
– Soms nuttig attributen en methoden associeren
met verzameling van objecten van zelfde type dus
met de klasse
– Vb bijhouden hoeveel leerlingen (moet dit bij elk
leerling object worden bijgehouden?)
– Vb aantal leerlingen. (zal dezelfde zijn bij leerling
1 als bij leerling 2
• Statische attributen en methoden
Member variabelen

public class leerling


{
private String naam,
voornaam,
klas;

private int aantalCursisten;

public leerling(String naam, String voornaam, String klas)


{
this.naam = naam;
this.voornaam = voornaam;
this.klas = klas;

//bij iedere nieuwe cursist verhogen wij de waarde


this.aantalCursisten++;
}

public int getAantalCursisten()


{
return aantalCursisten;
}
}

aantalCursisten = membervariabele
Statische variabelen

• Bij aanmaak nieuw object – verhogen waarde aantal cursisten


this.aantalCursisten++;
• Dus 2 objecten van klasse cursisten : normaal aantalCursisten = 2

Werkelijk resultaat

logisch : aanmaak object -> verhoging van eigen


lidvariabele aantalCuristen = afhankelijk van object van
klasse
Statische variabelen

• Oplossing : statische variabele


• Bestaan : onafhankelijk van objecten
• Aanmaak bij eerste maal klasse in geheugen wordt
geladen.

• Waarde is dezelfde voor alle objecten van de klasse


• Syntax :
static int aantalCursisten;
Statische variabelen

public class leerling


{
private String naam,
voornaam,
klas;

static int aantalCursisten;

public leerling(String naam, String voornaam, String klas)


{
// initialise instance variables
this.naam = naam;
this.voornaam = voornaam;
this.klas = klas;

aantalCursisten++;
}

public int getAantalCursisten()


{
return aantalCursisten;
}
}
Statische variabelen

Statische variabele aantalCursisten is voor elk object hetzelfde.,


Men heeft geen object nodig om deze variabele aan te spreken.
(zie volgende dia)
Statische variabelen

• Statische variabelen bestaan onafhankelijk van objecten van


een klasse
• Zijn dus bruikbaar vanaf het begin van het programma.
• Men hoeft niet eerst een object aan te maken.
• Men spreekt ze aan via de klasse.
public class lijst
{
leerling nieuw;
public lijst()
{
String voornaam = "pieter";
Klasse lijst die String naam = "Desmet";
gebruik zal
maken van klasse String klas = "4ER";
leerling nieuw = new leerling(voornaam, naam, klas);
}
public int getAantalCursisten()
{ return leerling.aantalCursisten;
}
}

aantalCursisten = static : kan aangeroepen worden via de klasse i.p.v object


Statische variabelen

aantalCursisten komt niet voor in


data van leerling
Oefenbundel : 7-1
Statische methoden

• Zijn eigendom van de klasse


• Er hoeft geen object aangemaakt te worden om deze
methoden aan te roepen.
• Zijn bedoeld ter ondersteuning van de klasse.
• Vb getAantalCursisten : zal niet echt nodig zijn om
vanuit een object deze informatie te kennen.
public static int getAantalCursisten()
{
return aantalCursisten;
Aanroep zonder leerling object }

public class lijst


{
private int aantalCursisten; //data
public lijst() //constructor
{
this.aantalCursisten = leerling.getAantalCursisten();
}
}
Statische methoden

• Nooit afgevraagd waarom je geen object moet


aanmaken van de klasse System om de methode
out te gebruiken in bijvoorbeeld
System.out.println()???

• Nooit afgevraagd waarom je geen object van de


klasse Math hebt aangemaakt om de methode
sqrt te gebruiken???
Statische methoden

• Wanneer instantie methoden of statische


methoden?

• Regel:
– Methoden die object bewerken of object
beïnvloeden zijn gedeclareerd als instantie
methoden
– Methoden die algemene utility’s leveren, maar
geen directe invloed hebben op een instantie
van die klassen kunnen beter als
klassemethoden of statische methoden
gedefinieerd worden.
Gedaanten van Java

• Java programma’s kunnen diverse vormen


aannemen:
– Applets (programmeren 1)
– Servlets (programmeren 3)
– Beans (programmeren 2)
– Zelfstandige programma’s,… (programmeren 1)
• Tot nu gebruik van BlueJ om :
– Klassen aan te maken
– Objecten aan te maken
– Berichten te versturen
– Goed om te beginnen, in praktijk onhaalbaar
Zelfstandige programma’s

• Java toepassing bestaat uit:


– 1 klasse
– Meerdere klassen
– Tot nu (max 2 klassen denk aan Team,
Programmeur)
• Java toepassing kan uitgevoerd worden in:
– Console window
– GUI (grafische user interfaces : met vensters en
controls)
• Java toepassing laten werken:
– Aangeven welke klasse als vertrekpunt heeft
– In deze klasse een specifieke methode opgeven nl:

public static void main(String args[]){


…..
}
Zelfstandige programma’s

public static void main(String args[]){


…..
}

public : moet van buitenaf kunnen benaderd worden

static : is klassemethode. Wordt als eerste methode


aangeroepen in programma, dus er mag geen object voor
nodig zijn.

void: methode geeft geen resultaat terug

main: naam van de methode waar VM naar zoekt bij


opstarten van toepassing

(String args[]: wordt gebruikt bij opdrachtregels zie later


Zelfstandige programma’s

• main wordt gebruikt om:


– Programma te laten starten
– Het beginobject aan te maken
• Eenmaal beginobject aangemaakt, nemen
andere methoden van alle andere klasse
alles over.
main functie

• Open de broncode van de klasse forfait


• Typ volgende code als laatste methode binnen je klasse

public static void main(String args[])


{
forfait berekening1 = new forfait(500000);
berekening1.berekenForfait();
berekening1.print();
}
main functie

public static void main(String args[])


{
forfait berekening1 = new forfait(500000);
berekening1.berekenForfait();
berekening1.print();
}

Aanmaken nieuw object van onze klasse forfait nl berekening1

Aanroepen van de juiste methodes om het resultaat te bekomen


main functie

public static void main(String args[])


{
forfait berekening1 = new forfait(500000);
berekening1.berekenForfait();
berekening1.print();
}
Voorbeeld

Bekijk voorbeeld in map programmacode:

Rechthoek.java

•rechthoek
Oefenbundel : 7-2