Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 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 2015 Fredagen den 5 juni 2015 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 Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

Tentamen. DD2385 Programutvecklingsteknik vt Tisdagen den 26 maj 2009 kl Inga hjälpmedel utom penna, sudd och 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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

TENTAMEN OOP

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 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

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

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

Föreläsning 8: Exempel och problemlösning

Objektorienterad Programkonstruktion. Föreläsning jan 2016

TENTAMEN OOP

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

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

DAT043 Objektorienterad Programmering

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

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

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

Tentamen Programmering fortsättningskurs DIT950

Tentamen i Objektorienterad modellering och design Helsingborg

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

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Laboration 1 - Grunderna för OOP i Java

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

Objektorienterad Programmering (TDDC77)

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

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och design

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

PROGRAMMERINGSTEKNIK TIN212

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

DD1342 Programkonstruktion för F1,

OOP Tenta

Föreläsning 13 Innehåll

Tentamen i Algoritmer & Datastrukturer i Java

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

Information. Computer

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

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

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

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

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

Laboration A Objektsamlingar

Konstruktion av klasser med klasser

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

Kopiering av objekt i Java

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

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

Tentamen i Programmering

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

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

OOP Tentamen

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

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

TENTAMEN OOP

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

2D1342 Programkonstruktion för F1, ht 2006

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

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

Instuderingsuppgifter läsvecka 2

Föreläsning 9: Arv och UML

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

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

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

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

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

Föreläsning 15: Repetition DVGA02

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

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

Länkade strukturer. (del 2)

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

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

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

Lab5 för prgmedcl04 Grafik

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Transkript:

Tentamen DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl 10.00 13.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 Högst 3 bonuspoäng från labbarna får räknas på del I. Alla bonuspoäng räknas när betygen C och A sätts. del I Skriv gärna flera uppgifter på samma blad på 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 State Proxy Facade Template Method Strategy A) Ett objekt kontrollerar åtkomsten till ett annat objekt. De båda implementerar samma gränssnitt. B) 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. C) En klass ger ett enkelt gränssnitt till ett komplext system (som kan bestå av många klasser). 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) I en superklass definieras en algoritms huvuddrag. Delar av algoritmen definieras i subklasser eller definieras om i subklasser. 1

