Klasshierarkier. Klasser kan byggas på redan definierade klasser

Relevanta dokument
Konstruktion av klasser med klasser

Konstruktion av klasser med klasser

Klasshierarkier - repetition

Aggregering. Arv och klasshierarkier. Arv. Arv (forts)

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

OOP Objekt-orienterad programmering

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

OOP Objekt-orienterad programmering

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

"Ä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

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

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

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

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

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

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

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

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

PROGRAMMERINGSTEKNIK TIN212

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

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

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

Föreläsning 13 Innehåll

Arv. Objektorienterad och komponentbaserad programmering

TENTAMEN OOP

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

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

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

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

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

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

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Objektorienterad Programmering (TDDC77)

OOP Tenta

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

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

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

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

Objektorienterad programmering i Java

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

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

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

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

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

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

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Föreläsning 5-6 Innehåll

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

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

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.

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

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

OOMPA 2D1359 Föreläsning 8

Malmö högskola 2008/2009 CTS

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Kap J 7-1 Mer om arv. (superklass) (subklass)

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Lösningsförslag till exempeltenta 2

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

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga.

Generisk klass med typparameter Inre klass - ListIterator

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

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

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

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

Objektorienterad Programmering (TDDC77)

DAT043 - föreläsning 8

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

TENTAMEN OOP

Instuderingsuppgifter läsvecka 2

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

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll

DAT043 - Föreläsning 7

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Lösningar för tenta 2 DAT043,

Lösningar till tentamen i EDAF25

Transkript:

Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen vektor. En ny klass byggs som en specialisering av en befintlig klass. Exempel: om vi har en klass fordon så kan vi bygga nya klasser som t.ex. cykel och motorfordon. Dessa kan i sin tur användas för att bygga nya klasser som personbil, lastbil och buss 1

I det senare fallet säger man att man har en klasshierarki Klassen fordon sägs vara en basklass Klasserna cykel och motorfordon är subklasser eller underklasser till klassen fordon Klassen motorfordon är också basklass för klasserna personbil och lastbil Man brukar säga att frasen är en... som... kan användas för att identifiera att det är lämpligt att använda sig av en klasshierarki. 2

Ett objekt ur en subklass har (nästan) alla basklassens attribut och metoder och kan lägga till egna. Man säger att subklassen ärver basklassens egenskaper. Exempel: Klassen fordon kan ha egenskaperna längd, bredd och vikt. En personbil kan tillfoga passagerarantal medan en lastbil kan tillfoga maxlast. En subklass kan också skriva över basklassens metoder. 3

Exempel: public class Fordon { public void print() { System.out.print("Fordon") ; public class Cykel extends Fordon { public void print() { System.out.print("Cykel"); public class Bil extends Fordon { double vikt; Bil() { Bil( double v ) { vikt = v; public void print() { System.out.print("Bil med vikt " + vikt); 4

Användning Koden... public static void pr(string s) { System.out.print(s); public static void main(string [] args) { Fordon f = new Fordon(); Cykel c = new Cykel(); Bil b = new Bil(1.2); pr("f: "); f.print(); pr("\n"); pr("c: "); c.print(); pr("\n"); pr("b: "); b.print(); pr("\n");... ger utskriften f: Fordon c: Cykel b: Bil med vikt 1.2 5

Flera subklasser class Pbil extends Bil { int pantal = 5; public Pbil() { public Pbil(double v) { super(v); public Pbil(double v, int ant) { super(v); pantal = ant; public void print() { System.out.print("Person"); super.print(); System.out.print(" och platsantal " + pantal); 6

Satserna Pbil p = new Pbil(1.5); Pbil q = new Pbil(0.9,4); pr("p: "); p.print(); pr("\n"); pr("vikt b: " + b.vikt + "\n"); pr("vikt p: " + p.vikt + "\n"); f = b; pr("f: "); f.print(); pr("\n"); f = q; pr("f: "); f.print(); pr("\n"); p = (Pbil) f; pr("p: "); p.print(); pr("\n"); ger utskrifterna p: PersonBil med vikt 1.5 och platsantal 5 Vikt b: 1.2 Vikt p: 1.5 f: Bil med vikt 1.2 f: PersonBil med vikt 0.9 och platsantal 4 p: PersonBil med vikt 0.9 och platsantal 4 7

Exempel på illegala operationer p = f; p = (Pbil) c; pr("vikt: " + f.vikt); p = (Pbil) f; // om f ej refererar Pbil Den sista kan göras säker genom if ( f instanceof Pbil ) p = (Pbil) f; else... 8

Sammanfattning Om klassen S är en subklass till klassen B och om s är deklarerad som en referens till S och b till B så gäller Ett objekt ur klassen S har alla attribut och metoder som klassen B har Om S deklarerar ett attribut som finns i B så överskuggas Bs attribut. En referens får referera objekt ur deklarerad klass och dess subklasser. När man anger ett attribut a via punktnotation p.a så är det hur p är deklarerad som avgör vilket attribut som väljs. När man anropar en metod m via p.m() så är det typen på det element som p verkligen refererar som avgör vilken metod som väljs (så kalladdynamisk eller sen bindning). 9

Skyddsnivåer private Endast åtkomligt från klassens egna metoder public Åtkomligt för alla protected Åtkomligt från egna subklasser och klasser i samma paket package Om ingen skyddsnivå anges så ges alla klasser i samma paket åtkomsträttighet 10

Konstruktorer vid arv Konstruktorer ärvs inte Även subklasser får automatiskt en defaultkonstruktor om ingen annan ges När ett objekt ur en subklass skapas så sker följande: 1. Instansvariablerna får sina defaultvärden 2. En konstruktor för superklassen anropas 3. Eventuella initieringsuttryck evalueras och tilldelas respektive instansvariabler 4. Satserna i subklassens konstruktor exekveras 11

All standardprogramvara i Java bygger på arv och klasshierakier! Exempel: 1. Klasserna för undantag: Throwable med underklasserna Error och Exception med underklasserna... 2. Grafiska komponenter: Component med underklasser Button, Checkbox, Container,... där t ex Container har underklasserna Panel, Window... 3. Avbildningar: Map med bl a underklassen HashMap 4. Samlingsklasserna: Collection med bl a underklassen och List som bl a har underklasserna Vector och LinkedList (Map, Collection och List är egentligen interface och inte klasser) 12

Klassen Object är basklass till alla klasser. En referens till Object får således referera vilket objekt som helst. Utnyttjas bl a för samlingsklasser (listor, tabeller... ) class ListNode { Object info; ListNode next; ListHead(Object i, ListNode n) { info = l; next = n; public class List { ListNode head; public void insertfirst(object o) { head = new ListNode(o, head)... 13

Några metoder i klassen Object: Object clone() boolean equals() String tostring() Ofta anledning att omdefiniera dessa! Kunde ha definierat insertfirst i klassen List ovan: public void insertfirst(object o) { head = new ListNode(o.clone(), head) 14