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

Relevanta dokument
Agenda. Objektorienterad programmering Föreläsning 13

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

Objektorienterad programmering

Objektorienterad programmering Föreläsning 5

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

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

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

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

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

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

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

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

Klasshierarkier - repetition

Föreläsning 13 Innehåll

Introduktion till arv

OOP Objekt-orienterad programmering

Objektorienterad programmering

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

Objektorienterad programmering

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

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

JAVAUTVECKLING LEKTION 11

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

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

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

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

Arv. Objektorienterad och komponentbaserad programmering

Polymorfi. Objektorienterad och komponentbaserad programmering

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

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

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

Dynamisk bindning och polymorfism

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

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

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

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Agenda (obs! halvdag)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Kursplanering Objektorienterad programmering

Objektorienterad programmering

TDDC76 - Programmering och Datastrukturer

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

OOP Objekt-orienterad programmering

Kopiering av objekt i Java

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

Statistik över heltal

Imperativ programmering. Föreläsning 4

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

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

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

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

Arv och polymorfism i Java

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Objektorienterad Programmering (TDDC77)

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Föreläsning 4. Polymorfism. Polymorfism Dynamisk bindning Inkapsling Information hiding Access-metoder och mutator-metoder

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

Modeller, Objekt och Klasser

Objektorienterad programmering Föreläsning 20

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

TDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?

Instuderingsuppgifter läsvecka 2

Objektorienterad programmering. Grundläggande begrepp

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Laboration 1 - Grunderna för OOP i Java

Konstruktion av klasser med klasser

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design Alex Gerdes, 2016

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Java, klasser, objekt (Skansholm: Kapitel 2)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

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

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

Objektorienterad programmering i Java

Objektorienterad programmering i Java I

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

Föreläsning 2. Polyfmorfism Dynamisk bindning Interface och abstrakta klasser Överlagring Överskuggning Accessorer och mutatorer

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

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

Objektorienterad Programmering (TDDC77)

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Inledande programmering med C# (1DV402) Tärningarna ska kastas

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

Laboration 1: Figurer i hierarki

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

Objektorienterad programmering Föreläsning 4

Classes och Interfaces, Objects och References, Initialization

Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (casting) Implicita Typomvandlingar

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

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

Arv Murach s: kap 14

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

Objektorienterad programmering

DAT043 - Föreläsning 7

Innehåll. Pekare Exempel

Transkript:

Objektorienterad programmering Föreläsning 12 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Introduktion till Arv Superklasser och Subklasser Dolda medlemmar (new och base) Statisk bindning Polymorfism (Dynamisk bindning och virtuella metoder) Konstruktorer vid arv Copyright 2015 -Mahmud Al Hakim www.webacademy.se 2 1

Arv Med hjälp av arv kan man skapa nya klasser genom att utgå från redan existerade klasser och utöka dem med ytterligare medlemmar. I C# åstadkommer man arv genom att skapa subklasser till klasser man redan har. OBS! Man kan inte skapa subklasser till structer. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 3 Superklass Exempel Klassen Hus är en klass som beskriver hus i största allmänhet. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 4 2

Klassen Hus fort. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 5 Klassen Hus - Testprogram Copyright 2015 -Mahmud Al Hakim www.webacademy.se 6 3

Subklass - Bostadshus När man deklarerar en subklass skriver man ett kolon och efter detta anger man superklassens namn Copyright 2015 -Mahmud Al Hakim www.webacademy.se 7 Bostadshus - Testprogram Ett objekt av klassen Bostadshus får nu fem instansvariabler Copyright 2015 -Mahmud Al Hakim www.webacademy.se 8 4

Subklass - Flerfamiljshus Copyright 2015 -Mahmud Al Hakim www.webacademy.se 9 Flerfamiljshus - Testprogram Copyright 2015 -Mahmud Al Hakim www.webacademy.se 10 5

Dolda medlemmar Vad händer om man deklarerar en medlem i en subklass och det finns en motsvarande medlem med samma namn i superklassen? senasterenovering finns ju i superklassen Hus men döljs i subklassen Flerfamiljshus Med ordet new döljer man variabeln som finns i superklassen Copyright 2015 -Mahmud Al Hakim www.webacademy.se 11 Vad händer om man inte skriver ordet new? Man får en varning från kompilatorn! Använd nyckelordet new om du vill dölja medlemmar som redan finns i superklassen Copyright 2015 -Mahmud Al Hakim www.webacademy.se 12 6

Hur kommer man åt dolda medlemmar (inuti klassen)? Med nyckelordet base kommer vi åt medlemmar i superklassen Ny metod i klassen Flerfamiljshus Här anropas den nya metoden BeräknaYta() som finns i Flerfamiljshus Copyright 2015 -Mahmud Al Hakim www.webacademy.se 13 base Exempel 2 Ny metod i klassen Flerfamiljshus Med ordet base kommer vi åt medlemmar i superklassen Copyright 2015 -Mahmud Al Hakim www.webacademy.se 14 7

Statisk bindning Hur kommer man åt dolda medlemmar (utanför klassen)? Referensvariabelns typ avgör vilken medlem ska anropas. htemp refererar nu till samma objekt men den är av typen Hus senasterenovering hämtas här från klassen Hus Detta kallas statisk bindning eftersom det redan vid kompileringen kan bestämmas exakt vilken medlem som menas. SenasteRenovering hämtas här från klassen Flerfamiljshus Copyright 2015 -Mahmud Al Hakim www.webacademy.se 15 Polymorfism Om man deklarerar en medlem i en subklass och det finns en motsvarande medlem med samma namn och parametrar i superklassen. Och man önskar vid metodanrop att objektets typ (inte referensens) skall styra vilken metod som skall anropas. Då måste man använda sig av s.k. virtuella metoder. Detta kallas polymorfism (månformighet). Objekt som tillhör polymorfa klasser kan ha operationer med samma namn som logiskt sett utför samma operation på de olika objekten, men operationerna kan ändå utföra olika ting beroende på vilket slags objekt det är fråga om. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 16 8

Virtuella metoder - Exempel Metoden BeräknaYta() i klassen Hus är nu virtuell Vi byter ut new mot override i metoden BeräknaYta() i klassen Flerfamiljshus Man brukar säga att man åsidosätter (överskuggar) metoden Copyright 2015 -Mahmud Al Hakim www.webacademy.se 17 Virtuella metoder Exempel fort. Vilken metod anropas? Vad händer om man ändrar override till new i subklassen Flerfamiljshus? Copyright 2015 -Mahmud Al Hakim www.webacademy.se 18 9

Metoden ToString() är virtuell Läs gärna på MSDN ToString() som finns i klassen Object är en virtuell metod. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 19 Dynamisk bindning En metod som har markerats med override i en subklass och som har samma namn och parametrar som en metod som markerats som virtual (eller override) i en superklass blir en alternativ version av metoden i superklassen. Objektets typ (klassen) styr vilken metod som skall anropas. Typen på referensen saknar betydelse. Sökning efter första metod som passar sker nerifrån och uppåt i klasshierarkin. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 20 10

Konstruktorer vid arv (Klassen Hus) Copyright 2015 -Mahmud Al Hakim www.webacademy.se 21 Konstruktorer vid arv (Klassen Bostadshus) Copyright 2015 -Mahmud Al Hakim www.webacademy.se 22 11

Konstruktorer vid arv (Klassen Bostadshus del 2) En konstruktorinitierare läggs efter parameterlistan. : base anropar superklassens konstruktor. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 23 12