Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

Relevanta dokument
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 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. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

TENTAMEN OOP

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

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

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

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

DAT043 Objektorienterad Programmering

Objektorienterad Programmering (TDDC77)

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

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

Objektorienterad Programkonstruktion. Föreläsning jan 2016

TENTAMEN OOP

Laboration 1 - Grunderna för OOP i Java

DAT043 - Föreläsning 7

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

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

PROGRAMMERINGSTEKNIK TIN212

Tentamen Programmering fortsättningskurs DIT950

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

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

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

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

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

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

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

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

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

OOP Tenta

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

OOP Objekt-orienterad programmering

Klasshierarkier - repetition

Lösningar till tentamen i EDAF25

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

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 för D, DIT011 Objektorienterad programvaruutveckling för GU

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

LÖSNINGSFÖRSLAG

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

Tentamen, EDAA20/EDA501 Programmering

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

TENTAMEN OOP

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

Arv. Objektorienterad och komponentbaserad programmering

Del A (obligatorisk för alla)

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

Det finns en referensbok (Java) hos vakten 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:

Objektorienterad Programmering (TDDC77)

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 9: Arv och UML

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

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

Konstruktion av klasser med klasser

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

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

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

Tentamen, EDAA10 Programmering i Java

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

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.

Tentamen OOP

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

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

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Instuderingsuppgifter läsvecka 2

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

Repetition av viktiga begrepp inom objektorienterad programmering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

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

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

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

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

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

OOP Tentamen

Tentamen i Programmeringsteknik I, ES,

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Design Patterns. En kort introduktion

Transkript:

Tentamen DD2385 Programutvecklingsteknik vt 2016 Tisdag 7 juni 2016 kl 14.00-17.00 Tillåtna hjälpmedel: Penna, Suddgummi och linjal Maximala betygsgränser: Betyg FX: 23 poäng på del I Betyg E: minst 24 poäng på del I Betyg C: Godkänd del I och minst 43 poäng på hela tentan Betyg A: 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 Lycka till, Ann och Vahid

