CHALMERS TENTAMEN. 2012/2013, lp 1 DAT042. Uno Holmer. Java API (utdelas av skrivningsvakten) Erland Holmström tel besöker tentamen

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

Lösningsförslag till tentamen

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

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

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

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

CHALMERS TENTAMEN. 2013/2014, lp 2 DAT050. Uno Holmer. Java API (bifogas tesen) Uno Holmer tel besöker tentamen ca kl samt ca 11.

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

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

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

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

DAI2 (TIDAL) + I2 (TKIEK)

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

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

TENTAMEN OOP

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

TENTAMEN OOP

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

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

PROGRAMMERINGSTEKNIK TIN212

TENTAMEN: Objektorienterad programutveckling, fk. Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad.

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

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

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

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

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

Instuderingsuppgifter läsvecka 2

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

DAT043 - Föreläsning 7

TENTAMEN OOP

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

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

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

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

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

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

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

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

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

DAT043 Objektorienterad Programmering

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

Föreläsning 13 Innehåll

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

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

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

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

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540) Ansvarig: Jan Skansholm, tel eller

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

Lösningsförslag till tentamen

Objektsamlingar i Java

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

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

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

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

"Ä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 Grundläggande programmering STS, åk 1 fredag

TKIEK-2, TKTFY-3, TKTEM-3

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

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

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

Tentamen i Algoritmer & Datastrukturer i Java

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

Objektorienterad programvaruutveckling, fk, TDA550. Exempeltentamen

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

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

tentaplugg.nu av studenter för studenter

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

DD1342 Programkonstruktion för F1,

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Tentamen. Lösningsförslag

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

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

Arv och polymorfism i Java

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

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

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

LÖSNINGSFÖRSLAG TENTAMEN

Transkript:

TENTAMEN KURSNAMN Objektorienterad programmering, 7.5p PROGRAM: D2 (TKDAT-2) 2012/2013, lp 1 KURSBETECKNING EXAMINATOR DAT042 Uno Holmer TID FÖR TENTAMEN Torsdagen den 17/1 2012, 08.30-12.30 HJÄLPMEDEL ANSV LÄRARE Java API (utdelas av skrivningsvakten) Erland Holmström tel. 070-871 06 00 besöker tentamen DATUM FÖR ANSLAG Senast den 8/2 2013 datum för visning meddelas på kurshemsidan ÖVRIG INFORM. Betygsgränser: 3-24p, 4-36p, 5 48p. (max 60p)

1 (7) TENTAMEN: Objektorienterad programmering Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem). Skriv rent dina svar. Oläsliga svar r ä t t a s e j! Programkod som finns i tentamenstesen behöver ej upprepas. Programkod skall skrivas i Java 5 (eller senare) och vara indenterad och renskriven. Onödigt komplicerade lösningar ger poängavdrag. Omotiverad användning av klassvariabler och klassmetoder ger poängavdrag. Givna deklarationer, parameterlistor etc. får ej ändras. Läs igenom tentamenstesen och förbered ev. frågor. I en uppgift som består av flera delar får du använda dig av funktioner klasser etc. från tidigare deluppgifter, även om du inte löst dessa. Lycka till!

