Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Relevanta dokument
Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Objektorienterad Programkonstruktion. Föreläsning jan 2016

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

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

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

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

PROGRAMMERINGSTEKNIK TIN212

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

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

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

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

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

Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

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

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

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

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

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

Laborationer, moment 4 5

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

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

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

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

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

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.

Laborationer, moment 4 5

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

Tentamen i Objektorienterad modellering och design

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 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA550 DAG: TID: 8:30 12:30

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

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

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

DAT043 Objektorienterad Programmering

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

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

Tentamen i Objektorienterad modellering och design Helsingborg

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

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

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

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

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

Objektorienterad mjukvaruutveckling. 15 högskolepoäng. TentamensKod: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Objektorienterad Programmering (TDDC77)

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

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

Tentamen, EDAA10 Programmering i Java

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

TENTAMEN. Objektorienterade applikationer CHALMERS. 2018/2019, lp 3 DAT055. Uno Holmer

Information. Computer

Concurrency Saker händer samtidigt. Process En instans av ett program

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

TENTAMEN OOP

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

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

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

OOP Tenta

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

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

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

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

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

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

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

Tentamen Programmering fortsättningskurs DIT950

OOP Omtenta

Generisk klass med typparameter Inre klass - ListIterator

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

Objektorienterad Programmering (TDDC77)

Exempel på användning av arv: Geometriska figurer

Laboration 2: Designmönster

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Tentamen i Objektorienterad modellering och diskreta strukturer

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

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

OOP Tentamen

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Transkript:

Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 Tentamen 2016 06 11, kl. 9.00 12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna besvaras på separat papper. För del I kan flera frågor behandlas på samma blad, men behandla högst en uppgift per sida i del II. 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 - flervalsfrågor 1. I denna uppgift finns 5 uppsättningar UML-diagram. Generiska namn används i stället för de mer vanliga namn som avslöjar vilket mönster det är. För varje diagram, ange det designmönster som bäst beskriver det. Välj från listan nedan. Varje korrekt angivet designmönster ger 1 p. (5 p) MVC Singleton Adapter Proxy Composite Flyweight Threadpool Lock Observer Factory Builder Prototype Facade Socket a) AClass +create():intfac <Interface> IntFac Client vara:aclass varb:intfac setb() +somemethod() varb = vara.create() ImplementationA ImplementationB ImplementationC +somemethod() +somemethod() +somemethod() 2

b) SomeClass par:params +setpar() +updatepar() +changepar() +get():aclass Client vara:someclass varb:aclass AClass +AClass(Params) return new AClass(par) setb() vara=new SomClass() vara.setpar(); vara.changepar(); vara.updatepar(); varb = vara.get(); c) 3

d) ClientClass AnAbstractClass +dosomething() if(vara==null){ vara=new ConcClass() vara.dosomething() OtherConcClass vara:concclass +dosomething() ConcClass +dosomething() e) 4

