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

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

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

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

Introduktion till arv

OOP Objekt-orienterad programmering

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

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

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

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

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

Föreläsning 13 Innehåll

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

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

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

OOP Objekt-orienterad programmering

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

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

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

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

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

Arv. Objektorienterad och komponentbaserad programmering

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

Klasshierarkier - repetition

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

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

Classes och Interfaces, Objects och References, Initialization

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

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

DAT043 - Föreläsning 7

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Imperativ programmering. Föreläsning 4

Objektorienterad Programmering (TDDC77)

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

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

Konstruktion av klasser med klasser

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

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

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

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

Objektorienterad programmering. Grundläggande begrepp

Objektorienterad programmering

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

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

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

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

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

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

Objektorienterad Programmering (TDDC77)

Objekt och klasser - Introduktion

JAVA Mer om klasser och objektorientering

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

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

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

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

ID1004 Laboration 4, November 2012

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

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

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

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

Laboration 1 - Grunderna för OOP i Java

Föreläsning 15: Repetition DVGA02

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:

Laboration 1: Figurer i hierarki

Objektorienterad programmering i Java

OOP Objekt-orienterad programmering

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

Objektorienterad konstruktion

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

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 programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

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

Föreläsning 5-6 Innehåll

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

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

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

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

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

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

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

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

Instuderingsuppgifter läsvecka 2

Monday, November 16, Senaste Labben

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

Modeller, Objekt och Klasser

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

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

Transkript:

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

Grafisk respresentation: Arv Fordon Bil Arv skapar är-en relation subklassen är en mer specifik version av superklassen Programmeringsmetodik -Java 166

Arv Utgå från existerande strukturer superklass, superklass, eller basklass Den härledda klassen kallas subklass eller subclass. Egenskaperna ärvs från förälder till barn subklassen ärver metoder och data definierade för superklassen Programmeringsmetodik -Java 167

