Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Relevanta dokument
Lösningar till tentamen i EDAF25

4.7 Observatörsmönstret

Lösningar till tentamen i EDAF25

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och diskreta strukturer

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

LÖSNINGSFÖRSLAG. Tentamen. Objektorienterad modellering och design. EDA665, 4 poäng

HT1 2015, FÖRELÄSNING 14 (INFÖR TENTAN)

Information. Computer

Designmönster. Kapitel Kommandomönstret

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

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

Tentamen i Objektorienterad modellering och diskreta strukturer

Computer projekttid. Objektorienterad modellering och diskreta strukturer / design. Rapporter från verkligheten. EDAF10 i HT2

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design (OMD) Helsingborg

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

Projekt 2 XL. Observer-mönstret

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

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 13 Innehåll

Projekt 2 XL Schema designmöten

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

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

Laboration 2: Designmönster

HT2 2015, FÖRELÄSNING 15 (XL-PROJEKTET)

Övningsuppgifter i Objektorienterad modellering och design (OMD) Helsingborg EDAF25

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

Laboration 2: Designmönster

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

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

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

Tentamen i Objektorienterad modellering och design Helsingborg

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

Tentamen i Objektorienterad modellering och diskreta strukturer

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

TENTAMEN OOP

Projekt 2 XL Klassen Gui

Förra föreläsningen. Dagens agenda. Command Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

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

Föreläsningsbilder EDAF10/EDA061 Ht 2015 HT1 2015, FÖRELÄSNING 3

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

TENTAMEN OOP

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

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

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

HT1 2013, FÖRELÄSNING 6

Förra föreläsningen. Alternativ kurslitteratur. Dagens agenda Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

Förra föreläsningen. Dagens agenda. Dagens agenda. Föreläsningsbilder EDAF10/EDA Ulf Asklund, Datavetenskap/LTH 1

HT1 2015, FÖRELÄSNING

HT1 2013, FÖRELÄSNING 5

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

DAT043 - Föreläsning 7

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

Konstruktion av klasser med klasser

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

DAT043 Objektorienterad Programmering

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

Tentamen, Algoritmer och datastrukturer

Objektorienterad Programkonstruktion. Föreläsning jan 2016

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

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

TENTAMEN OOP

Tentamen. DD2385 Programutvecklingsteknik vt Tisdagen den 26 maj 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

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

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Lösningsförslag till tentamen

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

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

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

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

Objektorienterad Systemutveckling 1 (7,5 hp)

Förra föreläsningen. Dagens agenda. Vecka Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

CHALMERS TENTAMEN. 2018/2019, lp 1 DAT050. Uno Holmer

Seminarierna Instruktioner. Övningarna Viktiga relationer

LÖSNINGSFÖRSLAG

Kursombud. Objektorienterad modellering och diskreta strukturer / design. Agile? Designprinciper EDAF10 EDA061. Lennart Andersson. Grupper för projekt

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

Transkript:

Tentamen i EDAF5 juni 07 Skrivtid: 4-9 Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Skriv tydligt om texten inte går att läsa kan du inte få några poäng. Sätt identitet och sidnummer på varje inlämnat blad, kontrollera att sidnumret på din sista sida är samma som det antal blad du markerar på omslagspappret. Hjälpmedel: Koffman & Wolfgang: Data Structures Martin: Agile Software Development Andersson: UML syntax Holm: Java snabbreferens Uppgift En espressomaskin har två vippströmbrytare: A (huvudströmbrytare och värmeelement) och B (pumpen). Två utsignaler ska styras: värmeelement (V-on och V-off) och pump (P-on och P-off). Pumpen får inte slås på om inte värmeelementet är på. Rita ett fullständigt UML-tillståndsdiagram för espressomaskinen. p Uppgift Nedan, i figur, visas ett exempel på ett designmönster. (a) Vilket designmönster visar exemplet? (b) Rita ett objektdiagram där ett objekt av varje shapetyp ingår. (c) Rita ett sekvensdiagram för scenariet att metoden draw i Drawing anropas för ditt objektdiagram. Drawing Shape Circle Square Group Figure : Klassdiagram Drawing 3 p

Uppgift 3 Använd Strategy-mönstret för att konstruera en klass FilteredList, som innehåller en lista av strängar och ett filter som gör att metoden tostring bara returnerar en sträng sammansatt av de strängar som filtret accepterar. Om listan innehåller [ good, morning, sir ] och man använder ett filter som accepterar strängar med minst fyra tecken skall tostring returnera good morning Om filtret accepterar alla strängar skall resultatet bli good morning sir Filtret skall vara ett attribut i klassen FilteredList. Lösningen redovisas som ett Java-program som innehåller allt som behövs för att exekvera exemplet med två utskrifter. Uppgift 4 I figur nedan visas ett försök att designa ett ramverk (framework) med en användaranpassning i form av två egna specialiseringar av Shape. Designen på ramverket har dock en brist vilken kan avhjälpas genom att applicera mönstret Fabriksmetod (Factory method). (a) Vad är det för brist? (b) Applicera Fabriksmetod-mönstret genom att komplettera (och ändra om det behövs) klassdiagrammet. (c) Implementera (i Java) metoden create! DrawingEditor create(kind:string): Shape 0..* Shape move(dx int,dy int) edit() Framework Supplied by user Circle Square Figure : Ramverk DrawingEditor

