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

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

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

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

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

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

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

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

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

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

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

Tentamen Programmering fortsättningskurs DIT950

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

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

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

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

TENTAMEN OOP

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

OOP Objekt-orienterad programmering

PROGRAMMERINGSTEKNIK TIN212

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

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Föreläsning 5-6 Innehåll

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

Föreläsning 3-4 Innehåll

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

Instuderingsfrågor, del D

Föreläsning 6: Metoder och fält (arrays)

Tentamen i Programmering

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Klasshierarkier - repetition

TENTAMEN OOP

Tentamen i Grundläggande programmering STS, åk

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Laboration 1 - Grunderna för OOP i Java

Parallellism, återblick

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

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

F4. programmeringsteknik och Matlab

2D1339 Programkonstruktion för F1, ht 2003

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

Kopiering av objekt i Java

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

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

TENTAMEN OOP

OOP Tentamen

OOP Tenta

Föreläsning 1, vecka 8: Att förbereda sig för tentan

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

Tentamen i Programmeringsteknik I

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 2, vecka 8: Repetition

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

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

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

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

Dugga i Grundläggande programmering STS, åk

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

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

DAT043 Objektorienterad Programmering

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Typkonvertering. Java versus C

TDDC77 Objektorienterad Programmering

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

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

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

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

OOP Tentamen

Objektorienterad programutveckling, fk

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Objektorienterad programmering i Java

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Repetition av viktiga begrepp inom objektorienterad programmering

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

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

Föreläsnings 9 - Exceptions, I/O

2D1342 Programkonstruktion för F1, ht 2006

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

1 Repetition av viktiga begrepp inom objektorienterad programmering

LÖSNINGSFÖRSLAG TENTAMEN

Tentamen OOP

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

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

Transkript:

Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-17, TDA540 Dag: 2018-04-06, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar: Alex Gerdes (alexg@chalmers.se, 031-772 6154) Resultat: Betygsgränser: Siffror inom parentes: Granskning: Hjälpmedel: Var vänlig och: Observera: Erhålls via Ladok 3:a 24 poäng 4:a 36 poäng 5:a 48 poäng max 60 poäng Anger maximal poäng på uppgiften Tentamen kan granskas på studieexpeditionen. Vid eventuella åsikter om rättningen eposta och ange noggrant vad du anser är fel så återkommer vi. Cay Horstmann: Java for everyone eller Jan Skansholm: Java direkt med Swing Understrykningar och smärre förtydligande noteringar får finnas. Skriv tydligt och disponera papperet på lämpligt sätt. Börja varje uppgift på nytt blad. Skriv ej på baksidan av papperet. Uppgifterna är ej ordnade efter svårighetsgrad. Titta därför igenom hela tentamen innan du börjar skriva. Alla program skall vara väl strukturerade, lättöverskådliga och enkla att förstå. Indentera programkoden! Vid rättning av uppgifter där programkod ingår bedöms principiella fel allvarligare än smärre språkfel. Lycka till! 1

