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

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

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

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

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

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

Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

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

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

DAT043 Objektorienterad Programmering

TENTAMEN OOP

Objektsamlingar i Java

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

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 Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

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

Tentamen Programmering fortsättningskurs DIT950

Tentamen OOP

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 OOP

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

DAT043 - Föreläsning 7

PROGRAMMERINGSTEKNIK TIN212

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

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

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

Del A (obligatorisk för alla)

Konstruktion av klasser med klasser

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

Föreläsning 9 Innehåll

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

DD1342 Programkonstruktion för F1,

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

Tentamen Datastrukturer, DAT037 (DAT036)

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

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

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

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 Programmeringsteknik I

Objektorienterad programmering D2

Tentamen, EDAA10 Programmering i Java

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

OOP Tentamen

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

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

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

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.

Tentamen i Programmeringsteknik I, ES,

LÖSNINGSFÖRSLAG

Tentamen i Programmering

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

OOP Objekt-orienterad programmering

OOP Tenta

Laboration 1 - Grunderna för OOP i Java

Lab5 för prgmedcl04 Grafik

Java, klasser, objekt (Skansholm: Kapitel 2)

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

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

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

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

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

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

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

Tentamen i Grundläggande programmering STS, åk 1 lördag

TENTAMEN OOP

Objektorienterad Programmering (TDDC77)

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. Länkad lista och iterator

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

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

Föreläsning 13 Innehåll

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

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

Klasshierarkier - repetition

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga.

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Tentamen i Grundläggande programmering STS, åk 1 fredag

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

DAT043 - föreläsning 8

OOP Tentamen

Tentamen i Programmeringsteknik I

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

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

Transkript:

Tentamen DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl 14.00 17.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna kan bli lägre men inte högre): Betyg FX: Betyg E: Betyg C: Betyg A: 22-23 poäng på del I minst 24 poäng på del I Godkänd del I och minst 44 poäng på hela tentan Godkänd del I och minst 56 poäng på hela tentan Betyg FX får kompletteras till C eller A om totalpoängen efter komplettering räcker till C respektive A. Bonuspoäng från labbarna (max 6) läggs till del II-resultatet innan betyget sätts. Skriv gärna flera uppgifter på samma papper men tag nytt papper när du börjar på del II! del I (5p) 1. Nedan följer sju namn på designmönster och därefter fem korta beskrivningar av designmönster. Välj det rätta mönsternamnet till varje beskrivning. Två mönsternamn blir alltså över! Iterator Mediator Observer Proxy Facade Mock Object Singleton A) Ett objekt kontrollerar åtkomsten till ett annat objekt. De båda implementerar samma gränssnitt. B) En enda klass ger ett enkelt gränssnitt till ett komplext system. C) Det går bara att skapa ett enda objekt av en viss klass. D) När tillståndet i ett objekt ändras så uppdateras ett antal andra objekt som "prenumererar" på uppdateringsinformation. E) Man får tillgång till objekt i sekvens, utan att känna till hur de egentligen är organiserade. 1

