Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdAndrea Brouwer Laatst gewijzigd meer dan 10 jaar geleden
1
Overerving Toepassingen
2
Overerving: toepassingen zoefening 1 : eenvoudige overerving
3
Overerving: toepassingen zoefening 1 : eenvoudige overerving
4
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
5
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
6
Overerving: toepassingen zoefening 1 : eenvoudige overerving ydeze klasse moeten voldoen aan volgende main
7
Overerving: toepassingen zoefening 1 : eenvoudige overerving ydeze klasse moeten voldoen aan volgende main
8
Overerving: toepassingen zoefening 1 : eenvoudige overerving yoplossing:
9
Overerving: toepassingen zoefening 1 : eenvoudige overerving yoplossing:
10
Overerving: toepassingen zoefening 1 : eenvoudige overerving yoplossing:
11
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 !
12
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( )
13
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
14
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving
15
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving
16
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
17
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
18
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
19
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving subklassen moeten de abstracte methoden implementeren => anders weer geen objecten mogelijk van de klassen
20
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving
21
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving
22
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving
23
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving
24
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving
25
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving
26
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving
27
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.
28
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
29
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving yoplossing:
30
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving yoplossing:
31
Overerving: toepassingen zoefening 2 : abstracte klassen gebruiken voor geplande overerving yoplossing:
32
Overerving: toepassingen oefening 3 : een bankrekening ybekijk deze oefening zelf ygrotere overervingshiërarchie ysyntheseoefeningen kunnen een analoog klassediagram hebben
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.