Presentation laddar. Vänta.

Presentation laddar. Vänta.

Polymorfism. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Polymorfa variabler class Person {} class Teacher.

Liknande presentationer


En presentation över ämnet: "Polymorfism. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Polymorfa variabler class Person {} class Teacher."— Presentationens avskrift:

1 Polymorfism

2 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Polymorfa variabler class Person {} class Teacher : Person {} class Student : Person {} … Person a = new Person(); Person b = new Student(); Person c = new Teacher(); … Teacher x = new Person(); Student y = new Person(); … Tillåtet, eftersom alla Studenter och Lärare är Personer. Inte tillåtet, eftersom inte alla Personer är Studenter och Lärare.

3 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 33 Bil Stanna () Fordon Stanna () FordonsStannare StannaFordon () Polymorfism och dynamisk bindning

4 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 44 Metodpolymorfism Det finns två slags ”metodpolymorfism”: Parameterpolymorfism (överbelastning) Även om operationen har samma namn, blir det en annan metod om vi har en annan argumentlista, dvs en annan signatur. Funktionspolymorfism (överskuggning) Om en operation i en subklass har samma signatur som en operation i dess basklass, kan subklassens metod överskugga superklassens metod.

5 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 55 Parameterpolymorfism class Person { string namn; int age; void ändra(int aa) { age = aa; } void ändra(string nn) { namn = nn; } void ändra(string nn, int aa) { namn = nn; age = aa; }

6 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 66 Överskuggning (funktionspolymorfism) Cykel märke modell beräknaLivslängdKvar() Växelcykel antalVäxlar beräknadrevlivslängd() beräknaLivslängdKvar() Ibland omdefinieras operationer Samma operation (med samma namn) finns då hos både subklassen och superklassen, men med olika metoder (annan kod som skall utföras) Kallas i programmeringen för ” överskuggning” förändrad metod

7 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 77 Polymorfism Samma meddelande kan sändas till flera olika mottagare Olika mottagare exekverar varsin sekvens av instruktioner Att det finns flera beteenden, för det som betraktas som samma tjänst, kallas polymorfism :Brev porto() :Vykort porto() :Paket porto()

8 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 88 Funktionspolymorfism class Person { public virtual void write() { // Kod } } class Teacher : Person { public override void write() { // Annan kod } } class Student : Person { public override void write() { // Annan kod } }

9 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 99 Dynamisk bindning I ett objektorienterat program kan till namnet samma operation implementeras olika i olika specialiseringar En referens till en variabel ur en klass kan i själva verket referera till en specialisering Det fastställs inte vilken av de till namnet lika operationerna som skall anropas förrän programmet körs Detta innebär att det är lätt att förändra/utöka ett system Det är lätt att återanvända kod

10 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 10 Funktionspolymorfism class Person { public void write() { // Kod } } class Student : Person { public new void write() { // Annan kod } } Men om vi inte har gjort superklassens metod ”virtual” då? Med ”new” talar vi om att vi vill dölja den ärvda metoden men…... Person p = new Student(); Student s = new Student(); p.write(); s.write()... Kör write från Person -klassen. Kör write från Student - klassen.


Ladda ner ppt "Polymorfism. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Polymorfa variabler class Person {} class Teacher."

Liknande presentationer


Google-annonser