De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Polymorphisme en Interfaces: inleiding. 5 concepten: Methodedeclaratie Methodedeclaratie Methodedefinitie Methodedefinitie Late binding Late binding Abstracte.

Verwante presentaties


Presentatie over: "Polymorphisme en Interfaces: inleiding. 5 concepten: Methodedeclaratie Methodedeclaratie Methodedefinitie Methodedefinitie Late binding Late binding Abstracte."— Transcript van de presentatie:

1 Polymorphisme en Interfaces: inleiding

2 5 concepten: Methodedeclaratie Methodedeclaratie Methodedefinitie Methodedefinitie Late binding Late binding Abstracte klassen Abstracte klassen Multiple inheritance Multiple inheritance

3 (1) Methodedeclaratie Hierbij wordt aangegeven welke methode er moet aanwezig zijn: Hierbij wordt aangegeven welke methode er moet aanwezig zijn: public void paint( Graphics g) public void paint( Graphics g)

4 (2) Methodedefinitie Hierbij wordt gezegd wat die methode in deze klasse doet wanneer ze opgeroepen wordt; het gedrag van de methode wordt vastgelegd: Hierbij wordt gezegd wat die methode in deze klasse doet wanneer ze opgeroepen wordt; het gedrag van de methode wordt vastgelegd: public void paint( Graphics g) public void paint( Graphics g) { g.drawOval(10, 10, 100, 100); } { g.drawOval(10, 10, 100, 100); }

5 (2) Methodedefinitie Methode overriden: dit betekent dat éénzelfde declaratie van een methode in verschillende (overgeërfde) klassen telkens een andere definitie krijgt. Methode overriden: dit betekent dat éénzelfde declaratie van een methode in verschillende (overgeërfde) klassen telkens een andere definitie krijgt. Verder zie volgend punt: late binding. Verder zie volgend punt: late binding.

6 (2) Methodedefinitie Een methode moet gedeclareerd én gedefiniëerd zijn in een klasse alvorens ze gebruikt kan worden, maar ze kan als declaratie (dus zonder definitie) overgeërfd worden - zie abstracte methoden. Een methode moet gedeclareerd én gedefiniëerd zijn in een klasse alvorens ze gebruikt kan worden, maar ze kan als declaratie (dus zonder definitie) overgeërfd worden - zie abstracte methoden.

7 (3) Late binding aka. dynamische binding aka. dynamische binding

8 (3) Late binding aka. dynamische binding aka. dynamische binding Zie voorbeeld Zie voorbeeld

9 (3) Late binding aka. dynamische binding aka. dynamische binding Zie voorbeeld Zie voorbeeld Late binding is het principe waardoor altijd de meest toepasselijke methodedefinitie gevonden en gebruikt wordt. Late binding is het principe waardoor altijd de meest toepasselijke methodedefinitie gevonden en gebruikt wordt.

10 (3) Late binding aka. dynamische binding aka. dynamische binding Zie voorbeeld Zie voorbeeld Late binding is het principe waardoor altijd de meest toepasselijke methodedefinitie gevonden en gebruikt wordt. Late binding is het principe waardoor altijd de meest toepasselijke methodedefinitie gevonden en gebruikt wordt. Vooral toepasselijk voor klassen die geupcast worden. Vooral toepasselijk voor klassen die geupcast worden.

11 (3) Late binding Java werkt altijd via late binding; at runtime wordt altijd de methodedefinitie gebruikt die eigen is aan het object, zelfs al gedraagt dat object zich op dat moment als een object van één van zijn superklasses (upgecast). Java werkt altijd via late binding; at runtime wordt altijd de methodedefinitie gebruikt die eigen is aan het object, zelfs al gedraagt dat object zich op dat moment als een object van één van zijn superklasses (upgecast).

12 (3) Late binding Java werkt altijd via late binding; at runtime wordt altijd de methodedefinitie gebruikt die eigen is aan het object, zelfs al gedraagt dat object zich op dat moment als een object van één van zijn superklasses (upgecast). Java werkt altijd via late binding; at runtime wordt altijd de methodedefinitie gebruikt die eigen is aan het object, zelfs al gedraagt dat object zich op dat moment als een object van één van zijn superklasses (upgecast). VB.net en C++ laten de optie toe om vroege binding te gebruiken. VB.net en C++ laten de optie toe om vroege binding te gebruiken.

13 (4) Abstracte klassen = klasse met 1 of meerdere abstracte methoden = klasse met 1 of meerdere abstracte methoden

