Tentamen. DD2385 Programutvecklingsteknik vt Torsdagen den 27 maj 2010 kl Hjälpmedel: penna, suddgummi, linjal

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

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

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

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

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

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

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

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

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

DAT043 Objektorienterad Programmering

Objektorienterad Programkonstruktion

Länkade strukturer. (del 2)

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

Tentamen i Algoritmer & Datastrukturer i Java

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

Tentamen Programmering fortsättningskurs DIT950

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

PROGRAMMERINGSTEKNIK TIN212

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

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

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

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

OOP Tentamen

Trädstrukturer och grafer

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

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

TENTAMEN OOP

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

Tentamen Datastrukturer, DAT037 (DAT036)

Kurskod D0010E Datum Skrivtid 5tim

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Tentamen i Objektorienterad modellering och diskreta strukturer

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Tentamen i Objektorienterad modellering och design Helsingborg

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

Lösningar till tentamen i EDAF25

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Föreläsning 4 Innehåll

Information. Computer

OOP Tentamen

Monday, November 16, Senaste Labben

Objektsamlingar i Java

OOP Tenta

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

TENTAMEN OOP

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

2D1339 Programkonstruktion för F1, ht 2003

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

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

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

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

Föreläsning REPETITION & EXTENTA

Tentamen i Objektorienterad programmering

Lab5 för prgmedcl04 Grafik

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

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

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

Grundläggande programmering med C# 7,5 högskolepoäng

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Tentamen, EDAA20/EDA501 Programmering

Tentamen OOP

Tentamen Datastrukturer (DAT037)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

DEL 1 För att få godkänt på tentan (betyg 3) måste du lösa minst fem av sju uppgifter i denna del.

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

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

DD1342 Programkonstruktion för F1,

Tentamen i Objektorienterad modellering och design

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

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

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

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

2D1342 Programkonstruktion för F1, ht 2006

Transkript:

Tentamen DD2385 Programutvecklingsteknik vt 2010 Torsdagen den 27 maj 2010 kl 9.00 12.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 25 poäng Maximala betygsgränser (gränserna kan bli lägre men inte högre): Betyg FX: 18-19 poäng på del I Betyg E: 20-25 poäng på del I Betyg C/A: 20-25 poäng på del I och 13-20(för C)/21-25(för A) poäng på del II Betyg FX får kompletteras till C eller A om C- respektive A-nivån på del II är nådd på tentan. Bonuspoäng från labbarna (max 6) läggs till del II-resultatet innan betyget sätts. del I (6p) 1. Rita ett UML-klassdiagram som åskådliggör följande klasser och interface. Alla relationer ska vara med. För full poäng måste öppna och slutna pilspetsar samt streckade och heldragna linjer användas rätt. Fyllda romber behöver inte användas. Instansvariabler och metoder behöver inte vara med i diagrammet men ev. relationer som ges av variabler och metoder ska ritas ut. Alla klasser och interface utom ArrayList måste vara med i diagrammet. Långa namn får förkortas om det är helt klart vilket namn som avses. interface Moderator {... interface Wizard {... abstract class AbstractMember { Moderator mymod; AbstractMember (Moderator m) {...... class Member extends AbstractMember {... class PlusMember extends Member implements Wizard {... class GuestMember extends Member {... class Organizer implements Moderator { ArrayList<PlusMember> plusmembers; ArrayList<GuestMember> guests;... class Overseer implements Moderator {... PlusMember chair; ArrayList<Member> members;... 1

2.Vilket designmönster används i uppgift 1? 3. Nedan följer fem korta beskrivningar av designmönster. Välj ut vilken beskrivning somstämmerförvarochenav Template Method Observer Proxy Två beskrivningar blir alltså över! A) Ett objekt kontrollerar åtkomsten till ett annat objekt. De båda implementerar samma gränssnitt. B) En enda klass ger ett gränssnitt till ett komplext system. C) Skjut upp delar av en algoritm till subklasser. D) När tillståndet i ett objekt ändras så uppdateras ett antal andra objekt som prenumererarpå uppdateringsinfo. E) En trädstruktur där löv och sammansatta objekt har samma interface och kan behandlas lika. 4. Vad menas med "Mock Object" och varför är en sådan teknik bra att använda? 5. Ange fyra karakteristiska drag för agila/lättviktiga metodiker för programutveckling eller ange fyra av XP-reglerna som används inom extreme Programming. 6. Förutsätt följande klass- och interface-deklarationer i Java ( insidan är oväsentlig och markeras som...). interface C {... class A {... class B extends A implements C {... a. Vilken eller vilka typer av referenser kan referera till objekt av klassen A? A) endast typen A B) endast typerna A och Object C) endast typerna A och B D) endast typerna A och C b. Vilken eller vilka typer av referenser kan referera till objekt av klassen B? A) endast typen B B) endast typerna B och A C) endast typerna B, A och C D) endast typerna B, A, ochobject E) endast typerna B, A, C och Object 7. Om variabeln a refererar till en Java-objektsamling, t.ex. en ArrayList eller LinkedList, så kan man under vissa förutsättningar få samlingen sorterad genom att anropa metoden Collections.sort(a). Vad måste gälla för att sorteringen ska gå att genomföra? 2

