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



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

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

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

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

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

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

Klasshierarkier - repetition

Konstruktion av klasser med klasser

OOP Objekt-orienterad programmering

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

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

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

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

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

Föreläsning 13 Innehåll

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

DAT043 - Föreläsning 7

Arv. Objektorienterad och komponentbaserad programmering

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

OOP Objekt-orienterad 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.

TENTAMEN OOP

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

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

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

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

TENTAMEN OOP

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

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

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

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

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

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

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

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

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

Laboration 1: Figurer i hierarki

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

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

LÖSNINGSFÖRSLAG TENTAMEN

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

Dynamisk bindning och polymorfism

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

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

Modeller, Objekt och Klasser

Imperativ programmering. Föreläsning 4

PROGRAMMERINGSTEKNIK TIN212

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

Laboration 1 - Grunderna för OOP i Java

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

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

OOP Objekt-orienterad programmering

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

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

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Classes och Interfaces, Objects och References, Initialization

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

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

JAVAUTVECKLING LEKTION 11

Introduktion till arv

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.

OOP Tentamen

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

TENTAMEN OOP

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

Objektorienterad Programmering (OOP) Murach s: kap 12-16

OOP Tenta

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Föreläsning 9: Arv och UML

Objektorienterad programmering i Java I

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

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

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.

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

Kopiering av objekt i Java

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Agenda. Objektorienterad programmering Föreläsning 13

Repetition av viktiga begrepp inom objektorienterad programmering

Transkript:

Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla har Lägger till nya egenskaper (fält) och utökar beteendet (nya metoder) Arv (forts) Kan användas för att: bygga vidare på fördefinierade klasser i Javas klassbibliotek strukturera egna program i generell kod och mer specialiserad kod återanvända koden i superklasser många gånger 1

Konstruktorer Vid Arv Konstruktorer ärvs inte! Därför måste subklasser tillhandahålla egna konstruktorer I en subklass konstruktor måste ett anrop till en konstruktor i superklassen ske Har superklassen en "tom" konstruktor anropas denna om inget eget anrop görs från subklassen Konstruktorer Vid Arv Ett anrop till en konstruktor i superklassen sker med nyckelordet super Detta anrop måste placeras först public Barn(String namn, int alder) super(namn, alder); // Anropar superklassens konstruktor // Eventuell övrig kod här // Nu kan vi skapa ett nytt objekt av Barn så här: Barn dotter = new Barn("Stina Karlsson", 8); Arv (forts) En klass kan endast ärva ifrån en annan klass Anges inget arv, ärver klassen automatiskt från klassen Object Alla klasser ärver direkt eller indirekt från klassen Object 2

Object Implicit arv av Object public class Person // Medlemmar Explicit arv av Object public class Person extends Object // Medlemmar Följande variabeldeklaration är möjlig Object pappa = new Person("Kalle Karlsson", 33); Arv Exempel Är en/ett superklass Fordon subklass Personbil Lastbil Arv Ett Exempel Till Är en/ett Person - namn : String - ålder : int + Person(n : String, a : int) + Person() + setnamn(namn : String) + setålder(a : int) + getnamn() : String + getålder() : int + print() + tostring() Barn -veckopeng: int + Barn(n : String, a : int, v : int) + setveckopeng(v : int) + getveckopeng() : int + okaveckopeng(n : int) Anställd - företag : String + Anställd(n : String, a : int, f : String) + setföretag(f : String) + getföretag() : String + sparka() 3

Åtkomstregler Vid Arv private är fortfarande private fält och metoder ärvs ej av subklasser public är fortfarande public fält och metoder ärvs av subklasser protected (skyddad åtkomst) private gentemot andra klasser public gentemot subklasser Klasser som är final kan inte ärvas Gömmande Av Fält Fält med samma namn i subklassen gömmer fält i superklassen Subklassen får nya fält som är helt separerade från fälten i superklassen Kod i superklassen refererar till dennes fält Kod i subklassen refererar till dennes fält public class Klass1 protected int tal = 10; public class Klass2 extends Klass1 private int tal = 20; public void print() System.out.println(tal); // 20 System.out.println(super.tal); // 10 Omdefinition Av Metoder En subklass kan omdefiniera de metoder som ärvs från superklassen Innebär att metoden har samma namn, returvärde och parametrar Men har en annan implementation (kod) Den nya metoden kan komma åt den gamla metodens implementation public class Person public String tostring() System.out.println(super.toString()); return namn; 4

Omdefinition Av Metoder Metoder som inte kan omdefinieras av en subklass är: final, static Metoder som kan omdefinieras av en subklass är: public, protected Metoder som måste omdefinieras av en subklass är: abstract Abstrakta Klasser På sätt och vis motsatsen till final En abstrakt klass: är inte komplett går inte att skapa objekt av kan endast ärvas av andra klasser används när implementationen för några, men inte alla, metoder kan tillhandahållas i en superklass Abstrakta Metoder En abstrakt metod: saknar implementation (kod) har endast en signatur (namn, returtyp och parametrar) måste implementeras i subklasser Finns minst en abstrakt metod måste hela klassen vara abstrakt public abstract class Person public abstract void jobba(); 5

Exempel på abstract Är en/ett GeometriObjekt # x : int # y : int + GeometriObjekt (x : int, y : int) + setx(x : int) + sety(y : int) + beraknaarea() : double Rektangel - langd : int - bredd : int + Rektangel (x : int, y : int, langd : int, bredd : int) + setlangd(langd : int) + getlangd() : int + setbredd(bredd : int) + getbredd() : int + beraknaarea() : double Cirkel - radie : int + Cirkel(x : int, y : int, d : double) + setradie(d : int) + getradie() : int + beraknaarea() : double 6