14 (4) Abstracte klassen = klasse met 1 of meerdere abstracte methoden = klasse met 1 of meerdere abstracte methoden Abstracte methode: methode wordt enkel gedeclareerd, niet gedefinieerd. Abstracte methode: methode wordt enkel gedeclareerd, niet gedefinieerd.

15 (4) Abstracte klassen = klasse met 1 of meerdere abstracte methoden = klasse met 1 of meerdere abstracte methoden Abstracte methode: methode wordt enkel gedeclareerd: Abstracte methode: methode wordt enkel gedeclareerd: public abstract class Demo { public abstract void teken(Graphics g); public int bereken( ) {return x1 + x2;} }

16 (4) Abstracte klassen = klasse met 1 of meerdere abstracte methoden = klasse met 1 of meerdere abstracte methoden Abstracte methode: methode wordt enkel gedeclareerd: Abstracte methode: methode wordt enkel gedeclareerd: public abstract class Demo { public abstract void teken(Graphics g); public int bereken( ) {return x1 + x2;} } abstracte methode

17 (4) Abstracte klassen = klasse met 1 of meerdere abstracte methoden = klasse met 1 of meerdere abstracte methoden Abstracte methode: methode wordt enkel gedeclareerd: Abstracte methode: methode wordt enkel gedeclareerd: public abstract class Demo { public abstract void teken(Graphics g); public int bereken( ) {return x1 + x2;} } gewone methode

18 (4) Abstracte klassen Abstracte klasse: dient om overgeërfd te worden; ze kan niet geïnstantieerd worden (waarom niet?) Abstracte klasse: dient om overgeërfd te worden; ze kan niet geïnstantieerd worden (waarom niet?)

19 (4) Abstracte klassen Abstracte klasse: dient om overgeërfd te worden; ze kan niet geïnstantieerd worden (waarom niet?) Abstracte klasse: dient om overgeërfd te worden; ze kan niet geïnstantieerd worden (waarom niet?) Voordeel: abstract dwingt de programmeur van een subklasse om de abstracte method(s) te voorzien. Voordeel: abstract dwingt de programmeur van een subklasse om de abstracte method(s) te voorzien.

20 (4) Abstracte klassen Abstracte klasse: dient om overgeërfd te worden; ze kan niet geïnstantieerd worden (waarom niet?) Abstracte klasse: dient om overgeërfd te worden; ze kan niet geïnstantieerd worden (waarom niet?) Voordeel: abstract dwingt de programmeur van een subklasse om de abstracte method(s) te voorzien. Voordeel: abstract dwingt de programmeur van een subklasse om de abstracte method(s) te voorzien. Zie vb. Zie vb.

21 (5) Multiple inheritance? Kan in bvb C++. Kan in bvb C++. Probleemschets Probleemschets

22 Vorm + Vorm( Color) + teken (Graphics) - kleur: Color Punt + Punt( int, int) + teken (Graphics) # x: int # y: int Cirkel + Cirkel( int, int, int) # straal: int public class Cirkel extends Vorm, Punt {}

23 (5) Multiple inheritance? MI bestaat niet in Java. MI bestaat niet in Java.

24 (5) Multiple inheritance? MI bestaat niet in Java. MI bestaat niet in Java. Nadeel: wil dit zeggen dat elke klasse slechts 1 superklasse kan hebben, met alle gevolgen voor de mogelijkheden om te kunnen upcasten? Nadeel: wil dit zeggen dat elke klasse slechts 1 superklasse kan hebben, met alle gevolgen voor de mogelijkheden om te kunnen upcasten?

25 (5) Multiple inheritance? MI bestaat niet in Java. MI bestaat niet in Java. Nadeel: wil dit zeggen dat elke klasse slechts 1 superklasse kan hebben, met alle gevolgen voor de mogelijkheden om te kunnen upcasten? Nadeel: wil dit zeggen dat elke klasse slechts 1 superklasse kan hebben, met alle gevolgen voor de mogelijkheden om te kunnen upcasten? Neen: Java gebruikt hiervoor overerving van meerdere interfaces: klassen zonder implementatie (zie volgend uur =P). Neen: Java gebruikt hiervoor overerving van meerdere interfaces: klassen zonder implementatie (zie volgend uur =P).


Download ppt "Polymorphisme en Interfaces: inleiding. 5 concepten: Methodedeclaratie Methodedeclaratie Methodedefinitie Methodedefinitie Late binding Late binding Abstracte."

Verwante presentaties


Ads door Google