Återanvändning. Två mekanismer. Nedärvning av egenskaper (inheritance) Objekt komposition



Relevanta dokument
Kontrakt baserad design. Design by contract

Design mönster. n n n n n n. Command Active object Template method Strategy Facade Mediator

Mönster. n n n n n n n n n n. Singleton Monostate Null object Factory Composite Observer Abstract server Adapter Bridge Proxy

Systemdesign fortsättningskurs

Mönster. n n n n n. Visitor Decorator Extension Object State Taskmaster

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

Kompletterande kurslitteratur om serier

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

Applikationen kan endast användas av enskilda användare med förtroenderapportering.

MS-A0409 Grundkurs i diskret matematik I

Föreläsning F3 Patrik Eriksson 2000

MS-A0409 Grundkurs i diskret matematik Sammanfattning, del I

Leica Lino. Noggranna, självavvägande punkt- och linjelasers

Tentamen i Statistik, STA A13 Deltentamen 2, 5p 20 januari 2007, kl

ESBILAC. mjölkersättning för hundvalpar BRUKSANVISNING.

Föreläsning 5. När skall man använda implementationsarv? När skall man använda implementationsarv?

Artificiell intelligens Probabilistisk logik

(a) om vi kan välja helt fritt? (b) om vi vill ha minst en fisk av varje art? (c) om vi vill ha precis 3 olika arter?

Multiplikationsprincipen

Databaser - Design och programmering. Programutveckling. Programdesign, databasdesign. Kravspecifikation. ER-modellen. Begrepps-modellering

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

a utsöndring b upptagning c matspjälkning d cirkulation

Allmänna avtalsvillkor för konsument

Tentamen i Statistik STG A01 (12 hp) 5 mars 2010, kl

Datastrukturer och algoritmer

Tentamen i Kunskapsbaserade system, 5p, Data 3

Tentamen i Flervariabelanalys F/TM, MVE035

Egna funktioner. Vad är sin? sin är namnet på en av många inbyggda funktioner i Ada (och den återfinns i paketet Ada.Numerics.Elementary_Functions)

KMR. mjölkersättning för kattungar BRUKSANVISNING.

Webprogrammering och databaser. Begrepps-modellering. Exempel: universitetsstudier Kravspec. ER-modellen. Exempel: kravspec forts:

Subsystem. Klasser är ett bra sätt att organisera små system. Klasser är för små enheter för att organisera stora system

Konsoliderad version av. Styrelsens för ackreditering och teknisk kontroll föreskrifter (STAFS 1993:18) om EEG-märkning av färdigförpackade varor

Funktionsteori Datorlaboration 1

Exempel. En klass för att inkapsla funktionen hos ett tangentbord. Nu kan många objekt skapas av klassen

Lösningar och kommentarer till uppgifter i 1.1

SveTys. Affärskultur i Tyskland. Vad är det? Och vad ska jag tänka på?

Universitetet: ER-diagram e-namn

Tentamen 19 mars, 8:00 12:00, Q22, Q26

Introduktion till arv

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

TDDC76 - Programmering och Datastrukturer

Databaser - Design och programmering. Databasdesign. Kravspecifikation. Begrepps-modellering. Design processen. ER-modellering

HP Media Center PC Programvaruguide

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

101. och sista termen 1

Hamnbanan Göteborg Dubbelspår Eriksbergsmotet - Pölsebobangården

Borel-Cantellis sats och stora talens lag

Vi har... Diskuterat olika objektorienterade mekanismer. Ha också tagit upp några krav på hur dom här mekanismerna ska användas

Föreläsningar 7,8 sept 24, sept 26 v 39). delvis DD Chapter 6.

Genomsnittligt sökdjup i binära sökträd

OOP Objekt-orienterad programmering

Objektorienterad programmering

Övningar Dag 2 En första klass

Markanvisningsavtal för och försäljning av fastigheten Gesällen 25

tullinge FLEMINGSBERG TULLINGE Kommunens avsikter för Tullinge som helhet

För att minimera de negativa hälsokonsekvenserna av tunnelluft finns i dagsläget tre metoder;

Enkel slumpvandring. Sven Erick Alm. 9 april 2002 (modifierad 8 mars 2006) 2 Apan och stupet Passagesannolikheter Passagetider...

Utvärdering av tidigarelagd start av prismätningar i nya radio- och TV-butiker

Redovisning av inlämningsuppgifter

MA2018 Tillämpad Matematik III-Statistik, 7.5hp,

HP Media Center-dator Komma igång

