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

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

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen, EDAA10 Programmering i Java

Tentamen i Programmering

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

Tentamen, EDA501 Programmering M L TM W K V

Tentamen i Objektorienterad modellering och diskreta strukturer

Information. Computer

TENTAMEN OOP

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

Tentamen i EDA011 Programmeringsteknik för F, E, I, π och N

Tentamen i Objektorienterad modellering och diskreta strukturer

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

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

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

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

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

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

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

Föreläsning 13 Innehåll

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

Objektorienterad programmering Föreläsning 5

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

Föreläsning 3-4 Innehåll

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Objektsamlingar i Java

Del A (obligatorisk för alla)

Tentamen EDA501/EDAA20 M L TM W K V

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

Tentamen i Programmeringsteknik I, ES,

OOP Tentamen

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

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

PROGRAMMERINGSTEKNIK TIN212

OOP Objekt-orienterad programmering

Tentamen i Programmeringsteknik I

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

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

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

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

Tentamen, EDAA20/EDA501 Programmering

Tentamen i Grundläggande Programvaruutveckling, TDA548

TENTAMEN I DATAVETENSKAP

DAT043 Objektorienterad Programmering

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

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

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

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

Objektorienterad programmering, Java, 5p TDBA63

Tentamen, Algoritmer och datastrukturer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

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

OOP Objekt-orienterad programmering

Tentamen FYTA11 Javaprogrammering

Tentamen i Programmeringsteknik I

kl Tentaupplägg

Tentamen OOP

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

Tentamen i Objektorienterad modellering och design (OMD) Helsingborg

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Tentamen , Grundläggande programmering i Java

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

Föreläsning 5-6 Innehåll

Programexempel: tärningsspel. Programexempel: tärningsspel Kasta tärning tills etta. Klassen Die Specifikation. Slumptalsgenerator Klassen Random

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

Tentamen i Objektorienterad programmering

Objektorienterad Programkonstruktion. Föreläsning jan 2016

4.7 Observatörsmönstret

Tentamen i Algoritmer & Datastrukturer i Java

ID1004 Laboration 4, November 2012

Presentation av trafiksimuleringsprojektet

Tentamen i Grundläggande Programvaruutveckling, TDA548

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Tentamen, EDA501 Programmering M L TM W K V

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

PROGRAMMERING-Java TENTAMINA

Tentamen. Programmeringsmetodik, KV: Java och OOP. 20 januari 2005

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Lösningar till tentamen i EDAF25

trafiksimulering Intro OU5 trafiksimulering

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

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

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Händelsestyrd simulering. Inledning. Exempel

Tentamen Programmering fortsättningskurs DIT950

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Classes och Interfaces, Objects och References, Initialization

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Lösningar till tentamen i EDAF25

Transkript:

Tentamen i EDAF60 29 oktober 2018 Skrivtid: 14-19 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/blått/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: Andersson: UML syntax Holm: Java snabbreferens 1