8. Stegtävlingar som motionsaktivitet är populära just nu. Anställda på en arbetsplats delas in i lag, får var sin stegräknare och går och går och går så mycket de orkar och rapporterar varje kväll in dagens antal steg till en server skriven i Java. Ställningen mellan lagen redovisas kontinuerligt på en webbsida. Det lag som först har gått t.ex. hela sträckan från Stockholm till Berlin vinner. Birgit och Cecilia tillhör samma lag och promenerar tillsammans. Birgit går 12536 steg och Cecilia går 11980 steg den 27 maj 2010. De rapporterar in resultaten samtidigt. När båda gjort sina rapporteringar har lagets antal endast ökat med 11980 och inte 24516 som väntat. Vad är det som har hänt och hur ska serverprogammet åtgärdas för att kommande rapporteringar ska bli rätt? Svaret är mycket kortare än frågan. Ett svar med bara ett ord ger 1p (om det är rätt ord förstås). (4p) 9. Skriv om följande lilla programavsnitt så att det blir tydligare men har exakt samma funktion. Kodupprepningen ska elimineras (eller åtminstone minskas) men det finns fler förbättringar att göra. Full poäng kan ges även om svaret innehåller syntaxfel. if (d==1) { else if (d==-1) { else if (d==2) { if (goahead) { else if (d==-2) { if (goahead) { 10. Vad kallas det för när man inom programutveckling förbättrar programkoden utan att den yttre funktionen av programmet ändras? A) Reuniting B) Refactoring C) Resolving 3

del II 11. Uppgiften handlar om en prototyp för spel på en rutindelad spelplan. Prototypen är utan grafik. Klassen Brade innehåller en matris av objekt av klassen Ruta. Klassen Ruta ska ha två instansvariabler av typ int som anger rutans position (koordinater) på brädet, samma tal som indexen i matrisen i klassen Brade. Index-talen anges när man skapar ett objekt av Ruta. Dessutom ska Ruta ha egenskapen att när man skriver ut objekt ska index-talen visas: Ruta rutan = new Ruta(2, 5); Ruta andrarutan = new Ruta(0, 1); System.out.println(rutan + " " + andrarutan); ska ge en utskrift liknande Ruta 2 5 Ruta 0 1. a) Skriv klassen Ruta så att den stämmer med exemplen ovan. Klassen Brade innehåller en metod för att få en iterator horisontellt, vertikalt eller diagonalt över rutorna. Man anger startkoordinater och slutkoordinater och så skapas den rätta iteratorn. Skiss av prototypen för Brade: class Brade{ int n; Ruta[][] rutor; Brade(int n) {... // n*n-matrisen rutor skapas II iterator(int i1, int j1, int i2, int j2) { // Skapar iterator Ruta r1 = rutor[i1][j1]; // från ruta (i1,j1) Ruta r2 = rutor[i2][j2]; // till ruta (i2,j2) return new Iterator(this, r1, r2); Iteratorn kan implementera följande minimi-gränssnitt för iteratorer: Du får använda ett annat likvärdigt interatorinterface. public interface II { public boolean hasnext(); public Ruta next(); Exempel på användning: Brade brade = new Brade(10); II it = brade.iterator(2,6,5,3); while (it.hasnext()) System.out.println(it.next()); ger utskriften Ruta 2 6 Ruta 3 5 Ruta 4 4 Ruta 5 3 4

(13p) b) Skriv klassen Iterator. Kontroller av indata, t.ex. att (i1,j1) och (i2,j2) anger en horisontell, vertikal eller diagonal riktning och håller sig inom brädets storlek behöver inte göras. Iterationen ska kunna göras i åtta olika riktningar: höger vänster, upp, ned och fyra diagonala riktningar. Din lösning måste förstås identifiera vilken riktning det är. Stor vikt läggs vid tydlig och bra struktur. Liten vikt läggs vid att Java-syntaxen är perfekt. Om metoden next() anropas efter att iteratorns slut är nått (hasnext() har givit false) ska iteratorns sista objektet returneras igen. 12. Ett program för glosförhör ska använda engelska och svenska ord. För varje engelskt ord ska ett godtyckligt antal svenska ord (översättningar) kunna lagras, detta utgör en glosa. Ett stort antal glosor ska hanteras av programmet. Glosorna bör lagras med det engelska ordet som nyckel så att när ett engelskt ord är givet ska glosan kunna slås upp mycket snabbt. Det är inte viktigt att glosorna är sorterade eller ens kan sorteras. a) Föreslå ett sätt att representera en enskild glosa samt en stort antal glosor i ett Java-program. Kraven ovan ska uppfyllas. Skissa den eller de nya klasser som ska definieras och visa vilka biblioteksklasser som ska användas. Svaret behöver inte inte ges som fullständiga Java-klasser, t.ex. konstruktorer behöver inte visas. Det går bra att använda pseudokod i svaret, dvs en kombination av programkod och vanlig text. b) De gloslistor som är indata till programmet finns på flera olika format. Dels finns vanliga textfiler med olika principer för hur orden avskiljs och hur glosorna avskiljs och dels finns indatafiler på xml-format. Man ska kunna byta indatafil medan programmet kör. Den del av programmet som läser från fil och bygger upp datastrukturen med glosorna ska vara utbytbar och löst kopplad till själva glosförhöret. Det ska också vara lätt att lägga till nya indataformat. Vilket designmönster bör användas? Visa ett UML-klassdiagram för mönstret och beskriv kortfattat i ord hur det ska tillämpas. Du får skriva Javakod men det behövs inte för att få full poäng. Tag med tre olika indataformat i UML-diagrammet. Obs! Inga detaljer om formaten behöver visas, ge dem bara olika namn. c) Glosprogrammets XML-filer följer följande DTD. <!DOCTYPE Gloslista [ <!ELEMENT Gloslista (Glosa+)> <!ATTLIST Gloslista listid CDATA #REQUIRED> <!ELEMENT Glosa (EngOrd,SveOrd+)> <!ELEMENT EngOrd (#PCDATA)> <!ELEMENT SveOrd (#PCDATA)> ]> Skriv välformad XML-kod enligt denna DTD för en gloslista med minst två engelska ord där åtminstone ett av dem har mer än en översättning. T.ex. har engelska grade betydelserna betyg, klass, sluttning m.m och engelska mark betyder betyg, poäng, märke m.m. 5