Härleda subklasser Det reserverade ordet extends för att åstadkomma arvet klass Bil extends Fordon { // attribut & metoder } Se Words.java (s.324) Programmeringsmetodik -Java 168

Modifieraren protected Modifierarna avgör vad som ärvs Attribut och metoder som är public ärvs medan private inte ärvs Men attribut skulle helst inte vara public (förstör inkapslingen) Modifieraren protected tillåter arv men ger bättre skydd än public Appendix F Programmeringsmetodik -Java 169

super Konstruktorer ärvs inte (Trots att de är deklarerade public) Vi vill ha tillgång till den överordnade klassens konstruktor super gör det möjligt att referera superklassen, ofta för att använda konstruktorn Programmeringsmetodik -Java 170

Definiera - ärva? Allt som ärvs kan refereras direkt i subklassen, som om det var deklarerat där men, även en metod eller ett attribut som inte ärvs, är definierad för subklassen och kan refereras indirekt genom superklassens metoder Programmeringsmetodik -Java 171

Omdefiniera metoder En subklass kan omdefiniera en ärvd metod Signatur = namn samt parametrarnas antal, typ och ordning Måste ha samma signatur som superklassens metod, kan för övrigt se helt annorlunda ut Objektets typ avgör vilken metod som används Programmeringsmetodik -Java 172

Overloading vs. Omdefinition Overloading multipla metoder i samma klass med samma namn men olika signaturer en operation som utförs olika för olika uppsättningar data Omdefinition två metoder, en i en superklass och en i en subklass, med samma signatur Programmeringsmetodik -Java 173

super igen super referensen används för att anropa godtycklig metod i superklassen Bra när man har omdefinierade metoder Syntax : super.phwrg(sdudphwudu) Programmeringsmetodik -Java 174

Klass hierarkier Subklasser kan ha subklasser: Företag Dagligvaruhandel Serviceföretag ICA Konsum Max Programmeringsmetodik -Java 175

Klass hierarkier God klassdesign placerar gemensamma egenskaper så högt som möjligt i hierarkin Klass hierarkier måste ofta modifieras och utökas Ingen generell design som duger överallt Programmeringsmetodik -Java 176

Klassen Object Alla klasser härleds från klassen Object Om inget arv anges, är klassen automatiskt subklass till Object Klassen Object är alltså rot i alla hierarkier Innehåller några få metoder, t.ex. tostring(), som ärvs av alla klasser Programmeringsmetodik -Java 177

Referenser och arv En objektreferens kan referera till ett objekt av rätt klass eller till ett objekt av någon klass relaterad till den genom arv Exempel : klassen Helg används för att härleda subklassen Jul - nu kan en Helg-referens användas för att referera ett Jul-objekt : Helg dag; dag = new Jul(); Programmeringsmetodik -Java 178

Referenser och arv widening conversion - kan göras med tilldelning narrowing conversion - måste göras med cast (kap.5) Programmeringsmetodik -Java 179

Polymorfism Referens till en av flera möjliga metoder Klassen Helg har en metod fira, och klassen Jul omdefinierade den Vad händer då med dag.fira(); Om dag är av typen Helg anropas en version av fira; om referensen är till ett Jul-objekt, används dess fira-metod Programmeringsmetodik -Java 180

Polymorfism Objektets typ (inte referensens) bestämmer vilken metod som avses Samma kod kan ge olika anrop vid olika tillfällen Kopplingen görs under körningen Programmeringsmetodik -Java 181

Att organisera Javakod Förutom enkelt arv finns det fler koncept i Java som stöder återanvändning och elegant kod Viss kod måste uppfyller vissa krav för att fungera med befintlig kod (t ex i händelsehantering) Koden måste organiseras (i bibliotek) Programmeringsmetodik -Java 182

Abstrakta Klasser Abstrakta klasser används för att samla gemensamma attribut och metoder En abstrakt klass kan inte instansieras (men man får definiera referenser till objekt p.g.a. polymorfi och dynamisk bindning) Abstrakta klasser innehåller ofta abstrakta metoder Programmeringsmetodik -Java 183

Abstrakta Klasser En abstrakt metod har ingen implementation, bara namn och signatur Klasser med abstrakta metoder blir abstrakta Abstrakta klasser får inte vara final / static Måste det vara så??? Programmeringsmetodik -Java 184

Abstrakta Klasser Abstrakta klasser är ofta för allmänna för att vara direkt användbara För klasser och metoder används modifieraren abstract Subklasser som inte (om)definierar alla abstrakta metoder blir också abstrakta Programmeringsmetodik -Java 185

Programmeringsmetodik -Java 186

Interfaces Med interface betecknas allmänt de resurser en klass (eller ett objekt) ställer till förfogande Mängden resurser som kan användas av andra I Java formaliseras detta m h a interfacekonstruktionen Programmeringsmetodik -Java 187

Interfaces Ett Java interface är en mängd konstanter och abstrakta metoder Ett interface lägger på så sätt fast krav på de klasser som implementerar interfacet class klassnamn implements interfacenamn { } Programmeringsmetodik -Java 188

Interfaces Varje interface- implementation är en ny version av interfacet Interface är inga klasser och kan inte instantieras En klass kan ärva från en klass och dessutom implementera ett eller flera interface Programmeringsmetodik -Java 189

Interfaces Interfacekonstanterna är tillgängliga i den implementerade klassen En interface kan ärva från ett eller flera interface (m h a extends ) En klass som implementerar ett sådan interface måste också implementera alla ärvda metoder Programmeringsmetodik -Java 190

Interfaces Interfacenamnet får användas för att definiera referenser som är kompatibla med alla objekt av klasser som implementerar interfacet Interface- konceptet har många likheter med multipel arv, dock utan dess nackdelar Multipel arv finns inte i Java Programmeringsmetodik -Java 191

Paket Ett Java paket är en mängd klasser Paket användas för att gruppera liknande klasser och/ eller sådana som beror på varandra Klasserna i ett paket behöver inte ärva från varandra Java AWT är ett paket Java API: n består av många paket Programmeringsmetodik -Java 192

Paket Import satsen gör innehållet i ett paket tillgängligt import paketnamn.klassnamn; // enstaka klass import paketnamn.*;// alla klasser i paketet Programmeraren kan definiera egna paket package paketnamn; Programmeringsmetodik -Java 193

Paket Package-satsen måste vara första satsen i en fil Alla klasser i filen läggs till det namngivna paketet Det får bara finnas en package sats i en fil Paketnamnet motsvarar katalognamnet där klassfilerna finns Programmeringsmetodik -Java 194

Paket Det finns en s k environment variabel CLASSPATH som lägger fast var systemet skall letar efter paket Vid namnkollision måste de berörda klasser kvalificeras (specificeras med fullt namn) Programmeringsmetodik -Java 195

Men Hur Hittas de Rätta Objekten och Klasserna? Erfarenhet Återanvändning av tidigare modell Checklista Människor Platser Reala ting Abstrakta ting Roller Organisationer Händelser... Lingvistisk (språklig) analys Rollspel (typ CRC kort) Programmeringsmetodik -Java 196

Lingvistisk Analys Textuell analys (eller t o m grammatisk analys) Substantiv => objekt / klasser Verb => metoder Adjektiv => attribut... Granska kandidatlistan Synonymer Grammatiken (t ex verb som används som substantiv) Behåll bara de som passar problemet Kolla särskild för verb som uttrycker speciella relationer som t ex vara ( är en/is a ) arv? ha verb ( has ) komposition?... Programmeringsmetodik -Java 197

Bra klasser Tydligt och lätt avgränsningsbar del av programmet Klara uppgifter Relaterat data Maximerar inkapsling och modularitet Genererar få beroenden En öppen arkitektur förberedd för förändringar Programmeringsmetodik -Java 198

Dåliga klasser Att till en klass samla allt man inte vet vad man skall göra av En grupp funktionaliteter Orelaterat data eller funktionaliteter Programmeringsmetodik -Java 199