Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00



Relevanta dokument
Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

Tentamen OOP

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

Övningar Dag 2 En första klass

Objektorienterad programmering i Java

Introduktion till arv

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Kort om klasser och objekt En introduktion till GUI-programmering i Java

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

Laboration 1 - Grunderna för OOP i Java

OOP Objekt-orienterad programmering

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

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

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

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

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

OOP Omtenta

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

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

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

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

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Föreläsning 10. ADT:er och datastrukturer

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

TENTAMEN OOP

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

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

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

Tentamen, EDAA20/EDA501 Programmering

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

Redovisning av inlämningsuppgifter

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

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

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

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Tentamen i Objektorienterad programmering

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

SMD 134 Objektorienterad programmering

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

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

Programmering A. Johan Eliasson

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

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

Tentamen TEN1 HI

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

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

TDDC77 Objektorienterad Programmering

Editering, Kompilering och Exekvering av Javaprogram

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Föreläsning 1 & 2 INTRODUKTION

DAT043 - Föreläsning 7

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

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

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

JAVA Mer om klasser och objektorientering

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

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

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

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

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

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

Objektorienterad programmering

DELPROV 1 I DATAVETENSKAP

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

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

DAT043 Objektorienterad 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.

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

TDDC76 - Programmering och Datastrukturer

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

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

Laboration 10 - NetBeans

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Transkript:

Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del I ska besvaras på för ändamålet lämnad plats i tentamenslydelsen. Frågorna i del II besvaras på separat papper behandla högst en uppgift per sida. Kom ihåg att skriva namn och personnummer på alla inlämnade blad. Skriv tydligt! Betygsgränser: Betyg FX: 17p i del I Betyg E: 20p i del I Betyg D: 20p i del I och 5p i del II Betyg C: 20p i del I och 10p i del II Betyg B: 20p i del I och 15p i del II Betyg A: 20p i del I och 20p i del II Ansvarig: Christian Smith (ccs@kth.se) Lycka till! 1

Del I - ervalsfrågor 1. Nedan följer 8 st beskrivningar av programmeringsproblem. För varje problem, ange det designmönster från listan under problemet som är bäst lämpat att lösa det. Varje problem som försetts med rätt mönster ger 1 p. (8 p) A) Du har ett ertrådat program där trådinterferens gör att du ibland får oväntade (och felaktiga) resultat från de beräkningar som görs. Threadpool Lock Socket Protection Proxy B) Ditt program använder ett stort antal i princip identiska objekt, och får problem med otillräckligt minne. Flyweight Threadpool Prototype Virtual Proxy C) Ditt program blir oacceptabelt långsamt eftersom det interagerar med objekt som nns på en annan dator. Publisher/Subscriber Observer Socket Remote Proxy D) Ditt program blir oacceptabelt långsamt eftersom det tar så lång tid att skapa många likadana instanser av en viss klass. Factory Clone Prototype Virtual Proxy E) Du har stora problem att återanvända din kod, eftersom varje klass innehåller fördenierade referenser till objekt av andra klasser vars metoder den anropar. Factory Observer Interface Builder F) Din kod går alldeles för långsamt eftersom du har delat upp ett stort problem i för många små problem som alla körs i varsin tråd. Flyweight Parallel Proxy Threadpool Lock 2

G) Din kod är svår att uppgradera i efterhand, eftersom du överallt har denierat explicit vilka klasser som skall instansieras. Adapter Prototype Observer Factory H) Ditt program lagrar data i objekt av en viss typ. Programmet går antingen långsamt i uppstarten, när data lagras, eller senare under körningen, när data läses, beroende på vilken typ av objekt du väljer. Det nns ingen specik datastruktur som ger snabb körning i båda fallen. Flyweight Builder Prototype Factory 2. I denna uppgift nns 3 kodlistningar. För varje kodlistning, ange om den går att kompilera utan fel 1. Varje korrekt identierad kodlistning ger 1 p. (3 p) A) public class ClassA { Kompilerar EJ public final int a = 1; public static void main(string[] args){ System.out.println(a); 1 Som referens används kompilatorn javac till Java 7, dvs den som nns som standard i skolans datorsalar 3

B) public class ClassB { Kompilerar private static ClassB myb = new ClassB(); private int a = 1; public static void main(string[] args){ System.out.println(myB.a); C) public class ClassC { Kompilerar private static InnerClassC myinnerc = new InnerClassC(); private int a = 1; public static void main(string[] args){ System.out.println(myInnerC.getA()); public static class InnerClassC extends ClassC{ public int geta(){ return super.a; 4

3. För varje påstående nedan om protected, ange om det är sant eller falskt. 4 korrekta svar ger 2p, 3 korrekta svar ger 1p, 2 eller färre korrekta svar ger 0 p (2 p) A) Nyckelordet protected i Java används för att göra skrivskyddade fält vars värden bara går att läsa, men inte ändras. Falskt B) Inre och nästade klasser är de enda klasser som får deklareras med nyckelordet protected i Java. Sant C) I Java är protected den mest restriktiva åtkomstgraden som man kan ge ett fält eller en metod. Falskt D) Om ett fält har deklareratas med nyckelordet protected så får det endast användas i metoder som också är deklarerade som protected. Falskt 4. För varje påstående om trådar nedan, ange om det är sant eller falskt. 5 korrekta svar ger 4p, 4 korrekta svar ger 2p, 3 korrekta svar ger 1p, 2 eller färre korrekta svar ger 0 p (4 p) A) Trådar har alltid separata minnesareor, och två olika trådar kan inte läsa och skriva samma variabler. Falskt B) I Java är det tillåtet att skapa er trådar än vad man har processorkärnor. Sant C) Nyckelordet synchronized i Java används till att låta trådar vänta på varandra, så att de avslutar samtidigt. Falskt D) Kommandot Thread.join() i Java används för att låta två trådar interagera, genom att lägga ihop deras variabler till samma minnesarea. Falskt E) Threadpool innebär att man skapar ett förutbestämt antal trådar, och låter dessa hämta uppgifter ur en uppgiftskö. Sant 5. För varje påstående om klasser och instanser i Java, ange om det är sant eller falskt. 5 korrekta svar ger 4p, 4 korrekta svar ger 2p, 3 korrekta svar ger 1p, 2 eller färre korrekta svar ger 0 p (4 p) a) En instans kan bestå av era olika klasser. Falskt b) Nyckelordet static används för att deklarera klassvariabler och klassmetoder. Sant c) Nyckelordet abstract används för att deklarera klasser som inte går att instansiera. Sant d) Ett Javaprogram består alltid av minst en klass. Sant 5

