Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdHelena Boender Laatst gewijzigd meer dan 10 jaar geleden
1
Polymorfie Toepassingen
2
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
3
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
4
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
5
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
6
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
7
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
8
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
9
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen hourlyWorker en CommissionWorker->voor vervanging geschikte relaties van Employee
10
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
11
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
12
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
13
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen ypayEmployees(emps : array[ ] van Employee): ipv Employee -> ook subklassen, zoals HourlyWorkers en CommissionWorkers wegens Voor vervanging geschikte relaties; subklassen worden op een algemene manier behandeld als gewone instanties van Employee ytotal_pay = total_pay + emp.earnings( ) xpolymorfie laat lijken alsof Employee veel verschillende gedragingen heeft xemp.earnings( ) toegepast op HourlyWorker => earnings( ) van HourlyWorker xemp.earnings( ) toegepast op CommissionWorker => earnings( ) van CommissionWorker payEmployees( ) is een voorbeeld van inkapselende polymorfie. Deze methode werkt voor elke willekeurige werknemer. De methode heeft geen speciale code nodig en u hoeft deze niet telkens bij te werken als u een nieuwe subklasse aan het systeem toevoegt - de methode werkt gewoon voor alle Employees. Methoden zoals recordEmployeeInfo(emp : CommissionWorker) en recordEmployeeInfo( emp : HourlyWorker) demonstreren overloading. Overloading maakt het een methode mogelijk polymorfisch te lijken. Overloading staat bijvoorbeeld het volgende toe:
14
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen ypayEmployees( ): voorbeeld van inkapselende polymorfie geen speciale code nodig voor nieuwe subklasse : methode werkt gewoon voor alle Employees yrecordEmployeeInfo(emp : CommissionWorker) en recordEmployeeInfo( emp : HourlyWorker) demonstreren overloading xdoor overloading lijkt de methode polymorfisch want deze kan beide soorten werknemers verwerken xhet volgende is dus mogelijk
15
Polymorfie: toepassingen oefening 1 : polymorfie toepassen
16
Polymorfie: toepassingen oefening 1 : polymorfie toepassen xOverloading is wat beperkter dan inkapselende polymorfie: inkapselende polymorfie: één methode (payEmployees( )) nodig voor het berekenen van het loon van een willekeurige Employee, ongeacht het aantal subklassen overloading : telkens een nieuwe methode (recordEmployeeInfo( ) ) toevoegen voor een nieuwe subklasse -> gaat voor kleine hiërarchie, maar voor grotere -> aanpassing: een algemene recordEmployeeInfo( ) schrijven=>inkapselende polymorfie gebruiken
17
Polymorfie: toepassingen
19
zoefening 1 : polymorfie toepassen
20
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen yzelf nu toepassen: beschouw MoodyObject en subklassen SadObject en HappyObject
21
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
22
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen ySchrijf klasse PsychiatristObject: -> examine( ): neemt een instantie van MoodyObject aan en vertelt hoe die instantie zich voelt -> observe( ): roept cry( ) of laugh( ) aan van het object-argument de PsychiatristObject geeft een medische opmerking voor elk gedrag
23
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen yPsychiatristDriver =hoofdprogramma
24
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen yPsychiatristDriver =hoofdprogramma
25
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen yoplossing:
26
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen yoplossing:
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.