Tentamen i Objektorienterad modellering och design

Relevanta dokument
Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och design Helsingborg

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

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design

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

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och diskreta strukturer

Lösningar till tentamen i EDAF25

Lösningar till tentamen i EDAF25

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

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

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

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

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

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

Inkapsling (encapsulation)

Information. Computer

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

4.7 Observatörsmönstret

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

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

Objektorientering. Grunderna i OO

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

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

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

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Examen i 2D1359 & 2D1360 Objektorienterad modellering programmering och analys Tisdagen, 23 Oktober 2001, 14:00-19:00

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

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

Objektorienterad Systemutveckling 1 (7,5 hp)

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

Teoridel (svaren direkt på lydelsen)

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

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

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

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

TDDE10 TDDE11, 725G91/2. Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

Föreläsning 15: Repetition DVGA02

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

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

PROGRAMMERINGSTEKNIK TIN212

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

Tentamen i Objektorienterad modellering och design (OMD) Helsingborg

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

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

TDDD78, TDDE30, 729A Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices

Tentamen, Algoritmer och datastrukturer

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

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Designmönster. Kapitel Kommandomönstret

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

Tentamen, EDA017, Programmeringsteknik för C, E, I och Pi

Imperativ programmering. Föreläsning 4

Om fem stycken :GameObject ligger i vägen för b:bullet så kommer alltid loopen köras fem gånger. Välj ett alternativ

Systemvetarutbildningen och dataekonomutbildningen

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

Objektorienterad programmering, Java, 5p TDBA63

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

7,5 högskolepoäng. Objektorienterad systemutveckling I. Lycka till! /Peter & Petter. Provmoment: Ladokkod: 21OS1B Tentamen ges för:

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Objektorienterad analys och design

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Design av en klass BankAccount som representerar ett bankkonto

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

UML-syntax. Lennart Andersson Datavetenskap, LTH. 20 januari 2013

UML. Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN Åbo, Finland url:

Tentamen i Objektorienterad programmering för ingenjörer (TDBB09) , kl

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

Objektorienterad analys och design

Föreläsning 13 Innehåll

Tentamen i Objektorienterad modellering och design Helsingborg

Objektorientering Användning

Tentamen, EDAA10 Programmering i Java

TENTAMEN I DATAVETENSKAP

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Frågor och svar. Beskrivning: Kaffeautomater att hyra, för Färskbryggt - och Instant kaffe med tillbehör och service. emma.johansson@malmo.

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

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

TENTAMEN OOP

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

" «Observable» DataGenerator" betyder att klassen DataGenerator ärver från den abstrakta klassen Observable.

Fördjupande uppsats i datalogi

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

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

Objektorienterad konstruktion

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

Fyra i rad Javaprojekt inom TDDC32

Föreläsning 5-6 Innehåll

Objektorienterad Programmering (TDDC77)

Sammanfattning och Tentamensinfo Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Introduktion. Byggstenar TDBA

Transkript:

Lunds Tekniska Högskola Datavetenskap Ulf Asklund Tentamen EDA061 2016 06 03, 14:00 18:00 Tentamen i Objektorienterad modellering och design Tentamen består av en teoridel om totalt 5 poäng och en problemdel innehållande 3 uppgifter med totalt 21 poäng. Vid bedömningen kommer hänsyn att tas till lösningens kvalitet. UML-diagram skall ritas i enlighet med UML-häftet. Man får förutsätta att det finns standardkonstruerare i alla klasser. De behöver ej redovisas i lösningar. Hjälpmedel: Martin: Agile Software Development Andersson: UML syntax Holm: Java snabbreferens 1

Teorifrågor Denna del innehåller uppgifter med påståenden och anledningar. För varje uppgift svara med ett av följande alternativ: A Både påståendet och anledningen är korrekta uttalanden och anledningen 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 falsk. D Påståendet är falskt, men anledningen är ett korrekt uttalande. E Både påståendet och anledningen är falska. Det går bra att svara direkt i formuläret. Glöm då inte att lämna in formuläret tillsammans med övriga lösningar. (5p) T1 T2 T3 T4 T5 Påstående Syftet med SRP är att hålla nere storleken på klasserna. Det enda sättet att följa OCP för en klass är genom att definiera subklasser för den. Brott mot LSP kan leda till bräcklig kod. Aggregering är att föredra framför komposition om objektet vars beteende man tänker använda har ett egenvärde utanför objektet som använder det. I observatörsmönstret är observatörer löst kopplade till ett observerbart objekt Anledning Genom att använda SRP sprider man ut funktionalitet över flera klasser. Subklasser kan utöka basklassens beteende utan att man behöver ändra i dess kod. LSP innebär att man ser till att man inte förändrar beteendet hos den basklass man utökar Vid aggregering instansieras det aggregerade objektet oftast i ägarens konstruktor. Det observerbara objektet vet inte något om observatörerna mer än att de implementerar observatörsinterfacet. Svar A,B,C, D,E 2

