Overerving Toepassingen. Overerving: toepassingen zoefening 1 : eenvoudige overerving.

Slides:



Advertisements
Verwante presentaties
Informatieanalyse klassediagram I.
Advertisements

Les 2 klassediagrammen II
Programmeren in Java met BlueJ
Opleidings-CV online DEMO
Door Ramòn Janssen, Tim Helwegen en Niels Killaars. Home Interaction System RJTHNK.
Van domeinklasse tot implementatie
Hoofdstuk 2 Objectgeoriënteerde basisbegrippen. Nog meer over klassen en het begrip overerving  nieuwe map -> Mensen  op eerste bladzijde: “ Alle mensen.
Polymorfie.
Het ontwerpen van een klasse
Klassen en objecten.
Hoofdstuk 6: Controle structuren
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
Ontwerpen van Informatiesystemen met
‘Inleiding programmeren in Java’ Derde college Maandag 22 januari 2001 drs. F. de Vries.
Verdieping Programmeren in Java - deel 1 college 6 mei 2001.
Overerving Hoofdstuk 11 Hoofdstuk 11.
Hoofdstuk 10 Overerving.
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Java en BlueJ Een goed idee?.
Algoritmiek Object-georiënteerd Programmeren
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Hoofdstuk 2 Objectgeoriënteerde basisbegrippen
Overerving.
Polymorfie Toepassingen. Polymorfie: toepassingen zoefening 1 : polymorfie toepassen.
Hoofdstuk 2 Objectgeoriënteerde basisbegrippen. Accessors en polymorfie zGoede gewoonte voor objectgeoriënteerde programma -> voor alle eigenschappen:
JAVA1 H 10. OBJECTGEORIENTEERD PROGRAMMEREN: POLYMORFISME 1. INLEIDING Polymorfisme "programmeren in het algemene" alle objecten in dezelfde klassehiërarchie.
JAVA1 H 9. OBJECTGEORIENTEERD PROGRAMMEREN: OVERERVING 1. INLEIDING Wat is overerving (inheritance)? Overerving is een mechanisme waarbij software opnieuw.
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.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
OO Analyse in de praktijk OO Analyse in de praktijk IV OO basisregels.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
OO Analyse in de praktijk
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: -
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Overerving Inheritance Overerving l Inleiding l Type-extensie l Compatibiliteit van een basistype met zijn extensie l Statisch en dynamisch type l Run.
Overerving: It’s a kind of magic…. Principes van OO: 1) Overerving 2) Encapsulatie 3) Polymorphisme = (deel van het) OO. paradigma.
Objectgeoriënteerd Ontwerp
Interfaces Hoofdstuk 23 Hoofdstuk 23.
Introductie tot GoF patterns in Java
Polymorfisme: inleiding Hello me, meet the real me…
Datacommunicatie en netwerken
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.
PEMSY1http:// 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler.
Encapsulatie: Every man is an island upon himself.
Polymorphisme en Interfaces: inleiding
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.
 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.
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 – ….
GEGEVENSSTRUCTUREN IN.NET. Inleiding  Enumerated type  Structure  Collecties  Typed collections  Untyped collections.
Objectgeoriënteerd Programmeren (2)
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Overerving
Gameprogrammeren: Methoden
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Programmastructuur
Gameprogrammeren: Afsluiting
Gameprogrammeren: Abstracte klassen
Gameprogrammeren: Interfaces
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Java Masterclass Sar Maroof.
Software Development fundamentals
Unified Modeling Language
Transcript van de presentatie:

Overerving Toepassingen

Overerving: toepassingen zoefening 1 : eenvoudige overerving

Overerving: toepassingen zoefening 1 : eenvoudige overerving

Overerving: toepassingen zoefening 1 : eenvoudige overerving yqueryMood( ) -> drukt stemming van het object af ygetMood( ) = beveiligde methode yqueryMood( ) -> intern gebruik van getMood( ) Subklassen kunnen stemming specialiseren door vervangen van getMood( ) ysubklasse die afgedrukte melding wil wijzigen -> queryMood( ) vervangen

