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



Relevanta dokument
Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

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

DAT043 - Föreläsning 7

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

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

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

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

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

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

Föreläsning 13 Innehåll

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

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 16 Arv. Jan Lönnberg T Grundkurs i programmering

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

Konstruktion av klasser med klasser

Objektorienterad Programmering (TDDC77)

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

Laboration 1 - Grunderna för OOP i Java

Kopiering av objekt i Java

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Klasshierarkier. Klasser kan byggas på redan definierade klasser

PROGRAMMERINGSTEKNIK TIN212

Klasshierarkier - repetition

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

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

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

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

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

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

Imperativ programmering. Föreläsning 4

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

Laboration 1: Figurer i hierarki

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

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

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

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

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

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Classes och Interfaces, Objects och References, Initialization

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

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

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

DD1342 Programkonstruktion för F1,

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

TENTAMEN OOP

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

Modeller, Objekt och Klasser

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

TENTAMEN OOP

Objektorienterad Programmering (TDDC77)

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

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

ID1004 Laboration 4, November 2012

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

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

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

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

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Föreläsning 9: Arv och UML

OOP Objekt-orienterad programmering

Objektorienterad programmering i Java

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

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

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

JAVA Mer om klasser och objektorientering

Malmö högskola 2007/2008 Teknik och samhälle

Klasser och objekt. Henrik Johansson. August 20, 2008

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

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

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

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017

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

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

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Monday, November 16, Senaste Labben

Agenda. Objektorienterad programmering Föreläsning 13

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

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Generics och polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

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

Föreläsning 5-6 Innehåll

Arv. Objektorienterad och komponentbaserad programmering

TDDD78 Viktiga begrepp, del 2

Objektorienterad Programmering DAT043

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Transkript:

Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande En boll har en diameter En boll har en färg Diameter och färg är instansvariabler Man säger att en klass "har en" om sina instansvariabler Exempel: public class Bil { } private Motor motorn; private Ratt ratten; private Hjul[] hjulen; "Har en"-relation /* Konstruktorer, instansmetoder etc. */ Alltså: En bil har en motor, en ratt och en array med hjul (rimligen fyra stycken) "Är en"-relation En bil har inte bara en massa saker, en bil är också en hel del Motorfordon, miljöförstörare, frihetsskapare etc. Även denna typ av relation kan realiseras inom objektorienteringens stora paraply Man säger att en bil ärver eller utvidgar motorfordon t.ex.

Terminologi Klassen Bil är en subklass eller delklass av klassen Motorfordon Klassen Motorfordon sägs vara superklass till klassen Bil Vad ärvs och vad ärvs inte Konstruktorer ärvs ej Alla metoder och variabler som är deklarerade med public eller protected ärvs Metoder och variabler som är deklarerade med private ärvs ej En ärvd metod/variabel kan användas som om den var deklarerad i klassen Syntax Om man vill att klass A ska ärva klass B skriver man i klassdefinitionen public class A extends B { Detta innebär att klass A kan använda alla metoder och variabler i klass B som är definierade public eller protected Flera generationer En kvinna är en människa En människa är ett däggdjur Vem som helst inser att en kvinna förutom att vara människa även är ett däggdjur Så fungerar det även i OOP

Flera generationer Klass A utökar klass B Klass B utökar klass C Resultat: I klassen A kommer man inte bara åt medlemmarna i klass B utan även de från klass C Superklassen Object Alla klasser (utom klassen Object) ärver superklassen Object om de inte uttryckligen ärver något annat Men genom arvet i flera generationer kan man säga att alla klasser (utom klassen Object) ärver klassen Object även om det är i flera led Multipelt arv Tidigare sa vi att en bil kan vara flera saker, motorfordon och miljöförstörare t.ex. Hur skrivs detta i Java? Kan klassen Bil ärva både klassen Motorfordon och Miljöförstörare? NEJ! I Java finns inte vad man kallar för multipelt arv Viss funktionalitet via gränssnitt (interface) finns dock Super super är ett nyckelord som används för att referera till klassen "ovanför" i arvhierarkin Användbart i metoder och konstruktorer Används super i en konstruktor måste den stå först (på första raden i konstruktorn) Se exemplet

This this används som referens till det egna obejktet, det objektet där koden körs för närvarande Användbart vid rekursiva klassdefinitioner Användbart då man vill skicka med det egna objektet som argument i ett metodanrop Se exemplet Överskuggning overriding När en klass ärver en annan får den tillgång till metoder Ifall en ärvd metod inte "passar" kan man överskugga den Då skriver man en ny metod med samma namn och samma argumenttyp i den nya klassen Överskuggning får inte sammanblandas med... Överbelastning overloading Det är fullt möjligt att skriva metoder med samma namn, men de måste ha olika argumenttyp Beroende på argumentets typ så körs rätt metod vid anrop Exempel: println finns i ett antal olika utföranden Exemplet fordon All kod finns på kurshemsidan Syftet är att modellera olika fordon med avseende på arv Modellen gör inga anspråk på att vara exakt

I laboration 4 ska ni göra en klass Matris som ska ha diverse instansvariabler och meotder Varje anrop till en aritmetisk metod ska returnera en ny matris med resultatet matris1.multiplicera(matris2) = matris1*matris2 Elementen lagras i en dubbel array, int [] [] Inkapslade inuti matrisen Seminarium 2 Till det andra seminariet på torsdag ska ni modellera ett solsystem Instruktioner finns i vanlig ordning på hemsidan Nästa föreläsning Rekursiva klasser Tillgänglighet Repetition av klasser och objekt Klasserna String och Vector JFG: kap. 27-30 JSS: kap. 4-5, 7 CSUJ: kap. 5, 7, 10, 12