Föreläsning 16 Arv. Jan Lönnberg 3.11.2011. T-106.1212 Grundkurs i programmering



Relevanta dokument
"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Föreläsning 18 Filer och avbildningar

Föreläsning 13 Testning och strängar

Föreläsning 5 Mer om funktioner, villkor

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

DAT043 - Föreläsning 7

Objektorienterad programmering. Grundläggande begrepp

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Programmering grundkurs

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Kopiering av objekt i Java

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Hos vad? och bör därför vara instanseller klassvariabel i vilken klass?

Laboration 1: Figurer i hierarki

Laboration 1 - Grunderna för OOP i Java

Objektorienterad Programmering (TDDC77)

Java, klasser, objekt (Skansholm: Kapitel 2)

OOP Objekt-orienterad programmering

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Objektorienterad programmering

Kort om klasser och objekt En introduktion till GUI-programmering i Java

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Lite modifierad Laboration 1 Körkortsprov för Smalltalk och VisualWorks

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Föreläsning 9: Arv och UML

Imperativ programmering. Föreläsning 4

Övning 3. Datateknik A, Java I, 5 poäng

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Objektorienterad programmering i Racket

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

OOP Objekt-orienterad programmering

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

TUTORIAL: KLASSER & OBJEKT

Arv. Objektorienterad och komponentbaserad programmering

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

Objektorienterad konstruktion

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

725G61 - Laboration 6 Objektorientering, modellering och arv. Johan Falkenjack

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Objektorienterad programmering i Racket

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

E13 "Behind the Wild"

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objektorienterad programmering Föreläsning 5

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

Programmering för språkteknologer II, HT2014. Rum

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Agenda. Objektorienterad programmering Föreläsning 13

Lösningar till tentamen i EDAF25

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Klasser och objekt. Henrik Johansson. August 20, 2008

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

kl Tentaupplägg

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Innehåll. Konstruktorer vid arv Regler för basklassens konstruktor. Konstruktorer vid arv. Konstruktorer vid arv. Konstruktorer vid arv

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Prova på-laboration i Ruby

E13 Behind the Wild. Dagens agenda. Cookies Context/ändra context Augmentation (förstärkning) Klassiskt arv Att låna metoder Namespaces Postludium

729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

Lektion 5. Datateknik A, Java I, 5 poäng

LÖSNINGSFÖRSLAG TENTAMEN

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

Tentamen ID1004 Objektorienterad programmering December 15, 2012

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Användarhandledning Version 1.2

Föreläsning 13 Innehåll

TENTAMEN OOP

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Objektorienterad programmering i Java I

Introduktion till Java

Transkript:

Föreläsning 16 Arv Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 3.11.2011

Varför? I ett studieregister har vi både studenter och lärare. Både studenter och lärare har namn och dylikt. Vi måste ändå ha samma get_name- och set_name-metoder... eller? Det här gör koden svårare att läsa och ändra på. Hur blir vi av med duplikaten? Föreläsning 16 Arv 2/15

Vad? Arv (eng. inheritance) är ett annat sätt att definiera begrepp som är delar av andra begrepp. I arv säger vi att en klass (subklassen) innehåller alla metoder och instansvariabler från en annan klass (superklassen). Objekt som är instanser av en klass är också instanser av dess superklasser. Föreläsning 16 Arv 3/15

Arvshierarki Djur Leddjur Ryggradsdjur Spindel Insekt Kräldjur Däggdjur Fågel Nyckelpiga Katt Människa Arvsrelationen bildar en hierarki. Föreläsning 16 Arv 4/15

object Många klassers definition börjar med (object). Inom parentesen anges den omedelbara superklassen; den som klassen tar sina metoder och variabler från. object är alla klassers superklass. Alla klasser ärver objects metoder och variabler (direkt eller indirekt). Alla objekt är instanser av object. Föreläsning 16 Arv 5/15

Experiment Undersök med type() och isinstance()-funktionerna vad olika inbyggda objekt och biblioteksobjekt är instanser av! type tar ett argument och returnerar dess typ. isinstance tar två argument och returnerar om det första är en instans av det andra. Använd Pydevs Hierarchy View för att undersöka klasshierarkin (tryck F4 över en klass) på t.ex. klasserna i Tkinter och tidigare exempel. Föreläsning 16 Arv 6/15

Exempel Låt oss skapa en klass Person som Student och Staff ärver från. Student-objekt är instanser av både Student och typ Person. Likaledes för Staff. Vi kan alltså använda Student och Staff som Person. Föreläsning 16 Arv 7/15

register Skapa en superklass Person med det som är gemensamt för Student och Staff. Ta bort allt onödigt från Student och Staff. Undersök med Hierarchy View vad ni skapat! Föreläsning 16 Arv 8/15

Överlagring En klass kan ersätta en ärvd metod med en annan. Detta kallas överlagring. Metoder söks alltså i en klass från objektets typ uppåt längs superklasserna till object. T.ex. str ()- och init ()-metoderna överlagras ofta. Subklassen kan initiera superklassens instansvariabler själv, men det bryter mot vår inkapslingsprincip. klass. init (self, argument ) lättaste sättet. Föreläsning 16 Arv 9/15

Överlagring Alternativt kan en överlagrad metod kommas åt genom super()-funktionen. Första argumentet är klassen att hoppa över i sökningen av metoden (typiskt klassen super() används i). Andra argumentet är (typiskt) ett objekt, vanligen self. Returvärdet är ett objekt från vilket metodanrop går till det givna objektet, men den angivna klassen hoppas över. Föreläsning 16 Arv 10/15

register Använd överlagring av init () för att initiera namnet på personer på bara ett ställe. Använd båda sätten att anropa superklassens initieringsmetod. Föreläsning 16 Arv 11/15

Multipelt arv En klass i Python kan ärva från flera klasser på en gång. Istället för en superklass kan man skriva en lista. Om vi har en häst- och en fågelklass, kan vi ha en pegas som ärver bådas förmågor. I initieringsmetoden måste vi anropa båda superklassernas initeringsmetoder (om de har) för att få instansvariabler initierade. Föreläsning 16 Arv 12/15

Multipelt arv Metoder som inte finns i en klass söks i superklasser i den ordningen som de anges i klassdefinitionens början (från vänster till höger). Sökningen sker rekursivt i den här ordningen. M.a.o. alla den vänstra superklassens superklasser kommer att kollas före den högra superklassen kollas. Föreläsning 16 Arv 13/15

horses Undersök Pegasus-klassen. Fyll i initieringsmetodens innehåll. För att bli av med de kvittrande pegaserna, döper vi om Horse.whinny() och Bird.chirp() till sound(). Se till att pegasen ärver rätt läte! Alternativt, överlagra sound() med ett unikt läte. Föreläsning 16 Arv 14/15

Slut Nästa föreläsning 10.11.2011 14:15 16:00 i Maari-C Tabeller Kom ihåg Rond 7 deadline 8.11. Rond 8 deadline 15.11. Föreläsning 16 Arv 15/15