2 (7) Uppgift 1 Välj ett alternativ för varje fråga! Garderingar ger noll poäng. Inga motiveringar krävs. Varje korrekt svar ger två poäng. Besvara direkt i tesen! 1. Givet klassen public class Counter { private int i = 0; public Counter(int initialvalue) { i = initialvalue; public Counter next1() { ++i; return this; public Counter next2() { return new Counter(i+1); och kodavsnitten 1-3 List<Counter> list = new ArrayList<Counter>(); // 1 for ( Counter x : list ) x = x.next1(); // 2 for ( Counter x : list ) x = x.next2(); // 3 for ( Counter x : list ) x.next1(); Vilket påstående är sant om vi antar att list inte är tom? a. kodavsnitt 1 ändrar inga element i list, men 2 och 3 gör det. b. kodavsnitt 2 ändrar inga element i list, men 1 och 3 gör det. c. kodavsnitt 3 ändrar inga element i list, men 1 och 2 gör det. d. inget av kodavsnitten ändrar något element i list. 2. Vilket påstående är falskt? a. testning kan påvisa förekomsten av fel i ett program. b. avlusning kan avslöja orsaken till fel i ett program. c. testning och avlusning är samma sak. d. regresionstestning bör utföras efter refaktorering. 3. Antag att Super är basklass till Sub och att man i Sub vill definiera en överskuggning av standardmetoden equals i Object. Vilken deklaration av parametern är korrekt? public boolean equals(object x) // 1 public boolean equals(super x) // 2 public boolean equals(sub x) // 3 a. bara 1 b. bara 2 c. 2 och 3 d. bara 3

3 (7) 4. Betrakta följande javapaket och klasser: package module1; public class C1 { private int x; protected int y; public int z; package module2; import module1.*; public class C4 extends C1 {... public class C5 {... public class C2 extends C1 {... public class C3 {... Låt C i (v 1,,v n ) beteckna att variablerna v 1,,v n är synliga i klassen C i. Vilket av alternativen beskriver synligheten hos variablerna x, y och z i klasserna ovan? a. C1 (x,y,z), C2(y,z), C3(z), C4(y,z), C5(z) b. C1 (x,y,z), C2(y,z), C3(z), C4(z), C5(z) c. C1 (x,y,z), C2(y,z), C3(y,z), C4(z), C5(z) d. C1 (x,y,z), C2(y,z), C3(y,z), C4(y,z), C5(z) 5. Följande kodavsnitt avser att beräkna totala antalet heltal i en mapp av listor. Map<String,List<Integer>> m = new HashMap<String,List<Integer>>();... int count = 0; for ( String key : m.keyset() ) { List<Integer> l = m.get(key); count += l.size(); System.out.println(count); a. koden är inte säker, ett exekveringsfel kan uppkomma b. deklarationen på första raden är inte typkorrekt c. koden är felfri så långt man kan se av vad som visas ovan (10 p)

4 (7) Uppgift 2 Ett spel går till på följande sätt. Bakom en av tre skärmar döljer sig ett föremål. Spelaren skall gissa var föremålet befinner sig. Om den första gissningen är rätt får spelaren två poäng, annars ges en chans till. Är den andra gissningen rätt får spelaren en poäng, annars förlorar spelaren alla sina poäng. Spelaren får spela tio sådana omgångar. Maximalt antal poäng är alltså 20. Uppgiften går ut på att konstruera ett program med grafiskt användargränssnitt för spelidén ovan. I fönstret skall finnas tre knappar som spelaren trycker på för att gissa var föremålet finns. En knapp som tryckts ner avaktiveras till nästa spelomgång. Endast tryck på aktiverade knappar har effekt. Under de tre knapparna i fönstret skall två uppgifter redovisas, antal omgångar kvar samt uppnådda poäng. left center right 4 12 I exemplet ovan har spelaren tryckt ner den vänstra knappen, vilket var fel och får en chans till. Spelaren har totalt tolv poäng samt fyra omgångar kvar, inklusive den pågående. Konstruera det grafiska gränssnittet och koppla i hop det med ett objekt av nedanstående klass. Till din hjälp finns klassen GameState som håller reda på spellogiken. public class GameState {... // score: register the player s choice and update the score etc // parameter: guessedbutton: a number in the range 1-3 public void score(int guessedbutton) // return the player s current score public int getscore() // return the number of games left to play public int gamesleft() // return true if ready for a new game, false ow public boolean isnewgame() Textutmatning i fönstret sker enklast i JLabel-objekt. Likartad kod får anges schematiskt. (12 p)

5 (7) Uppgift 3 Klassen ObjectCounter håller reda på antalet objekt av subklasser till sig själv. Klassen skall ha metoden public int getcount() { // returnerar antalet objekt Exempel: public class Sub1 extends ObjectCounter {... public class Sub2 extends ObjectCounter {... ObjectCounter o = new ObjectCounter(); System.out.println(o.getCount()); // 1 Sub1 a = new Sub1(); System.out.println(a.getCount()); // 1 Sub1 b = new Sub1(); System.out.println(b.getCount()); // 2 Sub1 c = new Sub1(); System.out.println(c.getCount()); // 3 Sub2 d = new Sub2(); System.out.println(d.getCount()); // 1 Sub2 e = new Sub2(); System.out.println(e.getCount()); // 2 Skriv färdigt ObjectCounter. Ledning: Metodanropet obj.getclass().getname() returnerar den dynamiska typen för obj. Använd en lämplig struktur för att lagra information om de olika subklasserna samt inför en lämplig konstruktor. (8 p)

6 (7) Uppgift 4 a) Vad skrivs ut av följande metodanrop? Motivera! Base obj = new Sub(); obj.f1(); // 1. obj.f2(); // 2. obj.f3(); // 3. Sub obj2 = new Sub(); obj2.f1(); // 4. obj2.f2(); // 5. obj2.f3(); // 6. obj2.f4(); // 7. public class Base { public void f1() { System.out.print("Base.f1"); public void f2() { System.out.print("Base.f2"); public void f3() { System.out.print("Base.f3"); public class Sub extends Base { public void f1() { System.out.print("Sub.f1"); public void f2() { super.f2();system.out.print("++sub.f2"); public void f4() { System.out.print("Sub.f4"); b) Vilka av raderna 1-4 är tillåtna och vilka ger kompileringsfel? En av klasserna går ej att kompilera, vilken? Motivera svaren! Int obj1 = new Int(); // 1 Base obj2 = new Base(); // 2 Sub1 obj3 = new Sub1(); // 3 Sub2 obj4 = new Sub2(); // 4 public interface Int { public void h(); public abstract class Base implements Int { public abstract void f(); public void g() {... public class Sub1 extends Base { public void f() {... (7 p) public class Sub2 implements Int { public void h() {... (8 p)

7 (7) Uppgift 5 En backup-demon är ett aktivt objekt som periodiskt sparar ett annat objekt till fil. Flera backupdemoner kan vara aktiva samtidigt och spara sina resp. objekt med olika inbördes tidsintervall. Uppgiften är att komplettera klassen BackupDaemon. Inparametrar till konstruktorn är objektet som skall sparas, namnet på backup-filen, samt tidsintervallet i sekunder. Varje objekt av klassen skall exekveras i en egen tråd. Exempel: Antag att klasserna SomeClass och SomeOtherClass är serialiserbara. SomeClass o1 = new SomeOtherClass(), o2 = new SomeOtherClass(); new BackupDaemon( o1, "s1.back", 60 ); new BackupDaemon( o2, "s2.back", 300 ); o1 sparas då en gång per minut, och o2 var femte minut i respektive fil. Varje gång ett objekt sparats skall ett meddelande i stil med följande exempel skrivas ut. Object written to s1.back Implementera filhanteringen i en privat metod i klassen. (8 p) Uppgift 6 Antag att klassen B är intresserad av alla tillståndsförändringar som sker i A. När instansvariabeln i A ändras skall B skriva ut det nya värdet. public class A { private int value = 0; public void compute(int x) { value += x; public class B { private A theaobject; public B(A anaobject) { theaobject = anaobject; Modifiera klasserna så att designmönstret Observer realiseras. (7 p)