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

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

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

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

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

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

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

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

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).

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.

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

DAI2 (TIDAL) + I2 (TKIEK)

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Tentamen i Grundläggande programmering STS, åk 1 fredag

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.

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

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

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

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

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: Objektorienterad programutveckling, fk. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

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

DAT043 Objektorienterad Programmering

Kopiering av objekt i Java

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

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

Tentamen i Programmeringsteknik I

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

Tentamen i Programmeringsteknik I

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

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

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

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

TENTAMEN OOP

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

Enkla variabler kontra referensvariabel

Objektorienterad programmering D2

Tentamen i Grundläggande programmering STS, åk

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

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

PROGRAMMERINGSTEKNIK TIN212

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

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

Tentamen i Grundläggande programmering STS, åk 1 fredag

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

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

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 Programmering fortsättningskurs DIT950

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

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

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

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

Generisk klass med typparameter Inre klass - ListIterator

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

Laboration 2: Designmönster

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.

OOP Tentamen

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

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

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

Instuderingsuppgifter läsvecka 2

Del A (obligatorisk för alla)

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: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Tentamen i Grundläggande programmering STS, åk

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

DEL 1 För att få godkänt på tentan (betyg 3) måste du lösa minst fem av sju uppgifter i denna del.

Konstruktion av klasser med klasser

Laboration 1 - Grunderna för OOP i Java

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

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

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-17, TDA540. Dag: , Tid:

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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 för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Algoritmer. Två gränssnitt

Objektorienterad programvaruutveckling, fk, TDA550. Exempeltentamen

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

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

DELPROV 1 I DATAVETENSKAP

Institutionen för TENTAMEN CTH HT-14 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

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

Transkript:

