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

Relevanta dokument
Föreläsning 15: Repetition DVGA02

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

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

OOP Objekt-orienterad programmering

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

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

Objektorienterad Programmering (TDDC77)

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

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

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

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

Föreläsning 13 Innehåll

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

Objektorienterad Programmering (TDDC77)

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

OOP Objekt-orienterad programmering

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

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

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

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

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

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

Imperativ programmering. Föreläsning 4

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

Klasshierarkier - repetition

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

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

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

Objektorienterad Programmering (TDDC77)

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

DAT043 - Föreläsning 7

Föreläsning 9: Arv och UML

Agenda. Objektorienterad programmering Föreläsning 13

Arv. Objektorienterad och komponentbaserad programmering

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Objektorienterad programmering

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

Arv och polymorfism i Java

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

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

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

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

Classes och Interfaces, Objects och References, Initialization

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

TENTAMEN OOP

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

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

Konstruktion av klasser med klasser

Arv Murach s: kap 14

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

Laboration 1 - Grunderna för OOP i Java

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

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

Instuderingsuppgifter läsvecka 2

Objektorienterad programmering i Java I

PROGRAMMERINGSTEKNIK TIN212

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

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

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

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

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

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

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

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

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

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

Ärvning av implementation. Ärvning av implementation, inklusive abstrakta klasser Hur ska vi ärva? När ska vi ärva?

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Introduktion till arv

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

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Laboration 1: Figurer i hierarki

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

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

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

Exempel på spelprogrammering i java.

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Objektorienterad programmering. Grundläggande begrepp

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Monday, November 16, Senaste Labben

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

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

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Föreläsning 12. Länkade listor

Enum, mer om Arv, Abstrakta klasser, Polymorfism, Recursion! Förelasning 14!! TDA540 Objektorienterad Programmering!

Tentamen i Objektorienterad modellering och diskreta strukturer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Transkript:

Föreläsning 3 Arv

Kategorisering Stora program leder till många klasser (tänk liknelsen med en affär med många varor). Att dela in saker i kategorier är en vanlig strategi för att hantera stora komplexa problem. Exempel: - Varor i affär (mejerivaror, frukt/grönt, frysta varor, mjöl, etc.) - Djurriket (däggdjur, fåglar, kräldjur, etc.) - Katalogsystemet på datorn I objektorienterad programmering använder man arv för att kategorisera klasser. 2

Arvshierarki Animal Reptile Mammal Bird Iguana Monkey Penguin Figur 3.1 (s. 101) Swan - UML-notation, träddiagram - arv är en relation mellan två klasser där subklassen ärver alla egenskaper och förmågor av superklassen (och dess superklasser) - arv sparar arbete (jmf. s. 102) - arv är en är -relation (fågel är ett djur) - superclass (parent class, base class, överklass) - subclass (child class, derived class, underklass) - subklassen utvidgar (extends) och specialiserar superklassen - varje klass i Java har exakt en superklass (utom Object); Crow en klass kan ha godtyckligt många subklasser (single inheritance) 3

Java-syntax (arv) Exempel: public class Crow extends Bird {... Bird Crow Jämför med Lab 1: public class FirstApp extends Frame {... Utan extends ingen superklass? Alla Java-klasser utom en har exakt en superklass (se Figur 3.2). Exempel: public class Snowman {... Default: extends Object Object Snowman Frame FirstApp 4

UML-diagram Tre fält (namn, egenskaper, förmågor) + (public), - (private), # (protected) Varje klass har sin konstruktor Namn och metoder i kursiv stil markerar att de är abstrakta Metoder (se figur 3.3, s. 105): - Animal: move, gohome - Bird: move, gohome (ärvda från Animal), move (upprepad), fly - Penguin: move, gohome (ärvda från Animal), move, fly (ärvda från Bird), move, fly (upprepade) - Swan: move, gohome (ärvda från Animal), move, fly (ärvda från Bird), fly (upprepad) - Crow: move, gohome (ärvda från Animal), move, fly (ärvda från Bird) 5

Metoder ärvs Metoder som finns i superklassen kan användas på vanligt sätt. Klassen Crow har exempelvis inga egna metoder men den kan använda sina superklassers metoder: Home home = new Home(); Crow crow = new Crow(home); Location location = new Location(); crow.fly(location); //arv från Bird crow.gohome(); //arv från Animal 6

Metoder kan omdefinieras Metoder som finns i superklasserna kan omdefinieras (override) i subklassen. Klassen Penguin exempelvis ärver metoderna move och fly från klassen Bird men omdefinierar dessa. public class Penguin extends Bird {... public void move(location location) { this.swim(location); public void fly(location location) { public void swim(location location) {... 7

Metoder kan delvis omdefinieras Metoder som finns i superklasserna kan delvis omdefinieras i subklassen. Klassen Swan exempelvis ärver metoden fly från klassen Bird men omdefinierar den delvis. public class Swan extends Bird {... public void fly(location location) { _legs.run(location); super.fly(location); 8

Metodbestämning Metodbestämning (method resolution) är en teknik för att bestämma vilken metod ett namn refererar till. Exempelvis finns metoden fly i flera klasser. Om vi har en Penguin-instans penguin och en Crow-instans crow vilka fly-metoder används då i följande exempel: penguin.fly(location); crow.fly(location); Vad händer i följande exempel: crow.gohome(); 9

Abstrakta metoder Abstrakta metoder används då man vill att alla subklasser till en given klass ska definiera samma metod och då det inte finns någon standardimplementation. Exempel: public abstract class Animal {... public abstract void move(location location);... Home home = new Home(); Animal animal = new Animal(home); En klass kan göras abstrakt även då den inte innehåller abstrakta metoder. 10

Egenskaper En subklass ärver inte bara superklassens metoder utan även dess egenskaper (inklusive de privata). Superklassens egenskaper initialiseras genom att det första subklassens konstruktur gör är att anropa superklassens konstruktor. Exempel: public class FirstApp extends Frame {... public FirstApp() { super();... Superklassers konstruktorer anropas i flera steg: Crow -> Bird -> Animal -> Object 11

Tillgång till egenskaper Om alla klasser ska ha tillgång till en viss egenskap gör den private och gör metoder (set, get) för att komma åt den. Om endast subklasser ska ha tillgång till en viss egenskap gör den protected. Exempel: protected Wings _wings; 12

En klass har direktåtkomst av: sina egna instansvariabler sina egna metoder superklassers instansvariabler (protected eller public) superklassers metoder (protected eller public) alla andra klassers metoder (public) (alla andra klassers instansvariabler (public), sällsynta men kan förekomma) 13

Syftet med laboration 2 är att: ge fortsatt övning i komposition, ge övning i att använda arv, ge övning i att göra gränssnitt och klasser som implementerar gränssnitt, illustrera polymorfism, dvs hur man definierar instansvariabler som fungerar polymorfiskt, samt ge övning i att skriva interaktiva program (program som reagerar på musoperationer). 14