Tentamen i Objektorienterad modellering och diskreta strukturer

Relevanta dokument
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

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

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och diskreta strukturer

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.

9. Predikatlogik och mängdlära

10. Mängder och språk

Information. Computer

Lösningar till tentamen i EDAF25

8. Naturlig härledning och predikatlogik

Lösningar till tentamen i EDAF25

Grammatik. BNF-grammatik

12. Relationer och funktioner

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

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

12. Relationer och funktioner

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

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

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

Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH

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

Tentamen, Algoritmer och datastrukturer

7, Diskreta strukturer

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

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

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

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

PROGRAMMERINGSTEKNIK TIN212

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

Inkapsling (encapsulation)

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

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

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

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

Tentamen i TDDC75 Diskreta strukturer

Objektorienterad Systemutveckling 1 (7,5 hp)

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

Imperativ programmering. Föreläsning 4

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Objektorienterad analys och design

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

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

Teoridel (svaren direkt på lydelsen)

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

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

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

4.7 Observatörsmönstret

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

Algebra och Diskret Matematik A (svenska)

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

Objektorientering. Grunderna i OO

Diskret Matematik A för CVI 4p (svenska)

Tentamen i Objektorienterad modellering och design (OMD) Helsingborg

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

Algebra och Diskret Matematik A (svenska)

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

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

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

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

Föreläsning 5-6 Innehåll

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Chalmers tekniska högskola Datum: kl Telefonvakt: Linnea Hietala MVE480 Linjär algebra S

Objektorienterad programmering, Java, 5p TDBA63

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

Sanningsvärdet av ett sammansatt påstående (sats, utsaga) beror av bindeord och sanningsvärden för ingående påståenden.

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

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

Föreläsning 15: Repetition DVGA02

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

Övningshäfte 2: Induktion och rekursion

Algebra och Diskret Matematik A (svenska)

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design

Övningshäfte 3: Funktioner och relationer

EDAF10: Objektorienterad modellering och diskreta strukturer. EDA061: Objektorienterad modellering och design. Diskreta strukturer.

Tentamen, EDAA10 Programmering i Java

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

Sats. Om t är en rätvinklig triangel så är summan av kvadraterna på kateterna i t lika med kvadraten på hypotenusan.

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

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

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

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

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

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.

kl Tentaupplägg

Design av en klass BankAccount som representerar ett bankkonto

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Objektorienterad analys och design

Föreläsning 13 Innehåll

Chalmers tekniska högskola Datum: kl Telefonvakt: Christoffer Standar LMA033a Matematik BI

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

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Transkript:

Lunds Tekniska Högskola Datavetenskap Ulf Asklund, Sven Gestegård Robertz Tentamen EDAF10 2016 06 03, 14:00 19:00 Tentamen i Objektorienterad modellering och diskreta strukturer Tentamen består av en teoridel om totalt 5 poäng och en problemdel innehållande 7 uppgifter med totalt 33 poäng. Vid bedömningen kommer hänsyn att tas till lösningens kvalitet. UMLdiagram 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. I härledningar får endast de regler som ges på sidan Härledningsregler användas utan bevis. Hjälpmedel: Martin: Agile Software Development Andersson: Diskreta strukturer 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

4 a. Två personer är kusiner om en av den enes föräldrar är syskon till en av den andres föräldrar. Formulera ett predikatlogiskt uttryck för predikatet kusin(x, y) som är sant om (och endast om) två personer, x och y, är kusiner. Använd predikaten S(x, y) : x och y är syskon F (x, y) : x är förälder till y, b. Låt K p beteckna mängden kusiner till en person p. Använd predikatet kusin(x, y) för att formulera ett mängdbyggar-uttryck som definierar mängden K p. c. Predikatet kusin(x, y) definierar en relation på mängden människor. Vilka av egenskaperna symmetrisk, reflexiv och transitiv har denna relation? Motivera ditt svar. Egenskaperna definieras som följer: Låt ρ vara en binär relation på A. ρ är reflexiv om x A. x ρ x ρ är symmetrisk om x, y A. (x ρ y y ρ x) ρ är transitiv om x, y, z A. (x ρ y y ρ z x ρ z) 5 a. Visa, med naturlig härledning, att ( P ) ( P ). Ange vilken härledningsregel som används i varje led. Ledning: Använd I för att härleda implikationerna, och ta hjälp av motsägelsebevis för att visa ( P ) P. b. Gör en härledning som visar {p q r, q s, r s p s Ange vilken inferensregel som använts i varje steg. Ledning: Du kan utgå från följande skelett till bevisträd: p q r s s (4p) 6 I kursen har vi definierat sammansättning av binära relationer (ρ 1 ; ρ 2 ) som ρ 1 ; ρ 2 = {(x, z) A C y B. (x, y) ρ1 (y, z) ρ 2 där ρ 1 är en relation från A till B och ρ 2 en relation från B till C. I matematiken skrivs sammansättningen av funktionerna f och g som f g. Vi har konstaterat att funktioner är relationer, och att vi därför kan utrycka sammansättning av funktioner både med ; och men att ordningen skiljer så att f g = g ; f. Låt f och g vara funktioner på mängden N 10 = {0,..., 9 så att f = {(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)(5, 6), (6, 7), (7, 8), (8, 9) g = {(0, 0), (1, 2), (2, 4), (3, 6), (4, 8) Ange sammansättningen f g på N 10. Svara med en mängd. 7 a. Ange ett reguljärt uttryck för alla decimala heltal, utan onödiga inledande nollor, som innehåller minst en femma (t ex 153, 65535, 5005). b. Ange de strängar med längden 3 tecken som genereras av det reguljära uttrycket a b + c (4p) (2p) (2p) 4

Härledningsregler Regler för P [ I ] P P [ E1 ] P P [ E2 ] Regler för [ I ] P P P [ E ] Regler för P [ I1 ] P [ I2 ] P P R R [] R [ E ] Regler för R P R [ I ] R R [ I ] P P [ E ] P Regler för P x. P [ I ] x. P [ E ] P [x\t] Regler för P [x\t] [ I ] x. P x. P [P [x\y]] [ E ] i en regel betyder att man har gjort ett (hypotetiskt) antagande P för att härleda och att antagandet upphävs (strykes) när man använder regeln. Det hypotetiska antagandet får finnas noll eller flera gånger i beviset av. När man använder I så får beviset av P inte innehålla några icke upphävda antaganden om x. [P [x\y]] I E får y inte vara en fri variabel i eller förekomma i ett icke upphävt antagande i 5

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 control-paketet 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 Vending- Machine. 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 6

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 ; 7

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 ; 8