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 FACIT. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Tentamen Programmering fortsättningskurs DIT950

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

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

Laboration 2: Designmönster

PROGRAMMERINGSTEKNIK TIN212

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 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

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

Laboration 2: Designmönster

Tentamen i Objektorienterad modellering och design

Objektorienterad Programmering (TDDC77)

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

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

LÖSNINGSFÖRSLAG TENTAMEN

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

Tentamen i Objektorienterad modellering och design Helsingborg

DAT043 - Föreläsning 7

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

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

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

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.

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

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

Laborationer, moment 4 5

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

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

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

Objektorienterad Programkonstruktion. Föreläsning dec 2015

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

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

Tentamen i Objektorienterad modellering och design Helsingborg

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

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Designmönster/Design patterns

Laborationer, moment 4 5

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

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

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

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

Information. Computer

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

Tentamen för TTIT71 Programmering kl Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

LÖSNINGSFÖRSLAG

Konstruktion av klasser med klasser

Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll

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

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

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

Objektorienterad Programmering (TDDC77)

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

Lösningsförslag till exempeltenta 2

Tentamen i Objektorienterad modellering och diskreta strukturer

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Design Patterns. En kort introduktion

Transkript:

Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 Tentamen 2014 05 23, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del I kan 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 - flervalsfrågor 1. I denna uppgift finns 6 kodexempel. För varje kodlistning, ange det designmönster som bäst beskriver det. Välj mönster från listan nedan. Varje korrekt angivet designmönster ger 1 p. Notera att för att det ska bli överskådligt är koden inte nödvändigtvis komplett eller kompilerbar, utan illustrerar koncept. (6 p) MVC Singleton Adapter Proxy Composite Flyweight Threadpool Lock Observer Factory Builder Prototype Facade Socket a) public class PatternA{ private static PatternA vara = new PatternA(); private PatternA(){ public static PatternA geta(){ return vara; b) public class PatternB implements Cloneable{ private static PatternB varb = new PatternB(); private PatternB(){ doheavyinitialization(); public static PatternB getb(){ return varb.clone(); 2

c) public class PatternC extends SomeClass{ private OtherClass oc = new OtherClass(); @Override public float getc(){ return (float)oc.getdoublec(); d) public class PatternD{ private int d = 0; private List<SomeType> mylist = new LinkedList<SomeType>(); public void incd(){ d++; dosomething(); public void add(sometype t){ mylist.add(t); public void dosomething(){ for(sometype t : mylist){ t.somemethod(d); e) public class PatternE extends AbstractSuperClass{ private AbstractSuperClass oc = new OtherClass(); public void dostuff(){ if(userhasaccessrights()){ oc.dostuff(); 3

f) public class PatternF{ MyType1 myobject1; MyType2 myobject2; public PatternF(){ myobject1 = null; myobject2 = null; public void setobject1(object o){ myobject1 = new MyType1(); myobject1.dosomeinitialstuff(o); public void modifyobject1(object o){ myobject1.dosomeshallowstuff(o); public void setobject2(object o){ myobject2 = new MyType2(); myobject2.dosomeinitialstuff(o); public void modifyobject2(object o){ myobject2.dosomedeeperstuff(o); public mytype3 gettype3(){ mytype3 myoutputobject = new mytype3(this); return myoutputobject; 4

2. Nedan följer 4 kodexempel. Vi antar att klasserna A och B och gränssnittet Bint ligger i separata filer, i underkatalogen AB. För varje rad i metoden testmethod() i klassen X, ange om den är korrekt eller om den ger upphov till kompileringsfel. Varje korrekt klassifierad rad ger 0.5 p (4 p). package AB; public class A{ public int myint = 1; private double mydbl = 1.2; protected Bint mybint = new B(); public void dostuff(){ myint++; private void doprivstuff(){ mydbl *= -1.0; ------------------------------------------------ package AB; public class B extends A implements Bint{ float myflt = 1.4f; private String mystr = "Putte"; public void dobstuff(){ myflt += 5; public void dostuff(int a){ myflt += a; ------------------------------------------------ package AB; public interface Bint{ public void dobstuff(); 5

import AB.*; public class X extends A{ float myflt = 1.4f; private String mystr = "Hello World!"; private B myb = new B(); public void dostuff(){ myint += 5; public void TestMethod(){ mybint.dostuff(); super.myint = (int)myflt; mydbl = 2.1; myb.mystr = mystr; myb.dostuff((int)myb.mydbl); myb.myflt = 0.4f; myb.dobstuff(); super.doprivstuff(); 6

3. För varje påstående om arv i Java 1, 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) Abstrakta klasser kan ärva från gränssnitt. b) Ett gränssnitt kan ärva från flera andra gränssnitt. c) Det går inte att ärva från en klass deklarerad med nyckelordet static. d) Det går att göra klasser som man varken kan instansiera eller ärva från. e) Man kan skapa abstrakta klasser som inte ärver från Object. 4. För varje påstående om nästade klasser, 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 nästad klass har tillgång till alla fält och metoder i den omgivande klassen, inklusive de som deklarerats som private. b) En anonym subklass i en klass B kan instansieras från en annan klass A om både A och B ligger i samma paket. c) Statiska nästade klasser kräver en instans av den omgivande klassen för att instansieras. d) En nästad klass ärver alltid från den omgivande klassen. 5. För varje påstående om designmönster 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 0p (4 p) a) Det främsta syftet med Singleton är att minska minnesanvändning. b) Threadpool kan användas för att minska overhead i parallella program. c) Thread Interference är ett problem som man ofta kan undvika med Lock. d) Ett vanligt mål med att använda Observer är att åstadkomma lösare koppling mellan olika klasser. e) En Adapter är ett specialfall av Proxy 1 Vi avser Java version 6 eller 7, som har använts i kursen, och inte den i mars 2014 släppta version 8 7

6. Fälten för namnen på delarna i nedanstående klassdiagram är tomma. Fyll i fälten med rätt namn (A J) från klass- och gränssnittsdefinitionerna som följer från nästa sida. Vissa definitioner kan beskriva klasser/gränssnitt som inte fungerar eller inte finns med i UML-diagrammet. Det finns totalt 10 definitioner, från vilka 5 namn skall väljas ut. Varje rätt ifyllt namnfält ger 1 p. (5 p) 8

public class A extends G implements E{ private int y; public void donothing(){ D myd = new D(); H myh = new H(); public class B extends A implements E{ private int x; protected int y; public void dosomething(){ private void donothing(){ public class C { private int x; private void dosomething(){ public class D implements E{ private int x; int y; public void dosomething(){ public void donothing(){ 9

public interface E { public void donothing(); public interface F extends E { private int x; int y; public void dosomething(); private void donothing(); public class G { public int x; private void dosomething(){ public class H extends G { private int y; private void donothing(){ public class I extends C implements E{ int y; public void donothing(){ H myh = new H(); F myf = new F(); 10

public interface J extends C implements A{ private int y; public void donothing(){ 11

Del II - fördjupningsfrågor Följande uppgifter besvaras på separat papper. 7. a) Förklara funktionen av nyckelordet static i Java. (2 p) b) Förklara funktionen av nyckelordet final i Java. (2 p) 8. Förklara vad en profilerare är, och hur och varför man använder den. (2 p) 9. Det har visat sig att i den version av Java som finns på ditt företags nya serie av smarta vitvaror 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 linjär algebra. Ditt bibliotek ska stödja vektorer och matriser av godtycklig storlek, samt ett stort antal vanliga operationer, som t.ex addition, multiplikation, inverser, pseudoinverser, egenvärdes- och singulärvärdesberäkningar, transponering, kryssprodukter, homogena transformer, 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. Antag att man har ett stort och beräkningsintensivt problem som lämpar sig väl för parallellisering. Beskriv hur man kan göra om man vill lägga ut problemet på flera olika datorer och vilka designmönster som kan vara tillämpliga. (3 p) 11. Nedan följer fem olika designmönster. Välj ut tre olika kombinationer av två mönster ur denna lista, och beskriv hur dessa mönsterpar kan kombineras med varandra, och varför man skulle vilja göra det. Notera att det ska handla om en direkt kombination av mönster, inte bara en applikation som råkar innehålla båda mönstren. (6 p) Observer MVC Facade Composite Iterator 12. Din vän, som håller på att lära sig Java, har skrivit följande rad i ett program: List<Comparable> mylist = new List<Comparable>(); Din vän vill koda så generellt som möjligt, och åstadkomma lös koppling genom att inte använda några explicita typer om det inte är absolut nödvändigt, men just här gick det som synes fel. Ge ett svar som förklarar för vännen varför raden inte fungerar, och hur man i stället skulle kunna göra för att åstadkomma en fungerande lösning som gör det hen vill, men ändå inte behöva ange mer explicita typer. (3 p) 12