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

Relevanta dokument
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. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

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

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

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

Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

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

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

PROGRAMMERINGSTEKNIK TIN212

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

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

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

Objektorienterad Programmering (TDDC77)

TENTAMEN OOP

Tentamen i Objektorienterad modellering och design

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Tentamen i Objektorienterad modellering och design Helsingborg

Objektorienterad Programkonstruktion. Föreläsning jan 2016

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

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

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

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

TENTAMEN OOP

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

OOP Tenta

Föreläsning 13 Innehåll

Tentamen i Objektorienterad modellering och diskreta strukturer

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

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

OOP Tentamen

Tentamen Programmering fortsättningskurs DIT950

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

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

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

Lösningar till tentamen i EDAF25

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

Laboration 2: Designmönster

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

DAT043 - Föreläsning 7

DD1342 Programkonstruktion för F1,

OOP Objekt-orienterad programmering

Laboration 2: Designmönster

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Föreläsning 15: Repetition DVGA02

Objektorienterad Programmering (TDDC77)

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]

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

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

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

Tentamen i Grundläggande programmering STS, åk

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

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

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Klasshierarkier - repetition

Instuderingsuppgifter läsvecka 2

OOP Objekt-orienterad programmering

Laboration 1 - Grunderna för OOP i Java

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

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

OOP Tentamen

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

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

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

Design Patterns. En kort introduktion

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

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

Föreläsning 9: Arv och UML

OOP Omtenta

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

OOP Tentamen

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

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

DAT043 Objektorienterad Programmering

Transkript:

Tentamen DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 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 43 poäng på hela tentan Godkänd del I och minst 55 poäng på hela tentan Bonuspoäng från labbarna (max 5) läggs till del II-resultatet innan betyget sätts. del I Skriv helst flera uppgifter på samma blad på del I! 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 Template Method Strategy A) En klass ger ett enkelt gränssnitt till ett komplext system (som kan bestå av många klasser). B) I en superklass definieras en algoritms huvuddrag. Delar av algoritmen definieras i subklasser eller definieras om i subklasser. C) Ett objekt kontrollerar åtkomsten till ett annat objekt. De båda implementerar samma gränssnitt. D) Man får tillgång till ett antal objekt i sekvens, utan att behöva känna till hur de egentligen är organiserade. E) En del av en algoritm är utbytbar medan programmet kör, ingen omkompilering behövs för att byta. Den utbytbara delen är inkapslad i ett objekt. 1

