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 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

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

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

PROGRAMMERINGSTEKNIK TIN212

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

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

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

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 med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

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

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

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

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

Tentamen i Objektorienterad modellering och design

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

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

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

Laborationer, moment 4 5

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

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

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

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

Tentamen i Objektorienterad modellering och design Helsingborg

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Laborationer, moment 4 5

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.

DAT043 Objektorienterad Programmering

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

TENTAMEN OOP

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

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

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

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

Information. Computer

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

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

Tentamen, EDAA10 Programmering i Java

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

Den som bara har en hammare tror att alla problem är spikar

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

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

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

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

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

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

Tentamen i Objektorienterad modellering och diskreta strukturer

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

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

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

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77)

Tentamen ID1004 Objektorienterad programmering October 29, 2013

TDDC77 Objektorienterad Programmering

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

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

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

OOP Tenta

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

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

LÖSNINGSFÖRSLAG TENTAMEN

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

Tentamen OOP

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

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

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Tentamen Programmering fortsättningskurs DIT950

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

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

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) Factory AClass +create():intfac <Interface> IntFac Client vara:aclass varb:intfac setb() +somemethod() varb = vara.create() ImplementationA ImplementationB ImplementationC +somemethod() +somemethod() +somemethod() 2

b) Builder 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) Observer 3

d) Proxy ClientClass AnAbstractClass +dosomething() if(vara==null){ vara=new ConcClass() vara.dosomething() OtherConcClass vara:concclass +dosomething() ConcClass +dosomething() e) Composite 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) Kompilerar EJ public class A{ Aint mya = new A(); static class Asub extends A implements Aint{ interface Aint{ b) Kompilerar 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) Kompilerar EJ public class C{ C myc = new Cint(); static class Csub extends C implements Cint{ interface Cint{ d) Kompilerar public class D{ Dint myd = new Dint(){; static class Dsub extends D implements Dint{ interface Dint{ e) Kompilerar EJ 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) Utskrift: ett heltal 1000. Hypotetiskt sett, men extremt osannolikt, så skulle värdet på a kunna bli större än maxvärdet på en int, och alltså slå runt och bli ett negativt heltal, så svaret ett heltal mellan 2 31 och 2 31 1 är också godtagbart. 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) Utskrift: ett heltal 0, eller ingenting alls. Hypotetiskt sett, men extremt osannolikt, så skulle värdet på a kunna bli större än maxvärdet på en int, och alltså slå runt och bli ett negativt heltal, så svaret ett heltal mellan 2 31 och 2 31 1, eller ingenting alls är också godtagbart. Notera att det utskrivna talet kan vara större än 1000. 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) Utskrift: 0 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) Utskrift: ett flyttal mellan 0.0 och 0.1 bu bu bu bu bu bu bu bu bu bu bu bu bu bu bu 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) Utskrift: -1 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. Sant b) Mönstret Prototype har som främsta syfte att ge snabbare exekvering. Sant c) Mönstret Threadpool har som främsta syfte att motverka deadlock. Falskt d) Mönstret Singleton har som främsta syfte att motverka polymorfism. Falskt e) Mönstret Iterator har som främsta syfte att ge snabbare exekvering. Falskt 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. Sant b) Två olika instanser av samma klass har tillgång till varandras privata fält och metoder. Sant c) protected ger en mer restriktiv åtkomst än package private. Falskt 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. Falskt 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. Sant b) Ett gränssnitt som inte innehåller vare sig metoder eller fält implementeras implicit av alla klasser. Falskt c) Gränssnitt kan inte implementeras av abstrakta klasser. Falskt d) Det är inte tillåtet att använda gränssnitt som returtyp för en metod. Falskt e) Det är inte tillåtet att låta en klass ärva från ett gränssnitt. Sant 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