Tentamen i Objektorienterad modellering och diskreta strukturer

Relevanta dokument
Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Helsingborg

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

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 i Objektorienterad modellering och diskreta strukturer

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 Helsingborg

Information. Computer

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

Tentamen i Objektorienterad modellering och design Helsingborg

10. Mängder och språk

Lösningar till tentamen i EDAF25

Tentamen Programmering fortsättningskurs DIT950

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Lösningar till tentamen i EDAF25

Grammatik. BNF-grammatik

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

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

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

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

4.7 Observatörsmönstret

Tentamen i Objektorienterad modellering och design

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

12. Relationer och funktioner

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

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

Tentamen i Objektorienterad modellering och design Helsingborg

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

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

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

9. Predikatlogik och mängdlära

Tentamen NOA011 Systemarkitektprogrammet

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

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015

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

LÖSNINGSFÖRSLAG

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

DAT043 Objektorienterad Programmering

12. Relationer och funktioner

Objektsamlingar i Java

TENTAMEN I DATAVETENSKAP

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

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

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

TENTAMEN OOP

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

Laboration 2: Designmönster

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

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

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

Alfabeten, strängar och språk. String

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

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

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

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

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

Programmering för språkteknologer II, HT2014. Rum

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

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

Föreläsning 2. Länkad lista och iterator

Föreläsning 2. Länkad lista och iterator

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

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

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

Tentamen, EDAA20/EDA501 Programmering

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

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

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

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

Designmönster. Kapitel Kommandomönstret

Laboration 2: Designmönster

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

Objektorienterad Programmering (TDDC77)

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

Tentamen i Programmeringsteknik I

Designmönster/Design patterns

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

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

Tentamen NOA011 Systemarkitektprogrammet. 51 poäng

Projekt 2 XL. Observer-mönstret

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

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

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Transkript:

