Polymorphisme en Interfaces: inleiding

Slides:



Advertisements
Verwante presentaties
Les 2 klassediagrammen II
Advertisements

Van domeinklasse tot implementatie
Het type int Tekenen met Java operatoren
Greenfoot Workshop Bobby - Snake.
Hoofdstuk 6: Controle structuren
Hoofdstuk 2 Hallo, C# !.
De koektrommel of de grabbelton
‘Inleiding programmeren in Java’ Derde college Maandag 22 januari 2001 drs. F. de Vries.
Java patterns Introductie tot GoF patterns in Java.
Inleidend probleem Data structuur (hiërarchie van classes)
Numerieke Natuurkunde
Overerving Hoofdstuk 11 Hoofdstuk 11.
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 8 Objecten en klassen.
CONTROLESTRUCTUREN (DEEL 2)
Oefeningen Hoofdstuk 3.
Algoritmiek Object-georiënteerd Programmeren
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Overerving Toepassingen. Overerving: toepassingen zoefening 1 : eenvoudige overerving.
6.1 Inleiding HOOFDSTUK 6 METHODEN
1 HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1. INTRODUCTIE  Vervolg discussie omtrent gestructureerd programmeren  Introductie van de overblijvende controlestructuren.
JAVA1 H 9. OBJECTGEORIENTEERD PROGRAMMEREN: OVERERVING 1. INLEIDING Wat is overerving (inheritance)? Overerving is een mechanisme waarbij software opnieuw.
P. 1 Vakgroep Informatietechnologie Structuur Deel II C++ Classes Namespaces Type casting Reference types Constructors en Destructors Memory Management.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 15: Herhaling Java-programmatie en geautomatiseerd testen.
Visual Basic 2005/2008 OOP in praktijk André Obelink - MCSD, MVP Web: Web: -
Overerving: It’s a kind of magic…. Principes van OO: 1) Overerving 2) Encapsulatie 3) Polymorphisme = (deel van het) OO. paradigma.
Interfaces Hoofdstuk 23 Hoofdstuk 23.
Overloading My name is overloading, cause we are many.
Polymorfisme: inleiding Hello me, meet the real me…
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Scope. Scope van variaben/methoden Een variabele is te gebruiken binnen de { en } waarbinnen hij is aangemaakt. Hetzelfde geld voor een methode { int.
Encapsulatie: Every man is an island upon himself.
Hoofdstuk 4 Nieuwe methoden. Tekenen g.drawRect(20,60,40,40); g.drawLine(20,60,40,40); g.drawLine(40,40,60,60); g.drawRect(70,60,40,40); g.drawLine(70,60,90,40);
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Java & het Web Programma: Contexts Listeners Scope/Attributes Thread safety.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
Herhaling: He who does not learn from history, is doomed to repeat it.
Eigen klassen maken A new way of thinking.. Wat? Zie voorbeeld. Zie voorbeeld.
OOP en.NET. Objecten Is geen ‘nieuw’ mysterieus woord Overal om ons heen zien we objecten: – TV – Computer – Auto – Wasmachine – ….
Na de praktijk, de theorie.. Zoals een gehaktmolen 1.Je stopt er iets in. 2.Je hoeft niet te weten wat er binnenin gebeurt. 3.Het resultaat verschijnt.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Objectgeoriënteerd Programmeren (2)
Objectgeoriënteerd Programmeren
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Overerving
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
Gameprogrammeren: Overerving in Painter
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Gameprogrammeren: Game Basics
Tinpro015b-les4 Klassen.
Gameprogrammeren: Abstracte klassen
Gameprogrammeren: Interfaces
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Software Development fundamentals
Software Development fundamentals
Transcript van de presentatie:

Polymorphisme en Interfaces: inleiding

5 concepten: Methodedeclaratie Methodedefinitie Late binding Abstracte klassen Multiple inheritance

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

(2) Methodedefinitie 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) { g.drawOval(10, 10, 100, 100); }

(2) Methodedefinitie 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.

(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.

(3) Late binding aka. dynamische binding

(3) Late binding aka. dynamische binding Zie voorbeeld

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

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

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

(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). VB.net en C++ laten de optie toe om vroege binding te gebruiken.

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

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

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

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

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

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

(4) Abstracte klassen 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.

(4) Abstracte klassen 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. Zie vb.

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

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

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

(5) Multiple inheritance? 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?

(5) Multiple inheritance? 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? Neen: Java gebruikt hiervoor overerving van meerdere interfaces: klassen zonder implementatie (zie volgend uur =P).