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

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

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.

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

TKIEK-2, TKTFY-3, TKTEM-3

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

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!

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

DAI2 (TIDAL) + I2 (TKIEK)

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

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

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

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!

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

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

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

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

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

Objektsamlingar i Java

TENTAMEN OOP

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

TENTAMEN OOP

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

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

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

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

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

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

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

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

Objektorienterad Programmering (TDDC77)

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

Tentamen i Programmeringsteknik I

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

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.

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

DAT043 Objektorienterad Programmering

TENTAMEN OOP

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

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

PROGRAMMERINGSTEKNIK TIN212

Malmö högskola 2008/2009 CTS

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.

Objektorienterad programutveckling, fk

Agenda. Objektorienterad programmering Föreläsning 13

Repetition av OOP- och Javabegrepp

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Objektorienterad programmering i Java

TDDD78 Viktiga begrepp, del 2

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

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

Repetition av OOP- och Javabegrepp

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

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

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

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

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

Objektorienterad programmering D2

Lösningsförslag till tentamen

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

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

Malmö högskola 2007/2008 Teknik och samhälle

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt 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.

Kurskod D0010E Datum Skrivtid 5tim

DAT043 - föreläsning 8

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

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 fredag

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

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

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

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

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

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

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

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

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

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

Tentamen Programmering fortsättningskurs DIT950

LÖSNINGSFÖRSLAG TENTAMEN

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

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

Kopiering av objekt i Java

Tentamen i Algoritmer & Datastrukturer i Java

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

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

Transkript:

TENTAMEN KURSNAMN Objektorienterad programmering, 7.5p PROGRAM: DAI 2 (TIDAL-2) 2018/2019, lp 1 KURSBETECKNING EXAMINATOR DAT050 Uno Holmer TID FÖR TENTAMEN Onsdagen den 28/8 2019, 08.30 12.30 HJÄLPMEDEL ANSV LÄRARE Java API (delas ut av skrivningsvakten) Uno Holmer tel. 772 5730 besöker tentamen ca kl. 9.30 samt ca 11.15 DATUM FÖR ANSLAG Senast den 16/9 2019 datum för granskning meddelas senare ÖVRIG INFORM. Betygsgränser: 3-24p, 4-36p, 5 48p. (max 60p)

1 (8) TENTAMEN: Objektorienterad programmering Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. 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 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 (8) 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. 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 man vill överskugga metoden equals i klassen Circle i laboration 5. Vilken deklaration av parametern är korrekt? public boolean equals(circle obj) // 1 public boolean equals(shape obj) // 2 public boolean equals(object obj) // 3 a. bara 1 b. bara 2 c. 2 och 3 d. bara 3

3 (8) 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 tabell 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 (8) Uppgift 2 I ett lagerhanteringssystem hos företaget X sker med ojämna mellanrum uppdatering av lagerlistor med nya priser. I lagerlistan finns för varje artikel uppgift om artikelnummer, pris, samt antal artiklar i lager. Prislistan med aktuella priser innehåller för varje artikel uppgift om artikelnummer och pris. Exempel: Om lagerlistan till vänster uppdateras med de nya priserna till höger Artikelnr Pris Lagersaldo 12345 100 23 78901 200 8 76563 300 1034 27276 400 199 99213 500 0 så skall lagerlistan ha följande innehåll efter uppdateringen: Artikelnr Pris Lagersaldo 12345 120 23 78901 200 8 76563 1270 1034 27276 400 199 99213 596 0 Artikelnr Pris 99213 596 76563 1270 12345 120 I uppgiften finns tre klasser som skall kompletteras: Item (prisuppgift i prislistan), StoreItem (information om en vara i lagerlistan), samt Store (lagerlistan). Se kodskelett på nästa sida. a) Implementera metoden equals i Item så att den returnerar sant om två objekt innehåller likadana artikelnummer, och falskt annars. Metoden skall ej vara överskuggningsbar vid arv. (4 p) b) Implementera metoden hashcode i Item. c) Implementera metoden tostring i Item. (se även uppgift g) d) Definiera konstruktorn i StoreItem. Konstruktorn skall ha inparametrar motsvarande samtliga instansvariabler. e) Implementera metoden tostring i StoreItem. (se även uppgift g) f) Implementera metoden add i Store som adderar ett nytt artikelobjekt till lagerlistan. Metoden skall bara lägga till objektet om det inte redan finns i listan. Returvärdet skall avspegla om objektet adderades eller ej. g) Implementera metoden update i Store. Metoden skall uppdatera priset på alla artiklar i lagerlistan som finns i listan som ges som inparameter. (4 p) h) Implementera metoden print i Store. Varje rad i utskriften skall ha formen artikelnr: pris (antal)