(7p) 2. Rita ett UML-klassdiagram som åskådliggör följande klasser. För full poäng måste öppna och slutna pilspetsar användas rätt. För full poäng måste multiplicitet anges vid de associationer där det är relevant. Fyllda romber behöver inte användas. Instansvariabler och instansmetoder behöver inte vara med i diagrammet men ev. relationer som ges av variabler och metoder ska ritas ut. Alla klasser som nämns i koden utom String ska vara med i diagrammet. abstract class Currer { String info; Currer (String s) { info = s; String info () { return info; class Acton extends Currer { Acton (String s) { super(s); class Ellis extends Currer { ArrayList<Currer> bell = new ArrayList<Currer>(); Ellis (String s) { super(s); void add(currer c) { bell.add(c); void remove(currer c) { bell.remove(c); String info () { String tmp = info; for (Currer c : bell) { tmp += " " + c.info(); return tmp; 3a. Klassernas namn i uppgift 2 är valda för att dölja vilket designmöster som antyds av klasserna. Vilket designmönster är det? 3b. Vad innebär satsen super(s) som står i konstruktorn till två av klasserna? 2

4. Uppkopplad förbindelse mellan program i Java Ett program som tillåter att andra program kopplar upp sig till det kallas A program. A programmet lyssnar på en viss B på den dator där det kör. Om flera program ska kunna vara uppkopplade samtidigt så skapar A programmet en C för varje anslutare. I varje ände av en uppkopplad förbindelse finns en D. En D har två E objekt och genom (eller på) dem kan information sändas respektive tas emot. Var och en av A, B, C, D, E i texten ovan ska ersättas med ett av orden här nedanför. Välj rätt ord för varje bokstav! tråd exception ip-adress klient socket konsument observer port runnable server subklass ström superklass actionlistener unicode 5a. Vad är testdriven programutveckling? Svara kort! 5b. Hur används testning inom extreme Programming? Svara kortfattat på båda frågorna. 1-2 meningar per fråga kan räcka. 6. Vad är Refactoring inom programutveckling? Svara med högst tre meningar! 7. Beskriv utvecklingsmetodiken Rapid Prototyping. 8. Antag att följande deklarationer är gjorda (och är fullständiga) interface I {... class A {... class B extends A implements I {... Tre metoder deklareras i klassen Test static void X(I x) {... static void Y(A y) {... static void Z(B z) {... Här följer fyra påståenden om aktuella parametrar till metoderna. Ange SANT eller FALSKT för varje påstående A) Objekt av A kan ges som aktuell parameter till X B) Objekt av B kan ges som aktuell parameter till X C) Objekt av B kan ges som aktuell parameter till Y D) Objekt av A kan ges som aktuell parameter till Z 8. Vad är en fabriksmetod? Ange ett exempel på situation då det passar att använda en fabriksmetod. 9. Beskriv kort (2-3 meningar bör räcka) syftet med mönstret Observer. Ange någon tillämpning (t.ex ur Java-API:n eller från kursens föreläsningar) där mönstret är lämpligt att använda. UML behövs inte. 3

del II Skriv gärna alla svar på frågorna 10-12 på samma blad men tag nytt blad för fråga 13! 10. Klassen Treasure nedan är tänkt att följa mönstret Singleton. public class Treasure { private static Treasure thetreasure = new Treasure(); Treasure () { public Treasure gettreasure() { return thetreasure; (6p) 10a. Treasure innehåller två fel. För varje fel, rätta felet och förklara tydligt varför det inte kan bli en Singleton så som klassen är skriven och varför det fungerar efter rättelsen. 10b. I Java finns det ett enklare och säkrare sätt att göra Singletonobjekt än genom att definiera en klass enligt ovan (den rättade). Hur gör man? Javakod behövs inte i svaret. 11. Vilket av föjande påståenden stämmer för en instansmetod i klassen A vars deklaration inleds med synchronized void syncm()? Antag att a refererar till ett objekt av klassen A. A) Under exekvering av a.syncm() kan inga andra metoder i klassen A märkta synchronized anropas. B) Under exekvering av a.syncm() sker en synkroniserad skräpsamling. C) Under exekvering av a.syncm() är objektet som a refererar till låst så att andra trådar inte kan anropa metoder märkta synchronized i objektet a. D) Under exekvering av a.syncm() är objektet som a refererar till låst så att andra trådar inte kan anropa metoden syncm() i a. Ev. andra synchronized-metoder får anropas under låsningen. 12. Vad är polymorfism i objektorienterad programmering? Vad är dynamisk bindning? Ett exempel och UML kan hjälpa till att göra svaret tydligare men krävs inte. 4

13. Mönstret Decorator, dekorera en kö En kö kan beksrivas med följande interface. interface IQueue<E> { public boolean isempty(); public void put(e obj); public E get(); Antag att det finns en klass Queue som implementerar IQueue<String>. Du behöver inte skriva Queue. En abstrakt Decorator klass och två konkreta klasser som dekorerar kön ska skrivas. Dekorering 1: Gör det möjligt att sätta in en lista av objekt i kön och ta ut ett antal objekt på en gång ur kön genom metoderna void putsequence (List<String> list) List<String> getsequence(int n) Dekorering 2: Håll reda på hur lång tid som gått sedan senaste get() eller put() gjordes på kön. Tiden ska kunna läsas av genom en metod och ska skrivas ut i samband med att get() respektive put() utförs. Metoden System.currentTimeMillis() ger antalet millisekunder sedan midnatt 1 januari 1970. 13b. Välj egna namn på dekoratorerna och rita ett UML-diagram över IQueue, Queue, den abstrakta Decorator klassen och de två konkreta dekoratorerna. Diagrammet ska förstås följa standardbeskrivningen av Decorator. 13b. Skriv den abstrakta Decorator klassen enligt mönstret Decorator. (3p) 13c. Skriv klassen för konkret Dekorering 1 enligt mönstret Decorator. 13d. Skriv klassen för konkret Dekorering 2 enligt mönstret Decorator. Det viktiga för att få full poäng på 13b-d är att mönsteregenskaperna framgår i lösningarna. Java-syntaxen behöver inte alls vara perfekt. Tips: Tänk på att basoperationerna ska fungera på objekt av dekoratorklasserna! 5