e) Det är tillåtet att skriva program i Java som inte skapar några instanser av någon av de klasser det består av. Sant 6. Betrakta följande UML-diagram. För varje bit kod som följer nedan, ange i vilken eller vilka klass(er) och/eller gränssnitt det vore rimligt att hitta den, givet diagrammet. Varje korrekt svar består alltså av en kombination av 0 eller er av namnen {A, B, C, D. Notera att kodbitarna inte behöver vara kompletta rader, utan kan vara en del av en rad, t.ex skulle den hypotetiska kodbiten 'int a' kunna tänkas vara en bit av raden 'static int a2;', och då passat in i A. Du kan dessutom anta att alla variabelnamn är unika, dvs 'a2' refererar alltid till fältet i A, och inte till någon lokal variabel någon annanstans. Varje korrekt svar ger 0.5 p. (4 p) A +a1 : int ~a2 : int B C D +c1 : int +d : int c2 : int implements C private B myb; D implements B A import D.*; a1++ A c1++ ACD c2 += d; extends C D 6

Del II - fördjupningsfrågor Följande uppgifter besvaras på separat papper. 7. A) Vad menas med lös koppling? Varför är det önskvärt? (2 p) B) Vad menas med polymorsm? Hur kan det underlätta när man vill åstadkomma lös koppling? (2 p) C) Hur kan åtkomsttypen för fält och metoder användas för att underlätta när man vill åstadkomma lös koppling? (2 p) 8. Förklara designmönstret Composite. Vad är dess syfte, hur implementerar man det, och vilka fördelar har det (eller nackdelar, om dessa är mer relevanta)? (3 p) 9. En vän ber om hjälp med lite felsökning. Hen skrivit ett program för att skicka enklare textmeddelanden mellan två datorer (ungefär som i projektuppgiften i denna kurs). Man har en ruta A (JTextArea) där man kan skriva in den text som man själv vill skicka. Man har också en separat tråd med en loop som läser vad ens samtalpartner skrivit, från en socket som är ansluten till partnerns dator. Både den text man själv skrivit och den text som partnern skrivs visas i en scrollbar ruta B (en JLabel inom en JScrollPane). Alla nya meddelanden läggs till i slutet på texten i B, så att man kan scrolla upp och se hela konversationen. För det mesta fungerar allt som man vill, men ibland (ytterst sällan) händer det att antingen ett meddelande man själv skrivit eller ett som partnern har skrivit inte läggs till i B, utan att programmet uppvisar några andra fel i övrigt. Vad har vännen troligtvis gjort för fel, och hur kan hen enklast åtgärda det? (3 p) 10. Som ett sommarjobb har du fått i uppgift att skriva ett Java-program för bildbearbetning. Programmet ska fungera som en server, till vilken andra program kan ansluta. De andra programmen ska kunna skicka en bildl och instruktioner om vad som ska göras med bilden, t.ex att ändra upplösning, byta lformat, byta ut alla hundar i bilden mot katter, mm. Din server ska sedan skicka tillbaka en ny bildl, som har bearbetats enligt önskemålen. För att spara tid har du letat på internet efter fri programvara, och hittat ett tiotal olika Java-program som tillsammans kan utföra alla de bildbehandlingsuppgifter som efterfrågas. Dessa program är skrivna av olika personer, håller olika kvalitet, och använder olika API:n. Vissa av dem underhålls väl och kommer regelndet ut med uppdaterade versioner, medan andra eventuellt är övergivna och kan komma att behöva ersättas med nya program så småningom. Din uppgift är till att börja med att skriva den första versionen av programmet, men eftersom du bara är tillfälligt anställd över sommaren vet du inte vem som ska driva det vidare till hösten. 7

Beskriv hur du strukturerar din server. Hur fungerar dess olika delar, och hur kommunicerar de med varandra. Namnge korrekt de designmönster som ingår i strukturen. Motivera varför din lösning är bra. (7 p) 11. Medan många designmönster har som främsta ändamål att göra det lättare för programmeraren, genom att t.ex underlätta kodåteranvändning eller göra det lättare att förstå hur olika klasser ska användas, syftar andra mönster främst till att förbättra det färdiga programmets egenskaper, så att det kan köras eektivare och med färre exekveringsfel. Ange tre designmönster som har som syfte att förbättra programmets körning, och förklara hur. (6 p) 8