Anmärkning: I några böcker använder man följande beteckning ]a,b[, [a,b[ och ]a,b] för (a,b), [a,b) och (a,b].

Universitetet: ER-diagram e-namn

Övningstentamen i MA2018 Tillämpad Matematik III-Statistik, 7.5hp

Föreläsning 13 Innehåll

Föreläsning G04: Surveymetodik

Operativsystem - Baklås

Tentamen 9 juni 2016, 8:00 12:00, Q21

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

Föreläsning 5. När skall implementationsarv användas? The Open-Closed Principle (OCP) Liskov Substitution Principle (LSP)

Tommy Färnqvist, IDA, Linköpings universitet

x 1 x 2 x 3 x 4 x 5 x 6 HL Z x x x

MS-A0409 Grundkurs i diskret matematik Sammanfattning, del I

Remiss Remissvar lämnas i kolumnen Tillstyrkes term och Tillstyrkes def(inition) och eventuella synpunkter skrivs i kolumnen Synpunkter.

Innehållsförteckning Tabeller och polynom

ENDIMENSIONELL ANALYS B1 FÖRELÄSNING VI. Föreläsning VI. Mikael P. Sundqvist

Familje- juridik Här är dina rättigheter. Bostad& fastighet. Sambo eller gift? Sambo eller gift? Privata Affärers serie om. Del 3

( ) ( ) Kap Kolligativa egenskaper + fasjämvikter för 2-komponentsystem 5B.2/5.5 Kolligativa egenskaper R T

Arv Murach s: kap 14

Föreläsning 5. När skall man använda implementationsarv?

välkommen till Bröderna Lejonhjärta nyhet!

Bo Andersson, IF Metall, Sven Bergström, LO, Jörgen Eriksson, Byggnads, Björn Hammar, Teknikföretagen, Björn Samuelson, Sveriges Byggindustrier

DEL I. Matematiska Institutionen KTH

Vikingen FutureLook. Delphi Finansanalys AB

Installationsanvisning Bruks- och eldningsinstruktion IAV LEK LEK. Handölkassetten

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

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

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

Vad är det okända som efterfrågas? Vilka data är givna? Vilka är villkoren?

Ekvationen (ekv1) kan beskriva en s.k. stationär tillstånd (steady-state) för en fysikalisk process.

Arv. Objektorienterad och komponentbaserad programmering

HP Media Center PC Programvaruguide

KONSEKVENSANALYS 1 (5) INDIVID ALT ORGANISATION (markera vad bedömningen avser)

Minsta kvadrat-metoden, MK. Maximum likelihood-metoden, ML. Medelfel. E(X i ) = µ i (θ) MK-skattningen av θ fås genom att minimera

Operativsystem - Processkommunikation

Plattformshissar från Cibes Lift för alla byggnader

Föreläsning 10: Kombinatorik

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

Objektorienterad programmering

Analys av algoritmer. Beräkningsbar/hanterbar. Stora Ordo. O(definition) Datastrukturer och algoritmer. Varför analysera algoritmer?

Transkript:

Iheritace

Återavädig Två mekaismer Nedärvig av egeskaper (iheritace) Objekt kompositio A A +a +b B B

Iheritace Återavädig geom att skapa subklasser kallas ofta white box reuse Ekelt att aväda Relatioe mella objekt bestäms statiskt vid kompilerige Ka modifiera beteedet i basklasse vid behov A B

Liskovs substitutiospricip Fuktioer som aväder refereser till objekt av basklasser måste kua aväda objekt av deriverade klasser uta att märka ågo skillad Eller origial variate What is wated here is somethig like the followig property. If for each object o1 of type S there is a object o2 of type T such that for all programs P i terms of T, the behaviour of P is uchaged whe o1 is substituted for o2 the S is a subtype of T. Ett exempel för att visa betydelse...

Kvadrat och rektagel E rektagel klass class Rectagle{ public void setwidth(it w){ x=w; public void setheight(it h){ y=h; public it getwidth(){ retur x; public it getheight(){ retur y; private it x; private it y; E kvadrat är e typ av rektagel Alltså borde klass Square vara e subklass av klass Rectagle

Kvadrat och rektagel, ågra problem E kvadrat har x==y. Alltså är det oödigt att spara både x och y Ma behöver ite heller både getwidth() och getheight() Me ma får dem med ädå Det verkliga problemet är setheight och setwidth Alltid ska bevara x==y Det gör ite de uvarade implemetatioe

Hur fixa problemet? Omdefiiera setheight och setwidth class Square exteds Rectagle{ public void setheight(it h){ x=h; y=h; public void setwidth(it w){ x=w; y=w; Nu är det alltid e kvadrat Itert kosistet

Fukar det här? E fuktio som aväder e rektagel ska fugera också om ma aväder e kvadrat public void stretch(rectagle r, it legth){ r.setwidth(r.getwidth()+legth); r.setheight(r.getheight()+legth); Rektagel fugerar som vätat x =x+legth och y =y+legth Kvadrat fugerar aorluda x =x+2*legth och y =y+2*legth

Ett litet problem till class Rectagle{ public void setwidth(it w){ x=w; public void setheight(it h){ y=h; public it getwidth(){ retur x; public it getheight(){ retur y; public fial void stretch(it legth){ setwidth(x+legth); setheight(y+legth); public void shrik(it percet){... Omdefiierig av edast setheight och setwidth ka implicit omdefiiera flera metoder. Speciellt ett problem då ma ärver av klasser ma ite har källkode till

Sammafattig Ett kvadrat objekt är ite ett rektagel objekt Olika beteede Ma måste täka på hur ett objekt aväds Samma problem också med t. ex. ellips och cirkel Det här är e mycket valig typ av fel Ärvig måste avädas försiktigt Lätt att itroducera fel som är svåra att hitta

Tecke på LSP problem Fuktioaltet är borttage i subklasse public class Base{ public void f(){ /*Lite kod här*/ public void Derived exteds Base{ public void f(){ Udatag geereras av omdefiierade metoder i subklasser Me udatag gereras ite av motsvarade metoder i basklasse

LSP och kotrakt baserad desig Det fis ett sambad mella kotrakt och LSP När ma omdefiierar e metod i e subklass får ma edast försvaga förvillkoret och stärka eftervillkoret Mera matematiskt: Om P är förvillkor, Q eftervillkor och I ivariat i superklasse beteckar motsvarade i subklasse P Q' I' P' I Q

Exempel Kotrakt för setheight i klasse Rectagle /*@requires h>=0; @esures y==h && x=\old(x); @*/ public void setheight(it h){ y=h; Detta kotrakt uppfylls ite av implemetatioe av kvadrat klasse Också om kotrakte ite är explicit utskriva fis de ädå där som atagade över hur klasse är täkt att fugera

Kotrakt sammafattig Det ka vara bra att skriva ut för och eftervillkor Lättare att se vad som det är täkt att e metod ska åstadkomma LSP är iget absolut krav Me att ska skapa klasser som bryter mot pricipe ska övervägas oga

Ärvig, ackdelar Ärvig expoerar delar av implemetatioe av basklasse till subklasser Arv bryter mot pricipe om döljige av iformatio Implemetatioe av subklasse blir lätt beroede av basklasses implemetatio Förädrigar i basklasse ka resultera i förädrigar också måste göras i subklasser

Objekt kompositio Mera dyamiskt, relatioer mella objekt bestäms då programmet körs Väldefiierade grässitt behövs Java iterfaces GoF boke rekommederar Aväd hellre objekt kompositio i stället för ärvig Subklasser ofta lättare att aväda för vissa problem Delegerig

Delegerig Delegerig är e metod för att göra kompositio lika kraftfullt för återavädig som ärvig Två objekt aväds Ett objekt som tar emot e förfråga (metod arop) Ett objekt som förfråga delegeras till Samma effekt som då subklasser överlåter förfrågigar till basklasser

Delegerig, exempel Rect agle Widow +rectagle Rectagle area() area() 1 area() Widow retur rectagle.area()

Grafiska avädargrässitt Exempel javax.swig.jbutto E valig kapp frå swig biblioteket Då avädare trycker på de ska programmet utföra ågo fuktio Två möjliga alterativ för att hatera kapptryckigar Skapa e subklass av JButto klasse och omdefiiera e haterigsmetod Delegera haterige till ett speciellt haterigsobjekt

JButto (forts) Swig aväder delegerig för att hatera olika hädelser (evets) public class JButto...{... public void addactiolisteer( ActioListeer l){... public iterface ActioListeer{ void actioperformed( ActioEvet e) ;

JButto (forts.) E JButto skapas så här: class Hadler implemets ActioListeer{... void actioperformed( ActioEvet e) { //hatera kapptryckigar... ActioListeer listeer=ew Hadler(...); JButto butto = ew JButto( text ); butto.addactiolisteer(listeer); pael.add(butto);...

Exempel trådar (threads) Ett Java program ka ha måga trådar som körs parallellt Skapas geom ärvig eller delegerig public class MiThread exteds Thread{... public void ru(){ //Vad tråde ska göra... Thread t=ew MiThread(...); t.start();

Trådar (forts.) Delegerigsversio public class MiThread implemets Ruable{... public void ru(){ //Vad tråde ska göra... Ruable r=ew MiThread(...); Thread t=ew Thread( r ); t.start();

Delegerig sammafattig Samma problem som måga adra metoder för att öka flexibilitete via objekt kompositio Dyamiskt, parametriserad mjukvara är svår att förstå Möjlige också lågsammare ä subklasser Ska avädas då delegerig föreklar mera ä ökar komplexitete Fugerar bäst tillsammas med desigmöster