Uppgift 1 Vi vill i denna uppgift att du kortfattat beskriver ett antal begrepp som förekommer i kursen. Vi kommer bara att läsa de 32 första orden i dina beskrivningar den detaljnivå som vi är ute efter går att beskriva i färre ord än så. (a) För var och en av SOLID-principerna: skriv först principens fullständiga namn, och därefter en beskrivning på högst 32 ord. 2,5 p (b) Beskriv begreppet cohesion i högst 32 ord. En god design har söker i ditt svar). (c) Beskriv begreppet coupling i högst 32 ord. En god design har söker i ditt svar). (d) Beskriv begreppet DRY i högst 32 ord. cohesion (skriv adjektivet vi 0.5 p coupling (skriv adjektivet vi 0.5 p 0.5 p 2

Uppgift 2 För en uppgift väldigt lik den Computer -uppgift som ingår i kursen har en design med följande klassdiagram tagits fram. En del av programmets Java-kod ser ni nedan: Memory memory = new Memory(...); ProgramCounter pc = new ProgramCounter(); Address n = new Address(4); Instruction instruction = new Add(new LongWord(1), new LongWord(2), n); instruction.execute(memory, pc); Rita ett sekvensdiagram för execute-anropet på sista raden ovan. Utnyttja att ni vet att lösningen följer de mönster och principer ni lärt er i kursen. 3 p 3

Uppgift 3 I Computer-uppgiften kan vi ha ett Word-interface med följande specifikation: interface Word { void add(word left, Word right); void mul(word left, Word right); void copy(word other); boolean equals(word other); String tostring(); Med detta interface kan vi skriva c = a + b på följande sätt (där vi antar att a, b och c alla är något slags Word-objekt som redan har skapats): c.add(a, b); För att skapa Word-objekt har vi: interface WordFactory { Word word(string s); Vi vill nu ha en Word-klass, BooleanWord, som representerar logiska värden för dessa gäller: De kan ha det logiska värdet true eller false. Addition motsvarar logiskt eller (så a + b blir true om a eller b är true ). Multiplikation motsvarar logiskt och (så a b blir true om både a och b är true ). För att skapa ett BooleanWord med det logiska värdet false skickar vi in strängen 0 till vår BooleanWordFactory, alla andra strängar representerar det logiska värdet true. Metoden tostring() returnerar strängen True om värdet är true, och False annars. Klasserna BooleanWord och BooleanWordFactory skall ligga i samma paket. (a) Implementera klassen BooleanWord (den måste implementera Word ovan). (b) Implementera klassen BooleanWordFactory (den måste implementera WordFactory ovan). 3 p 1 p 4

Uppgift 4 (a) Skriv ett paket som implementerar Javas Observer/Observable-mönster. Du behöver inte kunna ta bort observers, inte hantera synkronisering, etc, det räcker att du implementerar de metoder i mönstret som du kommer att behöva använda i uppgift (b) nedan. Du behöver inte ha exakt rätt namn på alla metoder. (b) Vi har ett antal rörelsedetektorer och ett antal alarm, och vill att alla alarm skall starta om någon av detektorerna upptäcker att något rör sig. Från början har vi klasserna och class MotionDetector { public void motiondetected(double distance, double angle) { //... lägg in din egen kod här... class Alarm { public void start() { //... startar alarmet... I MotionDetector kommer motiondetected-metoden att anropas automatiskt från hårdvara, så snart någon rörelse upptäcks du får själv gärna lägga till kod i metoden. I Alarm kommer metoden start() att starta alarmet. En tredje klass, SurveillanceSystem, används för att knyta samman detektorer och alarm, den skall ha åtminstone följande metoder för att registrera detektorer och alarm: class SurveillanceSystem { public void add(motiondetector detector) { //... lägg in din egen kod här... public void add(alarm alarm) { //... lägg in din egen kod här... De båda add-metoderna registrerar nya detektorer och alarm, de kan anropas i vilken ordning som helst. Använd Observer/Observable-mönstret för att se till att alla alarm startar när en rörelse upptäcks av någon detektor vi behöver inte bekymra oss för hur alarmen skall stängas av. Du får ändra fritt i klasserna ovan, låta dem utvidga klasser och implementera interfaces, men klasser och metoder som deklarerats skall finnas kvar och användas som beskrivet ovan. För full poäng på uppgiften vill vi att du använder Observer-mönstret för hantera så mycket som möjligt av övervakningen, men du kan få poäng även om du fuskar lite gör så gott du kan. 3 p (c) Rita ett fullständigt UML-klassdiagram över samtliga klasser i lösningen till (b), inklusive dem i Observer/Observable-mönstret. 5

Uppgift 5 Vi vill göra simuleringar, och vill kunna använda olika slags reella slumptal i dessa simuleringar vi har följande interface för våra slumptalsgeneratorer: interface RealRandom { double next(); och ett annat interface för simuleringarna (varje simulering använder bara ett slags slumptal): interface Simulation { void run(realrandom rng); Vi kommer i uppgiften även att behöva använda en enkel databas med interfacet: interface DB { void addsample(double sample); (a) Implementera en klass NormalRandom som genererar normalfördelade slumptal med ett givet medelvärde och en given standardavvikelse, och en klass UniformRandom som genererar rektangelfördelade slumptal med givna min- och max-gränser. Båda klasserna skall implementera RealRandom-interfacet, och deras parametrar (medelvärde och standardavvikelse, eller min- och max-värde) skall anges när man skapar slumptalsgeneratorerna. I standardklassen Random finns två användbara metoder: class Random { double nextdouble(); double nextgaussian(); För dessa gäller följande: - nextdouble() ger ett rektangelfördelat tal r u i intervallet 0 r u < 1. - nextgaussian() ger ett normalfördelat tal r n med medelvärdet 0 och standardavvikelsen 1. Man kan göra om sådana till till ett givet medelvärde, µ, och en given standardavvikelse, σ, genom att multiplicera med standardavvikelsen och addera medelvärdet (r n σ + µ). (b) Vi vill nu kunna studera de slumptal som genereras vid en simulering, utan att vi behöver ändra någonting i slumptalsklasserna eller simuleringsklasserna. Vi vill i första hand kunna göra följande (inte nödvändigtvis båda samtidigt): beräkna medelvärde och standardavvikelse för de värden som använts vid en simulering, och spara alla värden som använts vid en simulering i en databas (DB i beskrivningen ovan). Skriv klasser för att lösa dessa båda uppgifter, vi vill ha en klass för vardera uppgift använd lämpliga mönster från kursen. Standardavvikelsen s för en följd x 1,..., x n kan räknas ut som (x 2 i s = ) n m2, n 1 där (x 2 i ) är summan av kvadraterna på talen, och m är medelvärdet av talen. Du får själv definiera lämpliga metoder i dina klasser, men de skall vara så enkla som möjligt att använda. Skriv även programrader som kör simuleringen BigBangSimulation med rektangelfördelade slumptal i intervallet 0 r < 4, och sedan skriver ut medelvärde och standardavvikelse av de slumptal som använts i simuleringen. 3 p (c) Förklara vilka mönster från kursen du har använt i din lösning förklara också var de förekommer i lösningen. 6