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