Polymorfism.

Slides:



Advertisements
Liknande presentationer
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Advertisements

Relationsoperatorer Java/C# C/C++ Visual Basic FORTRAN PASCAL ORACLE
Svenska Akademins Ordbok (SAOB)
9. Gör ritningen innan Du bygger huset
10. Elementen i strukturerad programmering
Klasser och objekt.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Datatyper C# C/C++ Java VB Fortran Pascal bool boolean Boolean
Klassarv och inkapsling
Repetition av objektorientering
OOP Objekt-orienterad programmering
Några standardalgoritmer
Filhantering Grundprincipen för filhantering Öppna filen
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Metoder i java Det finns två typer av metoder i java
Föreläsning 4 Python: mera om funktioner och parametrar
Arv.
Abstract & sealed.
Inkapsling.
Objektorienterad tänkande
Polymorfism.
Programmeringsteknik för K och Media
Att programmera i språket Java
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Föreläsning 5. Problemet Vi har sett att vi kan ersätta de metoder vi ärver från överklassen med egen funktionalitet (polymorfism) class Bil : public.
Sid 41 Fordon int antalhjul; int vikt;
int res2=Math.max(tal1,tal2);
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
4. Arv och dynamisk bindning
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Räckvidd och synlighet. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Synlighet (meddelandesändning) Det.
Arv.
Programmeringsteknik för Media1 & K1
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Objektorientering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Föreläsning 4 Klasser Och Objekt.
Objektorienterad programmering i Java
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Länkade listor Binära träd
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
1 Föreläsning 8 Mer om klasser och objektorientering.
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning Klass Cirkel, Punkt Klassen Object Arv, överskuggning
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Föreläsning 9: Arv och UML
Presentationens avskrift:

Polymorfism

Polymorfa variabler class Person {} Tillåtet, eftersom alla Studenter och Lärare är Personer. class Teacher : Person {} class Student : Person {} … Person a = new Person(); Person b = new Student(); Person c = new Teacher(); Inte tillåtet, eftersom inte alla Personer är Studenter och Lärare. … Teacher x = new Person(); Student y = new Person();

Polymorfism och dynamisk bindning Fordon FordonsStannare Stanna () StannaFordon () Bil Stanna ()

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.

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) {

Överskuggning (funktionspolymorfism) 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” Cykel märke modell beräknaLivslängdKvar() Växelcykel antalVäxlar beräknadrevlivslängd() beräknaLivslängdKvar() förändrad metod

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 :Vykort porto() :Paket porto() :Brev porto()

Funktionspolymorfism class Teacher : Person { public override void write() { // Annan kod } } class Person { public virtual void write() { // Kod } } class Student : Person { public override void write() { // Annan kod } }

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

Funktionspolymorfism class Person { public void write() { // 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() class Student : Person { public new void write() { // Annan kod } } Kör write från Person-klassen. Kör write från Student-klassen.