Del I (5p) 1. Nedan följer åtta namn på designmönster och därefter fem korta beskrivningar av designmönster. Välj det rätta mönsternamnet till varje beskrivning. Tre mönsternamn blir alltså över! Iterator State Proxy Mediator Decorator Template Method Strategy Observer a. I en superklass definieras en algoritms huvuddrag. Delar av algoritmen definieras om i subklasser. b. Ett objekts beteende ändras när dess tillstånd ändras. 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. När tillståndet i ett objekt ändras så uppdateras ett antal andra objekt som prenumererar på uppdateringsinfo. (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. interface Spectator{ public void alert(); class MeasureDevice{ ArrayList<Spectator> spectators=new ArrayList<Spectator>(); public void addspectator(spectator s){spectators.add(s); public void removespectator(spectator s){ public void alertspectators(){ for (Spectator s: spectators) s.alert(); class Thermometer extends MeasureDevice{ double temp; public void settempandalert(double newtemp){ 1 av 7

temp=newtemp; alertspectators(); public double gettemp(){ class Speaker implements Spectator{ Thermometer t; String lasttemp; Speaker(Thermometer t){this.t=t; private String convertdigit2word(double temp){ public void alert(){lasttemp = convertdigit2word(t.gettemp()); class DigitalDisplay implements Spectator{ Thermometer t; double lasttemp; DigitalDisplay(Thermometer t){this.t=t; public void alert(){lasttemp = t.gettemp(); (1p) 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? 4. Betrakta följande kod: class Car{ static int amount; String mark; Car(String m){ mark=m; amount++; public static void main(string[] args){ Car c1 = new Car("BMW"); Car c2 = new Car("Volvo"); Car[] list1=new Car[]{c1; Car[] list2=new Car[]{c1; list1[0].mark = "Tesla"; System.out.println(list1[0]+" "+list2[0]); 2 av 7

public String tostring(){ return mark+":"+amount; a. Vad skrivs ut av programmet? b. Vad är det för skillnad mellan variablerna mark och amount? 5. a. Vilka skillnader finns mellan abstrakta klasser och interface? b. Vad är enum i java? Ge ett exempel. 6. Antag att följande klasser definieras class Person { String name; Person(){System.out.println("UNNAMED"); Person(String name){ this.name=name; System.out.println("PERSON"); private void activity(){ System.out.println("REST"); class Athlete extends Person { public void activity(){ System.out.println("RUN"); class Main{ public static void main(string[] args) { Person miranda = new Athlete("Miranda"); miranda.activity(); a. Main ger kompileringsfel. Vilka 2 saker ska ändras i klasserna Person och Athlete så att klassen Main kan kompileras utan fel. Koden i Main får inte modifieras. b. Åtgärda felen i klasserna Person och Athlete (koden i Main får inte modifieras) så att man får följande utskrift när man kör programmet. Du får inte lägga till eller modifiera några utskriftsatser. PERSON RUN 3 av 7

(4p) 7. Vilka fyra av påståendena nedan är korrekta? De påståenden som rör programmering avser förstås Java. Ge exakt fyra svar! Om du ger fler än fyra svar så räknas de fyra första. a. En metod med modifieraren protected ärvs inte. b. Konstrukturer ärvs inte. c. Klassen A kan implementera klass B endast om klassen B är en abstrakt klass. class A implements B{ abstract class B{ d. interface X extends Y{ är korrekt om Y är interface. e. class X extends Y{ är korrekt om Y är interface. f. Polymorfism är ett problem i objektorienterad programmering som åtgärdas genom att man gör metoder privata, dvs markerar dem som private i koden. g. Anta att p och q är referensvariabler och att (p == q) är false. Påstående: Detta innebär alltid att p.equals(q) också är false. h. En fil som innehåller klassdefinitionen public class A{ måste kallas A.java för att den ska kunna kompilera. i. Ett ramverk i Java innehåller INTE några interface. j. Om man vill kunna köra ett program med kommandot java A då måste klassen A innehålla en metod som heter main definerad med signaturen public static void och har ett argument av typen String[]. 4 av 7

Del II 8. En tråd kan ha något av tillstånden: under körning, färdig för körning, blockerad och död. a. Man får ett fel av typen IllegalThreadStateException när man anropar metoden start hos en tråd som befinner sig i död-tillstånd. Vad är anledningen till detta? Vilka möjliga tillstånd kan en tråd som just befinner sig död-tillstånd byta till? b. En tråd har blockerande tillstånd p.g.a. att tråden väntar på data som ska matas in via tangentbordet. Vilket tillstånd är trådens nästa tillstånd direkt efter att en godtycklig data har matats in via tangentbordet? c. En tråd befinner sig i tillståndet död. Vad händer när man anropar objektets run-metod? (4p) 9. Beskriv LSP (Liskov Substitution Principle) genom ett exempel. (5p) 10. Betrakta följande kod: class CentralFuseBox{ CentralFuseBox theonlyone; CentralFuseBox(){ CentralFuseBox getinstance(){ if (theonlyone==null) theonlyone=new CentralFuseBox(); return theonlyone; Klassdefinition CentralFuseBox kompilerar utan några fel men är ett misslyckat försök till designmönstret Singleton. Vilka krav ställs på en Singletonklass? Utför minimala modifieringar i koden så att CentralFuseBox svarar mot de krav som ställs på Singleton. Koden behöver inte vara trådsäker. 5 av 7

(15p) 11. Inför resan när man packar in sina saker i en resväska är det praktiskt att gruppera saker av samma slag i mindre väskor och förpackningspåsar så att man snabbare finner det man söker i resväskan när man väl behöver det. Väskor kan innehålla saker och andra mindre väskor som i sin tur kan innehålla saker och väskor o.s.v. enligt mönstret Composite. Saker representeras av objekt av klassen Thing som finns nedan. Väskor representeras av objekt av klassen Bag. Både saker och väskor har namn och behållare som lagras i instansvariabelerna name respektive container i den gemensamma superklassen PackItem. Instansvariabeln container ska ange i vilken behållare (Bag) denna PackItem befinner sig. container ska vara null om objektet inte ligger i en Bag. abstract class PackItem { String name; Bag container; //bag som innehåller denna PackItem. PackItem (String n) { name = n; class Thing extends PackItem { Thing(String n) { super(n); Skriv klassen Bag och komplettera klasserna PackItem och Thing enligt mönstret Composite. Ett objekt av Bag ska kunna innehålla objekt av Bag och Thing. Följande metoder ska du definiera som abstrakta eller/och konkreta beroende på vilken klass de placeras enligt mönstret Composite. add() för att lägga till ett objekt av PackItem. remove() för att ta bort ett objekt av PackItem. print() som skriver ut resväskans innehåll med indenteringar som anger packnivån. Se exempel på sidan 7. Metoden ska skrivas enligt mönstret Composite. putinbag() som lägger varje Thing i en extra Bag (kallad Safetybag), överallt där flera objekt av klassen Thing ligger bredvid ett eller flera PackItem (Bag eller Thing) i samma Bag. Se exempel på sidan 7. Metoden ska skrivas enligt mönstret Composite. 6 av 7

Enda tillåtna ändringen av klassen PackItem är att lägga till abstrakta metoder. Du får självklart skriva fler hjälpmetoder i klassen Bag än de som krävs i uppgiften. x instanceof A ger true om objektet som x refererar till har typen A. instanceof kan behövas för att lösa uppgifterna men ska användas med stor försiktighet. Överanvändning av instanceof kan medföra poängavdrag. EXEMPEL Before putting safeteybags Suitcase Jeans Socks Toiletbag Shampoo Smallbag Medicine Emptybag Plasticbag comb After putting safeteybags Suitcase Safetybag Jeans Safetybag Socks Toiletbag Safetybag Shampoo Smallbag Medicine Emptybag Plasticbag comb Perfekt Java-syntax krävs INTE för full poäng på någon uppgift. 7 av 7