(8p) 2. Rita ett UML-klassdiagram som åskådliggör följande klasser och interface. För full poäng måste öppna och slutna pilspetsar användas rätt samt 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 ArrayList ska vara med. står för utelämnad kod. class Doer { ArrayList<Wit> wlist = new ArrayList<Wit>(); void tie(wit w) {wlist.add(w); void untie(wit w) {wlist.remove(w); void tell() { for (Wit w:wlist) w.refresh(); class Head extends Doer { void changestate(int newstate){ mystate = newstate; tell(); int getstate() { public interface Wit { public void refresh(); class Looker implements Wit { Head mydoer; Looker (Head d){ mydoer = d; public void refresh() { class Gazer implements Wit { Head mydoer; Gazer (Head d) { mydoer = d; public void refresh() { (1p+2p) 3. Klassernas namn i uppgift 2 är valda för det ska antydas men inte vara uppenbart vilket designmöster som används. Vilket mönster är det? 1p ges för rätt mönsternamn och 2p för en bra motivering med hänvisning till koden och/eller UML-diagrammet. 2

4a. Beskriv två egenskaper/regler hos utvecklingsmetodiken XP (extreme Programming) som skiljer sig mycket från hur man gör inom Vattenfallsmetodiken. 4b. Ange ytterligare två egenskaper/regler hos XP 5a. Vad blir utskriften från följande program? Svarsalternativ finns efter klassen Athlete. class Question5 { public static void main(string[] u) { Athlete jenny = new Athlete(); Person luke = new Person(); Person ellie = new Athlete(); jenny.activity(); luke.activity(); ellie.activity(); System.out.println(); class Person { void activity() { System.out.print("REST "); class Athlete extends Person { void activity() { System.out.print("RUN "); A) REST RUN RUN B) RUN REST RUN C) RUN REST REST D) REST RUN REST (1p) 5b. Antag att klassdefinitionerna ovan gäller. Om en metod börjar så här static void testm (Person p) Vilket av följande påståenden är FEL? A) Objekt av typ Object kan ges som parameter till testm() B) Objekt av typ Person kan ges som parameter till testm() C) Objekt av typ Athlete kan ges som parameter till testm() 3

6. En klass Point för att representera punkter i XY-planet skrivs. a. Vi vill att två punkter som har samma x-koordinat och samma y-koordinat ska betraktas som samma punkt. T.ex. om man skapar två objekt p1 = new Point(7, 11); p2 = new Point(7, 11); och sätter in båda i en mängd, t.ex. en HashSet så ska antalet objekt i mängden vara ett efter insättningen av de två punktobjekten. b. Dessutom vill vi kunna sortera punkterna. En lista ArrayList<Point> thepoints ska vid ett anrop Collections.sort(thePoints) sorteras m.a.p. x-koordinaten. Hur ska Point skrivas för att anropet ovan ska kunna kompileras och sorteringen utföras korrekt? För att få full poäng måste du visa att du förstår de principer som används i Java för exemplen ovan. Exakt rätt namn på metoder m.m. krävs inte. Javakod krävs inte heller men kan göra det lättare att få svaret tydligt. (3p) 7. Vilka tre av påståendena nedan är korrekta? De påståenden som rör programmering avser förstås Java. Ge exakt tre svar! Om du ger fler än tre svar så räknas de tre första. A) I ett interface kan instansvariabler deklareras. B) JUnit är en Java-utvecklingsmiljö anpassad för att lära små barn programmera. C) En klass kan implementera två interface: class A implements I1, I2 { D) En klass kan ärva från två klasser class A{ class B{ class C extends A, B { E) En klass kan ärva från en klass som i sin tur har ärvt från en klass: class A{ class B extends A { class C extends B { F) Om man vet att int variablerna m och n båda har värdet 17 så kan man vara säker på att uttrycket (n == m) har värdet true. G) Om man vet att String variablerna p och q båda har värdet "PI" så kan man vara säker på att uttrycket (p == q) har värdet true. H) Ramverk är ett samlingsnamn för den kategori designmönster som beskriver objektstrukturer. 4

del II Skriv gärna svaren på frågorna 8-10 på samma papper men tag nytt för fråga 11! 8. Studera klassen Mystery och utskriften från programmet. class Mystery { static int spell; Mystery(int s) { spell = s; public String tostring() { return "" + spell; // "" + is used to enforce the String type, // this is not part of the question public static void main(string[] u) { Mystery m1 = new Mystery(1729); Mystery m2 = new Mystery(666); // *** fråga 8b) *** Mystery m3 = new Mystery(42); System.out.print(m1 + " "); System.out.print(m2 + " "); System.out.print(m3); System.out.println(); // System.out.println(spell); // *** fråga 8c) *** Utskriften blir: 42 42 42 (1p) (1p) 8a. Tre objekt av Mystery med olika indata skapas men alla skrivs ut som 42. Förklara detta! Visa hur klassen ska ändras för att utskriften ska bli 1729 666 42 utan att print satserna ändras. 8b. Om utskrift av objektet m1 görs vid kommentaren i mainmetoden i koden ovan, vilket värde skrivs då ut? 8c. Om mainmetodens sista print sats avkommenteras, kommer programmet ovan att kompileras utan fel? Frågan avser programmet som det står på tentan, inte efter ev. ändring enligt 8a. 9. Vad är polymorfism och vad är dynamisk bindning i objektorienterad programmering? Vilken nytta kan man som programmerare ha av dessa mekanismer? 5

10. En metod som filtrerar en lista ska skrivas. Från en lista med objekt ska en annan lista där elementen uppfyller ett visst villkor skapas. T.ex. Från en lista med heltal, skapa en ny lista med alla udda tal Från en lista med personobjekt skapa en ny lista med dem som är i en viss ålder Från en lista med ord, skapa en ny lista där alla ord är kortare än ett gränsvärde (3p) (3p) 10a. Visa hur problemet löses generellt, inte för de specifika exemplen! 10b. Beskriv hur man gör för att tillämpa lösningen från a på följande specifika fall: Listan innehåller String - objekt och filtreringsvillkoret är att textsträngarna ska vara kortare än n. 11. 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: Håll reda på antalet element som finns i kön. Antalet ska kunna läsas av med en metod. Tänk på att kön inte behöver vara tom när den dekoreras. Dekorering 2: Gör det möjligt att Tömma kön Ta bort alla de element ur kön som uppfyller något villkor. Villkoret ska anges som en metodparameter. Köinterfacet IQueue<E> definierar köns basoperationer och får inte ändras. Kön kan bara hanteras genom sina basoperationer. 11a. 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. 11b. Skriv den abstrakta Decorator klassen enligt mönstret Decorator. 11c. Skriv klassen för konkret Dekorering 1 enligt mönstret Decorator. 11d. Skriv klassen för konkret Dekorering 2 enligt mönstret Decorator. Viktigt för att få full poäng är att mönsteregenskaperna framgår i lösningarna. Men, några poäng kan ges även om du inte behärskar mönstret. Perfekt Java-syntax krävs inte. Tips: Köns basoperationer ska fungera på objekt av dekoratorklasserna! 6