1 (7) TENTAMEN: Objektorienterad programmering Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad. Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen. Ordna bladen i uppgiftsordning. Skriv din tentamenskod 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 version, och vara indenterad och renskriven. Onödigt komplicerade lösningar 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 delfrågorna 1.1-1.5 på ett blad. 1. Vilket påstående om en objektorienterad design stämmer bäst? a. Hög kohesion medför ofta hög koppling. b. Hög kohesion medför ofta låg koppling. c. Låg kohesion beror ofta på låg koppling. 2. Givet public interface A public class B public class C extends B implements A Vilket är typkorrekt? a. B x = new C(); A y = x; b. A x = new C(); B y = x; c. B y = new C(); C x = y; d. Inget av ovanstående. 3. Ett av fallen a, b eller c ger ett kompileringsfel, vilket? public class A { private void f() { protected void g() { public void h() { public class B extends A { public void f() { public void g() { private void h() { // a // b // c 4. Antag att klasserna C1 och C2 definieras: public class C1 implements Cloneable { public Object clone() throws CloneNotSupportedException {... public class C2 implements Cloneable { private int x; private String s; private C1 c; public Object clone() throws CloneNotSupportedException { // se a-d nedan forts.

3 (7) Vilken implementering av clone i C2 är korrekt? C2 copy = (C2)super.clone(); copy.c = new C1(); C2 copy = (C2)super.clone(); copy.c = (C1)c.clone(); c) C2 copy = new C2(); copy.x = x; copy.s = new String(s); copy.c = (C1)c.clone(); d) C2 copy = (C2)super.clone(); copy.s = s.clone(); copy.c = (C1)c.clone(); 5. Vilka metoder måste finnas i en klass om objekt av klassen skall lagras i ett TreeSet? a. equals, hashcode och compareto b. hashcode och compareto c. equals och hashcode d. compareto e. hashcode f. equals (10 p)

4 (7) Uppgift 2 I ett IT-system för en web-shop hanteras information om olika produkter i varulagret. Produkter beskrivs av gränssnittet public interface Product { String getid(); String getdescription(); float getprice(); void setprice(float price); Metoden getid returnerar produktens artikelnummer, getdescription dess beskrivning samt getprice priset. Med setprice kan man ändra priset. Konstruera klassen MyProduct så att den implementerar gränssnittet Product. Inför lämpliga instansvariabler. Klassen skall ha en konstruktor med parametrar så att nya produktobjekt kan initieras med produktid och beskrivning. Dessutom skall klassen ha metoderna equals och hashcode. Två produktobjekt skall vara lika om deras artikelnummer (id) är lika, annars olika. (6 p) I systemet skall också finnas ett objekt som håller reda på lagersaldot för alla produkter. När man köper in en produkt ökas saldot och när man säljer minskas det. Följande gränssnitt beskriver denna information: public interface Store { void buy(product p,int n) void sell(product p,int n) throws IllegalArgumentException; int getbalance(product p) throws IllegalArgumentException; float getvalue(product p) throws IllegalArgumentException; float gettotalsold(); Metoden buy registrerar att n st p har köpts in till lagret, metoden sell att n st p har sålts, metoden getbalance returnerar antalet p i lager, metoden getvalue ger det totala lagervärdet för produkten p och slutligen returnerar gettotalsold försäljningssumman för alla sålda produkter. IllegalArgumentException kastas av sell, getbalance och getvalue om den angivna produkten är okänd, samt av sell om angivet antal är negativt. Konstruera klassen MyStore så att den implementerar gränssnittet Store. Inför lämpliga instansvariabler och en konstruktor. Tips: Lagra informationen i en map av lämpligt slag. Exempel: Nedan visas ett exempel på hur klasserna ovan kan användas: (10 p)

5 (7) public static void main(string[] arg) { Product apple = new MyProduct("123456","Red apple"); apple.setprice(25.0); Product banana = new MyProduct("987654","Banana"); banana.setprice(39.0); Store store = new MyStore(); store.buy(apple,100); store.buy(banana,200); store.sell(apple,50); store.sell(banana,25); System.out.println("Apple(balance): " + store.getbalance(apple)); System.out.println("Apple(value): " + store.getvalue(apple)); System.out.println("Banana(balance): " + store.getbalance(banan); System.out.println("Banana (value): " + store.getvalue(banan); System.out.println("Total sold: " + store.gettotalsold()); Utskriften då main exekveras blir: Apple (balance): 50 Apple (value): 1250.0 Banana (balance): 175 Banana (value): 6825.0 Total sold: 2225.0 Uppgift 3 I klassen SomeArrayMethods finns metoden public static int[] randomarray(int n) som returnerar ett sorterat fält av n unika slumpmässiga heltal. Konstruera metoden randomarray! Tips: Utnyttja en slumptalsgenerator och en lämplig datasamling i algoritmen. Ett fält kan sorteras med metoden public static void sort(int[] i klassen Arrays. (8 p) Konstruera en testmetod i JUnit-stil, testisorderedandunique, som testar om fält som returneras av randomarray har rätt antal element, om de är sorterade och om elementen är unika. Testmetoden skall undersöka dessa egenskaper för varje n i intervallet [1,10000]. Använd lämpliga metoder i klassen Assert. (6 p)

6 (7) Uppgift 4 Konstruera metoden public static int yearofbirth(string pnr) som givet ett personnummer i strängform, returnerar födelseåret som ett heltal. En personnummersträng skall innehålla 12 siffror. Ex. 190207141236. Följande felsituationer skall identifieras och ge upphov till att ett undantag kastas: Argumentet är null. Strängen har fel längd. Strängen innehåller tecken som inte är siffror. För lämpliga undantagstyper och feltexter, se uppgift b. (8 p) Skriv en undantagshanterare som anropar metoden i a med ett personnummer som argument. Om metoden returnerar normalt skall födelseåret skrivas ut, annars skall eventuellt undantag fångas och skrivas ut. Exempel på utskrifter: 1902 NullPointerException: yearofbirth: argument is null IllegalArgumentException: yearofbirth: pnr must contain 12 digits IllegalArgumentException: yearofbirth: pnr must contain digits only (2 p) Uppgift 5 I ett program för att hantera tärningsspel finns gränssnittet public interface Die { void roll(); int getvalue(); samt klassen public class StandardDie implements Die { //code not shown here som implementerar en vanlig sexsidig tärning. Implementationen är avsiktligt dold. Nu behöver man ha tillgång till tärningar som aldrig upprepar föregående utfall vid nästföljande kast. En sådan tärning ger t.ex. aldrig två sexor i följd. Din uppgift är att implementera klassen public class NoRepeatDie implements Die Klassen NoRepeateDie har, förutom metoderna som specificeras av gränssnittet Die, även metoden public void norepeatroll() som skiljer sig från metoden roll genom att den aldrig ger samma värde två gånger i följd. Tips: Du får använda ett objekt av klassen StandardDie i lösningen.

7 (7) (10 p)