Problem Ett företag vill utveckla mjukvara för att styra en kaffeautomat som finns tillgänglig för studenter och lärare på Campus. Utvecklingsteamet som har tagit sig an uppgiften har påbörjat design och implementering. Längst bak i tentan finns en bilaga som innehåller: En kort beskrivning av funktionaliteten hos den tilltänkta kaffeautomaten En initial design i form av ett tillståndsdiagram (Fig 2) och ett klassdiagram (Fig 1) Javakod för en av de beskrivna klasserna. 1 Implementera klassen VendingMachine i control-paketet i enlighet med klassdiagrammet och tillståndsdiagrammet i bilagan. VendingMachine delegerar delar av logiken till klassen BeverageBuy som redan är skriven och given i bilagan. Lösningen redovisas med Java-kod. 2 Uppdragsgivaren i föregående uppgift vill ha en mer flexibel design och önskar dels öppna upp för möjligheten att lägga till fler drycker och dels för möjligheten byta ut hårdvaran, i båda fall utan att behöva ändra i control-paketet. Ändra designen så att control-paketet inte längre har beroenden till hardware-paketet. Välj också ett lämpligt mönster som löser problemet med dryckerna. Låt Beverage vara en del av detta mönster istället för en enumtyp. a. Lösningen redovisas med ett fullständigt klassdiagram. För klasserna VendingMachine och BeverageBuy behöver inte metoder och attribut räknas upp. För övriga klasser gäller att all väsentlig information ska finnas med. b. Namnge och motivera ditt val av mönster. c. Vilka metoder i klassen BeverageBuy (se java-kod i bilagan) behöver skrivas om med tanke på förändringen av Beverage? Svara med metodnamn. 3 Nu börjar utvecklingsteamet tänka vidare kring möjliga utvidgningar och får för sig att erbjuda tillbehör till dryckerna. De skissar på ett exempel där extra socker ökar priset på den valda drycken med 2kr och extra mjölk kostar 3kr. Tillbehören kan inte beställas separat utan endast som tillägg till någon av de tre ursprungliga dryckesvalen (kaffe, te eller choklad). Två mönster som kan kombineras för att lösa detta är dekoratör (decorator) och mallmetod (template method). Visa hur. Låt klassen BeverageDecorator vara en dekoratör av klassen Beverage (som då alltså inte kan vara en enum-typ längre). BeverageDecorator innehåller också mallmetoder för de konkreta klasserna Milk och Sugar. Ett objekt av typen Beverage ska kunna tillhandahålla sin totala kostnad cost() och en beskrivning av sig själv getdescription() (d.v.s. en lista över sitt innehåll). Skriv java-kod för klasserna i den beskrivna lösningen (Beverage, BeverageDecorator, Coffee, Tea, Chocolate, Milk och Sugar). (8p) (7p) (6p) 3

Bilaga - VendingMachine Spec: I automaten kan man köpa tre olika sorters varma drycker: kaffe, te eller varm choklad. Kaffet kostar 10kr, choklad kostar 8kr och te kostar 5kr. Automaten har 5 knappar (3 för dryckesval, en för att avbryta köpet och en för att verkställa köpet) Utöver dessa insignaler finns ett myntinkast som läser av värdet på instoppade mynt. Ett normalt köp går till som följer: 1) Kunden stoppar pengar i automaten. 2) Värdet av instoppade mynt visas i automatens display. 3) Kunden väljer dryck. 4) Kunden bekräftar köpet. 5) Drycken serveras. 6) Eventuell växel betalas tillbaks. Kunden kan också välja att avbryta köpet och ska då få alla instoppade pengar tillbaka. Design: Systemet består av två paket: ett paket control som innehåller logiken och ett paket hardware som utgör ett gränssnitt mot hårdvaran. I controlpaketet ansvarar klassen VendingMachine för interaktionen med hårdvaran och delegerar till BeverageBuy att hålla reda på status för en påbörjad beställning. Alla insignaler till maskinen (d.v.s. knapptryckningar och myntinkast) hanteras av klassen Input i kontrollpaketet som i sin tur anropar de publika metoderna i klassen VendingMachine. control BeverageBuy -state: int +insert(double) +select(beverage) +buy() +abort() VendingMachine order -amount: double -selected: Beverage +BeverageBuy(double) +getamount():double +select(beverage) +selectedbeverage(): Beverage +increase(double): Double +buy():double +ispayed():boolean +abort(): Double hardware Display +set(string) BeverageDistributor +dispense(beverage) MoneyHandler +release(double) «enumeration» Beverage Coffee Tea Chocolate Input Figur 1: Klassdiagram kaffeautomat 4

buy[payed]/ dispense selected, release coins Idle abort/ release coins insertcoins(x)/ amount += x abort/ release coins insertcoins(x)/ amount = x select(beverage)/ selected=beverage Selecting do/display selection select(beverage)/ selected=beverage buy[not payed] Paying do/display amount insertcoins(x)/ amount += x Figur 2: Tillståndsdiagram kaffeautomat c l a s s BeverageBuy { p r i v a t e double amount ; p r i v a t e Beverage s e l e c t e d ; p u b l i c BeverageBuy ( double amount ){ t h i s. amount = amount ; p u b l i c Double getamount ( ) { r e t u r n amount ; p u b l i c v o i d s e l e c t ( Beverage bev ) { s e l e c t e d = bev ; p u b l i c Beverage s e l e c t e d B e v e r a g e ( ) { r e t u r n s e l e c t e d ; p u b l i c Double i n c r e a s e ( Double amount ){ t h i s. amount += amount ; r e t u r n t h i s. amount ; p u b l i c Double buy ( ) { s w i t c h ( s e l e c t e d ) { c a s e COFFEE: { amount = amount 1 0 ; c a s e CHOCOLATE: { amount = amount 8 ; c a s e TEA: { amount = amount 5 ; s e l e c t e d = n u l l ; r e t u r n amount ; 5

p u b l i c b o o l e a n i s P a y e d ( ) { double p r i c e = 0 ; s w i t c h ( s e l e c t e d ) { c a s e COFFEE: { p r i c e = 1 0 ; c a s e CHOCOLATE: { p r i c e = 8 ; c a s e TEA: { p r i c e = 5 ; r e t u r n amount >= p r i c e ; p u b l i c Double a b o r t ( ) { double r e l e a s e d = amount ; amount = 0 ; s e l e c t e d = n u l l ; r e t u r n r e l e a s e d ; 6