(9p) 2. 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 som nämns i koden utom ArrayList ska vara med i diagrammet. Långa namn får förkortas om det är helt klart vilket namn som avses, t.ex. AAA för AbstractAnimalAnimator. public interface Animal { public void move(); class Butterfly implements Animal {... class BlueMorpho extends Butterfly {... class LeopardLacewing extends Butterfly {... abstract class AbstractAnimalAnimator { ArrayList<Animal> alist; abstract void initanimator(int n); AbstractAnimalAnimator (int n) { alist = new ArrayList<Animal>(); initanimator(n); public void moveallanimals() { for (Animal a : alist) a.move(); //... fler metoder... class ButterflyAnimator extends AbstractAnimalAnimator { ButterflyAnimator(int n) { super(n); void initanimator(int n) { for (int i=0; i<n; i++){ if (Math.random() > 0.5) alist.add(new BlueMorpho()); else alist.add(new LeopardLacewing()); (1p) 3. Vilket designmönster används av klasserna AbstractAnimalAnimator och ButterflyAnimator i uppgift 2? 2

(4p) 4. Vad är ett ramverk och vad är en komponent i programutvecklinggsammanhang? Ge ett exempel på Java-ramverk och ett exempel på en Java-komponent. (2p) (2p) 5. a Ange minst två karakteristiska drag för agila/lättviktiga metodiker för programutveckling eller ange fyra av XP-reglerna som används inom extreme Programming. 5. b Ange två egenskaper hos Vattenfallsmetoden för programutveckling där denna metod skiljer sig från de lättviktiga metoderna. (2p) 6. a Skriv om följande kodavsnitt kortare och tydligare. for (int i=0; i<5; i++) { if (i==2) c(); else if (i==0) a(); else if (i==1) b(); else d(); (1p) 6. b Inom programutveckling, vad kallas det för när man skriver om och förbättrar ett programavsnitt utan att funktionen ändras? A) Testdriven programutveckling B) Refactoring C) Profilering 7. Antag att följande deklarationer i Java är gjorda: class A {... class B extends A {... (1p) 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, B och Object (1p) 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 Object (2p) 8. 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? 3

del II (4p) 9. Begreppet static är svårt. Markera för A resp. B om den eller de angivna metoderna är static eller ej. Svara på frågan C. A) Metoderna sin och cos i klassen Math (1p). B) Metoden adjustmentvaluechanged i interfacet AdjustmentListener. Metoden implementeras av lyssnare som lyssnar efter händelser i t.ex. JScrollBars. (1p) C) Förklara noga varför följande program inte går att kompilera: (2p) class Fel { int finttal = 1729; public static void main(string[] u) { System.out.println("Fina talet = " + finttal); (3p) 10. Antag att klassen Damspelsmodell är stor och komplicerad och har ca 20 metoder. Klassen Speltestare använder Damspelsmodell vilket antyds i kodsnutten nedan men endast fyra av metoderna i Damspelsmodell anropas av Speltestare. Beskriv begreppet lös koppling mellan klasser. Visa hur man kan ändra på beroendet mellan Speltestare och Damspelsmodell så att de blir just löst kopplade. Använd gärna UML-klassdiagram och/eller programkod i svaret. Ett tydligt svar med bara ord kan dock ge full poäng. class Speltestare { Damspelsmodell modellen; Speltestare (Damspelsmodell dm) { modellen = dm;...... 4

11. Ett filsystem består av filer och kataloger. Kataloger kan innehålla filer och andra kataloger som i sin tur kan innehålla filer och kataloger o.s.v. enligt mönstret Composite. Filer representeras av objekt av klassen File som finns här nedanför. Kataloger representeras av objekt av Directory. Både filer och kataloger har namn som lagras i instansvariabeln name i den gemensamma superklassen FileElement. Observera att File här inte är samma klass som i Java-API:n. Det är inte riktig filhantering i uppgiften och inga referenser till riktiga File ska införas. Använd bara den givna File. abstract class FileElement { String name; Directory parent = null; FileElement (String n) { name = n; public String tostring() { return name; String path() { // metodkroppen är uppgift 11a abstract void add(fileelement fe); abstract void remove(fileelement fe); abstract void printxml(); //lägg ev. till en parameter!!! class File extends FileElement { File (String n) { super(n); void add(fileelement fe) { void remove(fileelement fe) { void printxml() { // lägg ev. till en parameter!!! System.out.println("<FILE>" + name + "</FILE>"); 5

(3p) a. Skriv metoden path() i klassen FileElement. Metoden ska returnera en String med sökvägen från trädets rot till filen eller katalogen. Om filen med namnet Citronsås ligger i katalogen recept som ligger i katalogen hem så ska cs.path() returnera hem/recept/citronsås, förutsatt att cs refererar till filobjektet med name-attributet Citronsås. (12p) b. Skriv klassen Directory för filkataloger enligt mönstret Composite. Ett Directory ska kunna innehålla objekt av Directory och objekt av File. Följande metoder ska finnas i Directory: add för att lägga till ett FileElement objekt (2p) remove för att ta bort ett FileElement objekt (1p) printxml för att skriva ut en XML-version av filsystemet (4p) Om indenteringen (indraget av vänstermarginalen vid utskriften) speglar träddjupet så ges ytterligare (2p). Se exempel på nästa sida! För resten av klassen Directory (instansvariabler, konstruktor) ges (3p). (5p) c. Komplettera klasserna med en metod som söker efter objekt (filer eller kataloger) med ett givet namn. En lista med sökvägar ska returneras. T.ex. om en katalog med namn elevprog finns både under hem/kurser/grupdat/knepigt/ och under hem/kurser/prutt/ så ska metoden returnera en lista : [ hem/kurser/grupdat/knepigt/elevprog, hem/kurser/prutt/elevprog ] Om det sökta namnet bara finns på ett ställe returneras en lista med ett element. Om namnet inte finns alls så returneras en tom lista. Fler exempel finns på nästa sida! Metodhuvud: ArrayList<String> findfiles(string target) Metoden måste gå att anropa för Directory objekt men välj själv i vilka klasser den ska implementeras! Flera möjligheter finns. Några av dessa hjälpmedel kan behövas i b och c: coll.remove(obj) tar bort obj ur samlingen coll coll.add(obj) lägger till obj till samlingen coll coll.addall(collny) lägger till alla element från collny till samlingen coll Operatorn instanceof används så här: obj instanceof A ger true om objektet obj har typen A Perfekt Java-syntas krävs inte för full poäng på någon uppgift! (3p) d. Sökningen i uppgift c söker endast efter exakt överensstämmelse på namnet. Nu vill vi kunna variera sökkriteriet, t.ex. söka efter namn som börjar på, slutar på eller innehåller en viss textsträng eller har någon annan egenskap. Hur kan man ordna så att en enda sökmetod findfiles(...) använder olika jämförelsekriterier vid olika anrop? Fullständig Java-kod behövs inte. Ett svar i bara ord eller lite kod + ord duger bra om det är tydligt. Ange gärna namnet på ett passande designmönster också! Mönsternamnet krävs inte för full poäng men kan kompensera i viss mån för en otydlig beskrivning. Det går bra att svara på den här frågan även om du inte löst något annat på uppgift 11. 6

Exempel till uppgift 11. hem kurser recept Telefonlista Hallonpaj Apelsinkyckling prutt Handledare grupdat elevp knepigt Bahare Simon Info elevp Miriam Lovis Ralf Anrop av path för Ralf ska ge hem/kurser/grupdat/knepigt/elevp/ralf Sökning efter elevp på katalogen hem ska ge listan [ hem/kurser/grupdat/knepigt/elevp, hem/kurser/prutt/elevp ] Ordningen inom listan spelar ingen roll. Sökning efter elevp på katalogen grupdat ska ge listan [ grupdat/knepigt/elevp ] och samma sökning på katalogen recept ger tom lista. Resultatet av printxml() på katalogen grupdat visas här. XML för hela katalogen hem finns på nästa sida. <DIRECTORY>grupdat <DIRECTORY>knepigt <FILE>Info</FILE> <DIRECTORY>elevp <FILE>Lovis</FILE> <FILE>Ralf</FILE> 7

hem kurser recept Telefonlista Hallonpaj Apelsinkyckling prutt Handledare grupdat elevp knepigt Bahare Simon Info elevp Miriam <DIRECTORY>hem <DIRECTORY>kurser <DIRECTORY>prutt <DIRECTORY>elevp <FILE>Bahare</FILE> <FILE>Miriam</FILE> <FILE>Simon</FILE> <FILE>Handledare</FILE> <DIRECTORY>grupdat <DIRECTORY>knepigt <FILE>Info</FILE> <DIRECTORY>elevp <FILE>Lovis</FILE> <FILE>Ralf</FILE> <DIRECTORY>recept <FILE>Hallonpaj</FILE> <FILE>Apelsinkyckling</FILE> <FILE>Telefonlista</FILE> Lovis Ralf 8