Lunds Tekniska Högskola Datavetenskap Ulf Asklund, Sven Gestegård obertz Tentamen EDAF10 2013 10 24, 8.00 13.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 Följande klass finns i ett program som hanterar medlemmar i en golfklubb. public class Member { public f i n a l s t a t i c int SENIO = 1, JUNIO = 2, ASSIVE = 3 ; private int membership ; private S t r i n g name ; public S t r i n g payment ( ) { switch ( membership ) { case SENIO : return name + den a v g i f t du ska b e t a l a ä r + 3 0 0 0 ; case JUNIO : return name + den a v g i f t du ska b e t a l a ä r + 1 8 0 0 ; case ASSIVE : return name + den a v g i f t du ska b e t a l a ä r + 5 0 0 ; return ; rogrammet bryter mot Open/Closed-principen, då man inte kan lägga till fler typer av medlemskap utan att ändra i metoden payment. a. Gör en bättre design enligt Open/Closed-principen. Använd Template Method-mönstret för att eliminera duplicerad kod i metoden payment. (Strategy-mönstret ska inte användas.) Lösningen redovisas med Java-kod. b. Lösningen enligt (a) gör i detta fall det svårt att byta medlemskap för en existerande medlem. Utgå från grunduppgiften igen och gör en bättre design, men använd denna gång i stället Strategy-mönstret. Eliminera duplicerad kod i payment. Strategy-mönstret gör det möjligt att ändra typ av medlemskap för en medlem genom att ändra dess strategi. Implementera en metod setmembership(parameter) i Member som sätter medlemskapet till önskad typ av medlemskap (bestäms av parametern till metoden som här anges parameter ). Lösningen redovisas med Java-kod. 1

2 Nedanstående är två klasser som, tillsammans med ett huvudprogram, håller reda på ett bankkontos saldo och ett godtyckligt antal alarmnivåer som gör alert när saldot understiger deras limitnivå. package accountmanager ; import java. u t i l. ; public class AccountManager { int s a l d o ; Set<Alarm> alarms = new HashSet<Alarm >(); public void d e p o s i t ( int amount ) { s a l d o += amount ; public void withdraw ( int amount ) { s a l d o = amount ; I t e r a t o r <Alarm> i t e r a t o r = alarms. i t e r a t o r ( ) ; while ( i t e r a t o r. hasnext ( ) ) { Alarm aalarm = i t e r a t o r. next ( ) ; i f ( s a l d o < aalarm. g e t L i m i t ( ) ) { aalarm. a l e r t ( ) ; public void addalarm ( Alarm alarm ) { alarms. add ( alarm ) ; package accountmanager ; public class Alarm { protected int l i m i t ; @Override public int hashcode ( ) { return l i m i t ; public Alarm ( int l i m i t ) { this. l i m i t = l i m i t ; public int g e t L i m i t ( ) { return l i m i t ; public void a l e r t ( ) { // omissions Designen bryter mot principen enkelt ansvar och lokalitetsprincipen. Korrigera detta med användande av Observer-mönstret. De utelämnade kodavsnitten skall lämnas oförändrade. Lösningen ges som Java-kod och skall visa hur och var följande metoder används. public interface Observer { public void update ( Observable observable, Object o b j e c t ) ; public abstract class Observable { public void addobserver ( Observer o b s e r v e r ) protected void setchanged ( ) public void n o t i f y O b s e r v e r s ( ) 2

3 Ett klientprogram använder sig av en kommunikationskanal för att skicka och ta emot textsträngar. public class C l i e n t { protected CommunicationChannel mycc = new FastCommunicationChannel ( ) ; private void send ( S t r i n g t e x t ) { mycc. send ( t e x t ) ; private S t r i n g r e c e i v e ( ) { return mycc. r e c e i v e ( ) ; public interface CommunicationChannel { public void send ( S t r i n g t e x t ) ; public S t r i n g r e c e i v e ( ) ; public class FastCommunicationChannel implements CommunicationChannel { public void send ( S t r i n g t e x t ) { // omissions public S t r i n g r e c e i v e ( ) { S t r i n g t e x t = null ; // omissions return t e x t ; Utöka programmet så att man kan slå på och av loggning av trafiken utan att påverka eventuella inre tillstånd i CommunicationChannel-instansen. Lägg till lämpliga klasser och metoder, samt implementera metoderna public void startlog(db db) och public void stoplog() i Client. Själva loggningen ska ske på en databas som skickas med som parameter till metoden startlog. Databasen har följande gränssnitt: public interface DB { public void appendsent ( S t r i n g t e x t ) ; public void appendeceived ( S t r i n g t e x t ) ; Du kan utgå från att startlog och stoplog används korrekt, t ex inte anropar stoplog två gånger utan startlog emellan. Lösningen ska vara baserad på Decorator-mönstret och presenteras i form av Java-kod samt en instansmodell för tidpunkten då loggning är påslagen. 4 Nedan ges ett klassdiagram för ett system som reglerar ljusnivån i ett rum. Logiken ligger i klassen Controller som genom att öka resp. sänka lampans effekt kan hålla rätt ljusnivå. Aktuell ljusnivå i rummet fås genom att anropa sensorns metod getlux(). lightcontrol Controller +setlevel() Sensor +getlux() Lamp +inc() +dec() 3

rogrammet har en dålig design i det avseende att regulatorn har beroende till den lägre hårdvarunivån bestående av sensorn och lampan. Gör om designen på ett sådant sätt att Controller blir oberoende av dessa klasser. Dela även upp ditt nya system i två paket så att det paket Controller ingår i är oberoende av hårdvarunivån. Lösningen redovisas i form av ett klassdiagram där alla klasser och interface finns med, inklusive sina metoder. Även paketstrukturen ska framgå. 5 State pattern är en utökning av Strategy pattern där strategin kan påverka sin kontext. a Vi vill implementera tillståndsmaskinen start s 0 s 1 enligt state pattern. Implementationen av maskinen ska vara sådan, att den har en metod boolean accepted(), som returnerar true om och endast om maskinen är i accepttillståndet s 1. En sådan implementation ges i nedanstående klassdiagram b c Machine + a() + b() + c() + accepted():boolean sets0() sets1() <<interface>> State handle a(machine) handle b(machine) handle c(machine) isaccept():boolean S0 S1 ita ett sekvensdiagram för ett program som avgör om maskinen accepterar insignalssekvensen <a, b, c> (d v s kör nedanstående kod). Antag att maskinen är i initialtillståndet, s 0, vid anropet av m.a(). Machine m;... m. a ( ) ; m. b ( ) ; m. c ( ) ; boolean r = m. accepted ( ) ; 6 Vi ska nu titta på tillståndsmaskinen i uppgift 5 som språkprocessor a. Ange ett reguljärt uttryck för språket, L(M), som maskinen accepterar. b. Ange alla fyra tecken långa strängar som ingår i L(M). 4

7 Visa { ( ). Svar får ges som bevisträd eller tabell. Som ledning ges skeletten nedan 1 ( ) [ ] [ ] ( ) I 2 3 4 5 6 7 I, 2, 6 8 a. Ange ett predikatlogiskt uttryck (mängdbyggare) som definierar den den sammansatta relationen (<) ; (>) på de naturliga talen (N) b. Låt (< N3 ) och (> N3 ) vara relationerna mindre än och större än på mängden N 3 = {0, 1, 2. Ange vilka element som ingår i den sammansatta relationen 9 Givet en grammatik S ::= T ("#" T)* T ::= V ("@" V)* V ::= LETTE (< N3 ) ; (> N3 ) bygg ett härledningsträd för strängen a # b @ c # d 5

Härledningsregler egler för [ I ] [ E1 ] [ E2 ] egler för [ I ] [ E ] egler för [ I1 ] [ I2 ] [] [ E ] egler för [ 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