Tentamen i Objektorienterad modellering och diskreta strukturer

Relevanta dokument
Tentamen i Objektorienterad modellering och diskreta strukturer

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 design

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och design Helsingborg

Lösningar till tentamen i EDAF25

Lösningar till tentamen i EDAF25

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

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

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

Föreläsning 13 Innehåll

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

Tentamen i Objektorienterad modellering och design

Information. Computer

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

Tentamen i Objektorienterad modellering och design Helsingborg

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

4.7 Observatörsmönstret

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

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

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

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:

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

10. Mängder och språk

Laboration 2: Designmönster

12. Relationer och funktioner

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Projekt 2 XL. Observer-mönstret

Tentamen, Algoritmer och datastrukturer

Laboration 2: Designmönster

Tentamen i Objektorienterad modellering och design Helsingborg

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

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

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

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

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

Tentamen Programmering fortsättningskurs DIT950

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

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

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

Grammatik. BNF-grammatik

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

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

12. Relationer och funktioner

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

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

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

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

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

Lösningsförslag till tentamen

PROGRAMMERINGSTEKNIK TIN212

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

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

TENTAMEN I DATAVETENSKAP

Designmönster/Design patterns

Designmönster. Kapitel Kommandomönstret

Programmering A. Johan Eliasson

9. Predikatlogik och mängdlära

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design. Vad är Objektorienterad modellering?

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

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

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

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

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

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

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

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

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

Objektorienterad Systemutveckling 1 (7,5 hp)

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Föreläsning 15: Repetition DVGA02

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

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA550 DAG: TID: 8:30 12:30

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

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

Kursstruktur. Objektorienterad modellering och diskreta strukturer / design. Vad är Objektorienterad modellering? Programmering utan OMD

HT1 2015, FÖRELÄSNING

LÖSNINGSFÖRSLAG

Classes och Interfaces, Objects och References, Initialization

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

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

Malmö högskola 2007/2008 Teknik och samhälle

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

DAT043 Objektorienterad Programmering

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

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

Repetition av viktiga begrepp inom objektorienterad programmering

Transkript:

Lunds Tekniska Högskola Datavetenskap Ulf Asklund, Sven Gestegård obertz Tentamen EDAF10 2014 10 31, 14.00 19.00 Tentamen i Objektorienterad modellering och diskreta strukturer 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: Diskreta strukturer Andersson: UML syntax Föreläsningsbilderna F01-06.pdf Holm: Java snabbreferens 1 Nedan utdrag ur ett Javaprogram som implementerar ett kalkylark. public class Sheet extends Observable implements Environment { private SlotFactory slotfactory = new SlotFactory(); private Map<String, Slot> map = new HashMap<String, Slot>(); public void clear(string address) { //code omitted public void set(string address, String string) { Slot newslot = slotfactory.build(string); map.put(address, newslot); setchanged(); notifyobservers(); public String tostring(string address) { Slot slot = map.get(address); return (slot == null)? "" : slot.tostring(); public class Editor extends JTextField implements Observer { private String currentaddress; private Sheet sheet; public Editor(Sheet sheet) { this.sheet = sheet; sheet.addobserver(this); public void update(observable observable, Object object) { settext(sheet.tostring(currentaddress)); Environment är ett gränssnitt med metoden tostring(string). JTextField har en metod settext. Observable och Observer enligt nedan. Ni ska i uppgifterna utnyttja er kunskap om Observer-mönstret och det ska framgå av era diagram hur Observer-mönstret fungerar, t ex hur Editorn uppdateras. 1

public interface Observer { public void update(observable observable, Object object); public abstract class Observable { public void addobserver(observer observer) public void setchanged() public void notifyobservers() a. ita ett fullständigt klassdiagram inkluderande bl a associationer, relationer, attribut, metoder och synlighet. b. ita ett sekvensdiagram som visar hela exekveringen av metoden set (i Sheet). De aktuella parametrarna är A1, respektive A2+3. 2 I nedanstående klassdiagram så är execute-metoden i Command abstrakt och implementationen av metoden i Copy respektive Cut nästan identiska. De visar sig skilja sig åt endast på ett ställe i koden. Man bestämmer sig för att ta bort den duplicerade koden genom att (8p) Command {abstract + execute() Copy + execute() Cut + execute() använda Template Method-mönstret. a. ita om klassdiagrammet så som det ser ut efter förändringen. Du får själv namnge ev. nya metoder. Inga nya klasser eller gränssnitt behövs. b. Förklara vad du har gjort. (6p) 2

3 Nedan ett klassdiagram som visar en design gjord för att Application ska kunna hantera figurer (Shape). Två typer av Shape finns, ectangle och Circle. Man har även lagt till subklasser till ectangle och Circle vilka beter sig precis som sin respektive superklass, men dessutom ger trace-utskrift vid anrop av draw. Tanken är att man i Application ska kunna slå på och av trace genom att antingen ha objekt av Trace-klasserna eller av de vanliga klasserna (ectangle och Circle). Application + traceon() + traceoff() Shape {abstract + move() Notera att man genom att anropa traceon och traceoff under exekvering startar resp. slutar loggning av draw. Den koden behöver ni inte skriva som en del av uppgiften, men bör ha i åtanke att det ska gå att implementera. ectangle + tostring():string Tracedectangle Circle + tostring():string TracedCircle public void draw() { System.out.println( draw + super.tosting()); super.draw(); a. Detta är ingen bra design! Man bör i stället använda sig av Decorator-mönstret. Förklara varför. b. ita ett klassdiagram som visar hur lösningen ser ut när Decorator används i stället för nuvarande lösning. Visa även hur Java-koden blir för metoden draw i dekoratorn (med en notisruta i klassdiagrammet på samma sätt som i uppgiften). 4 I följande klass går det inte att förändra formeln för att beräkna avkastningen (revenue) utan att kompilera om klassen. public class Account { private float balance; public float revenue(int days) { float interest = 4.0; return balance*days*interest/365; // other methods omitted Gör om designen med användning av Strategy-mönstret så att man under exekveringen kan byta algoritm för att beräkna avkastningen. Man får förutsätta att algoritmen bara använder beloppet (balance) och antalet dagar (days). Metoden revenue används av andra klasser som man inte kan ändra på. Lösningen redovisas med en modifierad Accountklass, den klass som implementerar algoritmen ovan samt övriga klasser som används i den nya versionen av Account. (3p) (5p) 3

5 ita ett tillståndsdiagram för en fönsterhiss till en bilruta. En motor som öppnar resp. stänger fönstret ska styras (motor=up/down/stop). Insignaler till styrlogiken är: en fjädrande vippbrytare vilken kan tryckas ner i läge Upp eller Ner, men som fjädrar tillbaka till Noll när man släpper den. två givare: en som ger signal när rutan kommit helt upp (Uppe) och en när rutan är helt ner (Nere). När man trycker Upp eller Ner ska rutan stängas resp. öppnas tills man släpper knappen eller rutan stängts resp. öppnats helt. Starttillståndet är att fönsterrutan är stängd (dvs helt uppe). (4p) 6 En av de Morgans lagar säger att ( ). För att visa detta måste man visa härledningen i båda riktningarna. a. Visa, med naturlig härleding, ( ) Ange vilken härledningsregel som använts i varje led Ledning: gör en indirekt härledning med hjälp av E b. Gör härledningen åt andra hållet, ( ), genom att komplettera nedanstående bevisträd ( ) [ ( )] [ ( )] [] Ange vilken härledningsregel som använts i varje led c. Härledningen x. y. (x, y) x. (x, x), x. y. (x, y) [ E ] y. (a, y) x. (x, x) är inte giltig, vilket visas av följande motexempel: Låt x N, y N och (x, y) = x > y [ (a, a)] [ I ] x. (x, x) [ E ] Vilken regel är det som används fel, och varför leder detta till en felaktig slutsats? (6p) 4

7 För två relationer, ρ 1 M 1 M 2 och ρ 2 M 2 M 3 definieras sammansättningen ρ 1 ; ρ 2 = {(a, b) M1 M 3 x M 2. (a, x) ρ 1 (x, b) ρ 2 ) Givet mängderna A = {1, 2, 3, 4, 5, 6, B = {2, 4, 6 och C = {1, 2, 3 och relationerna ρ A B och µ B C där ρ = {(1, 2), (2, 2), (3, 4), (4, 4), (5, 6), (6, 6) µ = {(2, 1), (4, 2), (6, 3), beräkna sammansättningen ρ ; µ. Svara med en mängd. 8 OSIX syntax för utökade reguljära uttryck kan sammanfattas (2p) symbol matchar ------ --------------------------------------------------------------------. ett godtyckligt tecken [ ] ett av tecknen inom klamrarna. T ex matchar [ab] a eller b [^ ] ett tecken som inte finns mellan klamrarna. [^ab] matchar t ex c men inte a eller b ^ början av en sträng. I radbaserade verktyg, första tecknet på en rad. $ slutet av en sträng eller eller (tecknet före) en radbrytning. * föregående element noll eller fler gånger. + föregående element en eller fler gånger. {n föregående element n gånger {n,m föregående element minst n, max m gånger \x om x är en specialsymbol betecknar \x tecknet x i stället för specialsymbolen T ex matchar \{ tecknet {, och \* tecknet * (S T) uttrycket S eller uttrycket T. t ex matchar (b+ c)at bland annat strängarna "bat", "bbat" och "cat" Ange ett reguljärt uttryck för språket av alla Java-kommentarer av formen /* kommentartext... */ Du behöver inte ta någon särskild hänsyn till radbrytningar, men tänk på att tecknet * kan förekomma inuti kommentarstexten. (2p) 5

Härledningsregler egler för [ I ] [ E1 ] [ E2 ] egler för [ I ] [ E ] egler för [ I1 ] [ I2 ] [] [ E ] egler för [ I ] [ I ] [ E ] egler för x. [ I ] x. [ E ] [x\t] egler för [x\t] [ I ] x. x. [ [x\y]] [ E ] i en regel betyder att man har gjort ett (hypotetiskt) antagande 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 inte innehålla några icke upphävda antaganden om x. [ [x\y]] I E får y inte vara en fri variabel i eller förekomma i ett icke upphävt antagande i 6