Uppgift 5 Följande klass agerar både modell, vy och kontroll (control). public class Switch extends JButton implements ActionListener { private boolean on = false; public Switch() { super( OFF ); addactionlistener(this); public void actionperformed(actionevent e) { on =!on; setlabel(on? ON : OFF ); Gör om designen så att MVC-mönstret används med tre separata klasser med användning av Observerramverket. (a) Lösningen redovisas med Java-kod och skall visa hur och var följande metoder används. public interface Observer { public void update(observable observable, Object object); public abstract class Observable { public void addobserver(observer observer) protected void setchanged() public void notifyobservers() (b) Rita ett fullständigt klassdiagram av lösningen där dina tre klasser finns med, samt klassen Observable och gränssnittet Observer. 6 p Uppgift 6 Grafen i figur 3 visar kapaciteten i ledningarna i ett flödesnätverk. (a) Räkna ut det maximala flödet i nätverket. (b) Beskriv och namnge algoritmen du använder. (c) Visa också hur nätverket kan representeras med hjälp av en matris. A 4 B Start 8 6 Slut C 9 D Figure 3: Flödesnätverk 3

Uppgift 7 Denna uppgift innehåller ett antal deluppgifter, där varje deluppgift har ett påstående och en anledning. För varje deluppgift, svara med ett av följande alternativ: A Både påståendet och anledningen är korrekta uttalanden och anledningingen förklarar påståendet på ett korrekt sätt. B Både påståendet och anledningen är korrekta uttalanden, men anledningen förklarar inte påståendet. C Påståendet är ett korrekt uttalande, men anledningen är ett felaktigt uttalande. D Påståendet är felaktigt, men anledningen är ett korrekt uttalande. E Både påståendet och anledningen är felaktiga uttalanden. Svara inte i uppgiftshäftet, utan skriv ditt svar på ett vanligt lösningspapper. Varje korrekt besvarad deluppgift ger.0 poäng vi vill inte att ni skall chansa, så ni får -0.5 poäng på en deluppgift om ni svarar fel, men aldrig minuspoäng totalt sett på hela uppgift. T T T3 T4 T5 T6 T7 Påstående Javakoden i figur 4 visar ett exempel på mallmetod-mönstret (Template method). Javakoden i figur 4 visar ett exempel på dekoratörsmönstret (Decorator). Det går att bryta mot SRP utan bryta mot DRY och vice versa. Om du har kod som bryter mot LSP bör du överväga om du kan använda delegation, komposition eller aggregering som ett alternativ till generalisering. Det är svårt att göra ändringar i en stel (rigid) design. Genom att använda kompositmönstret bryter man mot SRP. För att tillämpa SAP (Stable-Abstractions)- principen på model-paketet i figur 4 bör man lägga den abstrakta klassen Slot i ett annat paket. Anledning Klassen Slot i figur 4 är en abstrakt klass med två mallmetoder. Subklasserna CommentSlot och ExpressionSlot kan lägga till funktionalitet till en instans av Slot utan att andra instanser av Slot påverkas. En klass kan ha flera ansvar utan att duplicera kod och två klasser kan lösa olika problem på samma sätt. LSP säger att generalisering bör undvikas. En stel design innebär att det finns många beroenden till en klass. Kompositmönstret låter användaren behandla hela samlingar och enskilda objekt på ett enhetligt sätt. Genom att flytta Slot till ett annat paket blir model-paketet mer instabilt 7 p 4

/* Nedan beskrivs 3 klasser som ingår i e t t paket, model. Det finns y t t e r l i g a r e 7 k l a s s e r i detta paket. Paketet är i sin tur e t t av 5 paket i e t t program som hanterar och v i s u a l i s e r a r kalkylark XL. Paketet model har i denna kontext en abstrakthet som är 0. och en i n s t a b i l i t e t som är 0.. Ett 30 tal klasser i andra paket har beroenden t i l l model paketet. */ abstract class Slot { private String slot; private String text; public abstract double getvalue(environment env); public abstract String tostring(environment env); class ExprSlot extends Slot { ExprSlot(String slot, Expr expr){ super(slot, expr.tostring()); this.expr = expr; double getvalue(environment env) { return expr.value(env); String tostring(environment env) { NumberAdjustment adj = new NumberAdjustment(0,); return adj.left(getvalue(env)+ ); public class CommentSlot extends Slot { CommentSlot(String slot, String comment){ super(slot, comment); double getvalue(environment env) { return 0; String tostring(environment env) { String s = gettext(); return s.substring(); Figure 4: Slot 5