Uppgift 1 (18 poäng) Betrakta klassen Votes nedan 1 : 1 class Votes { 2 3 public static void countvotes(int noptions, int[] votes) { 4 int[] count = new int[noptions]; 5 for (int k = 0; ; k++) { 6 int vote = votes[k]; 7 count[vote - 1]++; 8 if (k == votes.length - 1) 9 break; 10 11 for (int k = 0; k < count.length; k++) { 12 System.out.println("Option " + (k + 1) + " got " + count[k] + " votes"); 13 14 15 16 public static void main(string[] args) { 17 int[] votes = {1, 2, 1, 1, 3, 2, 1, 4, 3, 2; 18 countvotes(4, votes); 19 20 a) Förklara kort varje keyword i klassen. (3 poäng) b) Lista, i korrekt ordning, alla metodanrop som sker då programmet exekveras. För varje metodanrop ange: i vilken klass metoden är deklarerad, metodens signatur, metodens returtyp, och om metoden är statisk eller ej. (3 poäng) c) Beskriv programmets kontrollflöde när det exekveras (genom java Votes) till och med första anropet av if. Räkna upp alla exekverade satser (i korrekt ordning) tillsammans med radnummer. Om satsen är ett metodanrop ange också parametrarnas värde. (3 poäng) d) Vilken utskrift fås då program körs? Förklara utskriften genom en (informell) beskriving av hur countvotes metoden fungerar. (3 poäng) e) Ändra programmet: Ändra första for-satsen i countvote så att den inte avslutar med en break-sats. Ändra typen av lokala variabeln count från int[] till Integer[] och modifiera resten av countvotes så att metoden har fortsatt samma beteende. (6 poäng) 1 Radnumren är inte del av programmet. 2

Uppgift 2 (4 poäng) Nedanstående kodavsnitt har några (kompilerings) fel. Förklara vad som är fel och rätta till. public static int max(int[] a) { int m = a[0]; while (k < a.length) { if (a[k] > m) m = a[k]; k + 1; System.out.println(m); Uppgift 3 (8 poäng) class Conversions { public static int cc(char c) throws Exception { switch(c) { case 'A': return 1; case 'B': return 2; case 'C': return 3; default: throw new RuntimeException("Out of range!"); public static void main(string[] args) { int n = 0; try { n += cc('a'); System.out.println(n); n += cc('c'); System.out.println(n); n += cc('d'); catch (Exception e) { n += 3; finally { System.out.println(n); a) Vad skrivs ut då programmet körs? (3 poäng) b) Vad är den gemensamma superklassen till alla undantag (exceptions)? (1 poäng) 3

c) Hur ändras programmets beteende om try-blocket bara skulle innehålla sista anropet cc('d')? Det vill säga main-metoden ser ut så här: public static void main(string[] args) { int n = 0; try { n += cc('d'); Kom ihåg att Exception är en checked exception klass medan RuntimeException är en unchecked exception klass. (4 poäng) 4

Uppgift 4 (16 poäng) I den här uppgiften ska ni skapa en klass som lagrar data-punkter (med typen double) och som kan utföra enkla statistiska beräkningar. Vi har definierat en BasicData klass som lagrar data-punkter i en privat array data och exponerar följande publika metoder: put(d) för att lägga till en data-punkt d, get(k) för att hämta en data-punkt med index k, och size() för att läsa av antalet lagrade data-punkter. class BasicData { private double[] data; private int size; public BasicData() { data = new double[10000]; size = 0; public void put(double d) { data[size] = d; size++; public double get(int n) { return data[n]; public int size() { return size; Din uppgift är att skapa en Data klass. Data ärver från BasicData och utökar den med följande publika metoder och konstruktorer: Data() skapar en tom samling data-punkter int argmin() returnerar den minsta data-punktens index double min() returnerar minsta lagrade data-punkt double sum() returnerar algebraisk summa av alla data-punkter double mean() returnerar medelvärdet av alla data-punkter; kom ihåg att medelvärdet av punkter d 1,..., d n är k d k n Data filter(double x) returnerar ett nytt Data objekt med en kopia av alla datapunkter som är mindre än x Data centered() returnerar ett nytt Data objekt med en kopia av alla data-punkter, där alla punkter är delade med medelvärdet 5

Uppgift 5 (14 poäng) Betrakta nedanstående klasser och interfaces: interface A { int get(); interface B extends A { void put(int val); public class C implements A, B { protected int val = 0; public int get() { return 1; public void put(int val) { public class D extends C { public int get() { return val; public class E extends D { public void put(int val) { this.val = val; public class F extends E { protected int val; public void put(int val) { this.val = val; public class G extends F { public int get() { return val; Anta att vi har gjort följande deklarationer: C c = new C(); D d = new D(); E e = new E(); F f = new F(); G g = new G(); a) Hur är A, B, C, D, E, F och G relaterad till varandra med hänsyn till arv? Rita en klassdiagram där alla klasser representeras av en nod och rita en pil mellan nod X och nod Y om Y är den direkta superklassen till X. (4 poäng) 6

b) Betrakta följande sekvens med metodanrop: c.put(3); System.out.println( c.get() ); // 1. d.put(3); System.out.println( d.get() ); // 2. e.put(3); System.out.println( e.get() ); // 3. f.put(3); System.out.println( f.get() ); // 4. ((E)f).put(3); System.out.println( ((E)f).get() ); // 5. System.out.println( f.get() ); // 6. ((D)f).put(3); System.out.println( ((D)f).get() ); // 7. ((C)f).put(3); System.out.println( ((C)f).get() ); // 8. g.put(3); System.out.println( g.get() ); // 9. ((F)g).put(3); System.out.println( ((F)g).get() ); // 10. System.out.println( g.get() ); // 11. Vilket värde skrivs ut i varje get() anrop? (6 poäng) c) Bestäm om följande satser är korrekta; om inte förklara varför de inte är korrekta och om det handlar om en kompilerings- eller runtime-fel. 1. A a1 = new D(); 2. D d2 = new A(); 3. A a3 = new A(); 4. C c4 = new G(); 5. G g5 = c4; 6. A a6 = c4; 7. List<A> v7 = new ArrayList<A>(); 8. List<A> v8 = new ArrayList<C>(); (4 poäng) 7