2. Här följer 5 st kodlistningar i Java 1. För varje kodlistning, ange om den går att kompilera eller inte. Anta att varje klass X finns i en fil som heter X.java, och kompileras med kommandot javac X.java. (5 p) a) public class A{ Aint mya = new A(); static class Asub extends A implements Aint{ interface Aint{ b) public class B{ Bint myb = new Bsub(); static class Bsub extends B implements Bint{ interface Bint{ 1 För tydlighets skull anses här Java 8 som finns i skolans datasalar 5

c) public class C{ C myc = new Cint(); static class Csub extends C implements Cint{ interface Cint{ d) public class D{ Dint myd = new Dint(){; static class Dsub extends D implements Dint{ interface Dint{ e) public class E{ Esub mye = new E(); static class Esub extends E implements Eint{ interface Eint{ 6

3. Här följer 5 st kodlistningar i Java 2. För varje kodlistning, ange vad den skriver ut. Om den inte ger en deterministisk utskrift, ange vad som är möjliga utskrifter, t.ex programmet skriver antingen ut talet 5 eller ingenting alls eller ett heltal mellan 1 och 9. Anta att varje klass X finns i en fil som heter X.java, och kompileras med kommandot javac X.java, och körs med java X. (5 p) a) public class A{ private static int a = 0; Thread mythread = new Thread(new Asub()); mythread.start(); while(a<1000){ System.out.println(a); static class Asub implements Runnable{ public void run(){ while(true){ a++; 2 För tydlighets skull anses här Java 8 som finns i skolans datasalar 7

b) public class B{ private static int b = 0; public static void main(string[] args) throws InterruptedException{ Thread mythread = new Thread(new Bsub()); mythread.start(); if(b>=1000){ mythread.join(); System.out.println(b); static class Bsub implements Runnable{ public void run(){ while(true){ b++; 8

c) public class C{ int c = 0; static double cd = 0; C myc = new C(); int c = 2; myc.inc(); System.out.println(myC.c); private void inc(){ c += cd++; 9

d) public class D{ D myd = new Dsub(); myd.printd(0.1); private static void printd(double d){ System.out.println(d*Math.random()); static class Dsub extends D{ private static void printd(double d){ System.out.println((int)(d*Math.random())); e) public class E{ try{ System.out.println(args[0]); catch(exception e){ System.out.println("-1"); 10

4. För varje påstående om designmönster, 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) Mönstret Factory är ett sätt att åstadkomma lös koppling. b) Mönstret Prototype har som främsta syfte att ge snabbare exekvering. c) Mönstret Threadpool har som främsta syfte att motverka deadlock. d) Mönstret Singleton har som främsta syfte att motverka polymorfism. e) Mönstret Iterator har som främsta syfte att ge snabbare exekvering. 5. För varje påstående om åtkomst i Java, 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) En inre klass har tillgång till fält och metoder som deklarerats som private i den omgivande klassen. b) Två olika instanser av samma klass har tillgång till varandras privata fält och metoder. c) protected ger en mer restriktiv åtkomst än package private. d) Ett fält som deklarerats som static i klass A kan inte ändras från instanser av klass B, som ärver från A. 6. För varje påstående om gränssnitt 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) Om klassen A ärver från klassen B, och B implementerar gränssnittet C, så kan man alltid anta att A också implementerar C. b) Ett gränssnitt som inte innehåller vare sig metoder eller fält implementeras implicit av alla klasser. c) Gränssnitt kan inte implementeras av abstrakta klasser. d) Det är inte tillåtet att använda gränssnitt som returtyp för en metod. e) Det är inte tillåtet att låta en klass ärva från ett gränssnitt. 11

Del II - fördjupningsfrågor Följande uppgifter besvaras på separat papper. 7. Förklara följande begrepp: polymorfism, lös koppling och designmönster. (3 p) 8. Vad är en profilerare? När, hur och varför används den? (3 p) 9. Det har visat sig att i den version av Java som finns på ditt företags nya serie av smarta kameradrönare så saknas en massa funktionalitet, och av licensskäl kan ni inte använda existerande externa bibliotek. Du får i uppgift att skriva ett bibliotek för kartläggning och positionsberäkningar. Ditt bibliotek ska stödja sparade trajektorier 3 av godtycklig storlek, samt ett stort antal olika operationer, som t.ex avståndsberäkningar, areaberäkningar, hastighetsuppskattningar, samt geometriska beräkningar av kamerapositioner, vinklar och så vidare. Din uppdragsgivare säger att beräkningsprestanda inte är viktigt, eftersom man räknar med att kunna licensiera ett effektivt bibliotek till generation två av produktserien när de mer krävande funktionerna skall lanseras, men man vet ännu inte vilket bibliotek det kommer att bli. Man behöver dock ett fungerande bibliotek för stunden, för att funktionaliteten i generation ett ska bli komplett. Beskriv hur du tänker när du utformar ditt bibliotek. Hur representerar du datatyperna? Hur gör du med klasshierarkier? Vilka designmönster kan vara tillämpliga, och hur? Vad bör du tänka på inför framtiden? (7 p) 10. Vad är designmönster, och hur skiljer de sig från algoritmer? Är det nödvändigt att vara expert på båda två för att skriva bra objektorienterade program? Motivera! (2 p) 11. En vän har kontaktat dig och bett om hjälp med ett problem i Java-kod som hen har skrivit. Hen har skrivit ett program med ett GUI gjort i Swing, med bland annat ett par JButton-knappar som heter start respektive stop. När man trycker på start -knappen så startar en animation av en lavalampa i ett fönster, men det går inte att stoppa med stopp -knappen, eftersom programmet inte längre bryr sig om några knapptryckningar alls efter att man tryckt på start. Alla andra knappar, som t.ex de som byter färg, tänder/släcker lampan eller som sparar bildfiler av hur lampan ser ut, fungerar i övrigt, så länge man inte startar animationen. Du har inte tid att titta igenom källkoden just nu, men ska ändå ge en trolig förklaring till vad som är felet och hur vännen bäst löser det. (4 p) 12. Hur fungerar designmönstrena Flyweight och Prototype? Vilka likheter har de, och vilka skillnader? Hur kan man implementera dem? Rita en UML och förklara! (6 p) 3 En trajektoria består av en serie positions- och riktningsangivelser, som uppdateras löpande, med upp till hundra nya värden i sekunden 12

13