5 (8) public class Item { private String productid; private int price; public Item(String productid,int price) { this.productid = productid; this.price = price;... equals hashcode tostring public int getprice() { return price; public void setprice(int price) { this.price = price; public class StoreItem extends Item { private int storelevel = 0; // Number of items in the store... public int getstorelevel() { return storelevel; konstruktor tostring public void addtostore(int noofitems) { storelevel += noofitems; public class Store { private List<StoreItem> items = new ArrayList<StoreItem>();... add update print

6 (8) Uppgift 3 En klassisk fransk kortlek har fyra färger (suit) och 13 valörer (rank) av varje kort. Följande gränssnitt beskriver ett minimum av metoder: public interface FrenchCard { enum Suit {HEARTS,SPADES,CLUBS,DIAMONDS int getrank(); Suit getsuit(); Vidare finns följande klass, som vi inte beskriver närmare: public class Card implements FrenchCard,Cloneable,Comparable<Card> Uppgiften är nu att konstruera två metoder (se nedan) i klassen CardHand för att representera en hand av kort. En hand är en samling kort ur en eller flera kortlekar. Klassen har bl.a. följande metoder: public void add(card c) public int size() public Card look(int i) throws IndexOutOfBoundsException public boolean discard(int i) throws IndexOutOfBoundsException adderar kortet c till handen returnerar antalet kort i handen returnerar det i:te kortet i handen tar bort det i:te korten ur handen Dessutom skall klassen ha metoderna clone som returnerar en djup kopia av handen, samt equals som avgör om två händer är lika. Två händer är lika om de innehåller lika många kort, samt lika många av varje kort. Den interna ordningen bland korten spelar ingen roll för om två händer är lika eller ej. Ex. Card c1 = new Card(4,FrenchCard.Suit.DIAMONDS); Card c2 = new Card(12,FrenchCard.Suit.SPADES); Card c3 = new Card(9,FrenchCard.Suit.HEARTS); CardHand h1 = new CardHand(); h1.add(c1); h1.add(c2); h1.add(c3); CardHand h2 = new CardHand(); h2.add(c3); h2.add(c1); h2.add(c2); System.out.println(h1.equals(h2)); // true System.out.println(h2.equals(h1)); // true Du kan anta att handen är representerad som en lista av kort. Implementera metoderna clone och equals. Ingen av metoderna får ändra kortens inbördes ordning. Tips: Utnyttja clone och Collections.sort i equals! (12 p)

7 (8) Uppgift 4 Vilka av arven 1-7 är tillåtna i Java, vilka ger kompileringsfel? Motivera svaret! a) public interface I1 {... 1. public interface I2 extends I1 {... 2. public interface I3 extends I1 {... 3. public interface I4 extends I2, I3 {... 4. public class C1 implements I3 {... 5. public class C2 extends C1 implements I4 {... 6. public class C3 extends C1 {... 7. public class C4 extends C2, C3 {... (7 p) b) Vissa av klasserna nedan måste deklareras som abstrakta, vilka? Vilka klasser kan instansieras? Motivera svaret! public interface I1 { void f(); public interface I2 { void g(); public class C1 implements I1, I2 { public void f() {... public void h() {... public class C2 implements I2 { public void g() {... abstract public void i(); public class C3 extends C1 { public void g() {... public class C4 extends C2 { public void i() {... (5p)

8 (8) Uppgift 5 Följande klass kan användas för att lagra temperaturuppgifter i en liten enkel väderstation: public class TemperatureDatabase { private... public TemperatureDatabase() {... public int update(string city,int newtemperature) {... Skriv färdigt klassen. Använd en lämplig samlingsklass för att associera stadsnamn med temperaturvärden. Metoden update skall byta ut det gamla temperaturvärdet mot det nya och returnera det gamla om ett sådant finns registrerat, annars sätts den nya staden och temperaturvärdet in och -1 returneras. (12 p)