Overerving: toepassingen zoefening 1 : eenvoudige overerving yopgave: maak twee subklassen : SadObject:->stemming = sad -> + cry( ) : void : drukt naar de opdrachtregel enkel ‘boo hoo’ af HappyObject: ->stemming = happy -> + laugh( ) : void : drukt naar de opdrachtregel enkel ‘ha ha ha’ af

Overerving: toepassingen zoefening 1 : eenvoudige overerving ydeze klasse moeten voldoen aan volgende main

Overerving: toepassingen zoefening 1 : eenvoudige overerving ydeze klasse moeten voldoen aan volgende main

Overerving: toepassingen zoefening 1 : eenvoudige overerving yoplossing:

Overerving: toepassingen zoefening 1 : eenvoudige overerving yoplossing:

Overerving: toepassingen zoefening 1 : eenvoudige overerving yoplossing:

Overerving: toepassingen zoefening 1 : eenvoudige overerving yoplossing: Resultaat Moodydriver How does the moody object feel today? I feel moody today! How does the sad object feel today? I feel sad today! ha ha ha ! How does the happy object feel today? I feel happy today! boo hoo !

Overerving: toepassingen zoefening 1 : eenvoudige overerving yoplossing: Resultaat Moodydriver uitvoer: aanroep van queryMood( ) ‘I feel sad today!’ -> SadObject ‘I feel happy today!’ -> HappyObject ymaar geen herdefinitie van queryMood( ) queryMood( ) -> roept intern getMood( ) aan => wel herdefinitie van getMood( )

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving ysoms basisklasse schrijven met de bedoeling dat andere klassen ervan zullen erven: vb bij ontdekken van identieke code bij gerelateerde klassen ysoms niet zinvol objecten te maken van de basisklasse; basisklasse bevat algemene code enkel interessant voor de subklassen yenkel zinvol objecten te maken van subklassen ybijvoorbeeld -> klasse Employee

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving yEmployee: ‘algemene’ werknemer heeft geen regels voor het berekenen van zijn salaris => geen implementatie van earnings ( ) ysubklassen zoals CommissionWorkers, HourlyWorker en SalariedWorker wel yoplossing geen earnings ( ) in Employee maar earnings ( ) is wel gemeenschappelijk voor alle subklassen => hoort thuis in superklasse => anders geen algemene behandeling voor werknemers

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving  maak van earnings ( ) een abstracte methode => Employee wordt een abstracte klasse abstracte methode = een wel gedeclareerde, maar niet-geïmplementeerde methode Alleen abstracte klassen kunnen abstracte methoden hebben => abstracte klassen kunnen niet geïnstantieerd worden

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving maak van earnings ( ) een abstracte methode => Employee wordt een abstracte klasse abstracte methode = een wel gedeclareerde, maar niet-geïmplementeerde methode Alleen abstracte klassen kunnen abstracte methoden hebben => abstracte klassen kunnen niet geïnstantieerd worden naam abstracte klasse en abstracte methoden worden cursief weergegeven in het UML-diagram

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving  subklassen moeten de abstracte methoden implementeren => anders weer geen objecten mogelijk van de klassen

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving yabstracte methoden dwingen uw subklassen zich verder te specialiseren door een implementatie voor de abstracte methoden te bieden y=>U plant vooraf wat er door de subklasse moet worden geherdefinieerd door de basisklasse abstract te maken en door abstracte methoden te maken.

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving yopgave: Beschouw klasse MoodyObject : -> alle subklassen herdefiniëren getMood( ) -> wijzig deze hiërarchie: maak getMood( ) abstract -> pas ook MoodyDriver aan -> SadObject en HappyObject -> niet wijzigen

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving yoplossing:

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving yoplossing:

Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving yoplossing:

Overerving: toepassingen  oefening 3 : een bankrekening ybekijk deze oefening zelf ygrotere overervingshiërarchie ysyntheseoefeningen kunnen een analoog klassediagram hebben