Polymorfie Toepassingen
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen hourlyWorker en CommissionWorker->voor vervanging geschikte relaties van Employee
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
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:
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
Polymorfie: toepassingen oefening 1 : polymorfie toepassen
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
Polymorfie: toepassingen
zoefening 1 : polymorfie toepassen
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen yzelf nu toepassen: beschouw MoodyObject en subklassen SadObject en HappyObject
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen
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
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen yPsychiatristDriver =hoofdprogramma
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen yPsychiatristDriver =hoofdprogramma
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen yoplossing:
Polymorfie: toepassingen zoefening 1 : polymorfie toepassen yoplossing: