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

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

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

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:

Omtentamen 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

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

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

Föreläsning 5-6 Innehåll

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

DAT043 Objektorienterad Programmering

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Föreläsning 3-4 Innehåll

TENTAMEN OOP

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

Tentamen Programmering fortsättningskurs DIT950

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

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

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 ID1004 Objektorienterad programmering May 29, 2012

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

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

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

Föreläsning 9-10 Innehåll

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

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

PROGRAMMERINGSTEKNIK TIN212

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

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

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

Instuderingsfrågor, del D

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

TENTAMEN OOP

Laboration 1 - Grunderna för OOP i Java

TENTAMEN OOP

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

Kopiering av objekt i Java

OOP Tenta

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

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 Programmering

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Tentamen i Objektorienterad programmering

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Att skriva till och läsa från terminalfönstret

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

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

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

Java, klasser, objekt (Skansholm: Kapitel 2)

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

Föreläsning 8: Exempel och problemlösning

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

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Tentamen OOP

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

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

JAVAUTVECKLING LEKTION 4

Tentamen. Lösningsförslag

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

Tentamen, EDAA10 Programmering i Java

Objektorienterad Programmering (TDDC77)

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

Dugga i Grundläggande programmering STS, åk

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

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

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

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

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

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

OOP Tentamen

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Föreläsning 12: Exempel och problemlösning

LÖSNINGSFÖRSLAG TENTAMEN

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

Föreläsning REPETITION & EXTENTA

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

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

Föreläsning 2, vecka 8: Repetition

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

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

Programmering A. Johan Eliasson

Malmö högskola 2008/2009 CTS

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Objektorienterad programmering D2

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

2D1342 Programkonstruktion för F1, ht 2006

Typkonvertering. Java versus C

Transkript:

Tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-17, TDA540 Dag: 2018-01-13, 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 Anslås på kurshemsidan. Vid eventuella åsikter om rättningen ange noggrant vad du anser är fel. 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 Duplicates nedan 1 : 1 class Duplicates { 2 3 public static void noduplicates(int[] list) { 4 int[] set = new int[list.length]; 5 int size = 0; 6 for (int i = 0; i < list.length; i++) { 7 boolean found = false; 8 for (int j = 0; j < size; j++) { 9 if (set[j] == list[i]) { 10 found = true; 11 break; 12 13 14 if (!found) { 15 set[size] = list[i]; 16 size = size + 1; 17 18 19 for (int j = 0; j < size; j++) 20 System.out.println(set[j]); 21 22 23 public static void main(string[] args) { 24 int[] list1 = {3, 3, 1, 4, 1, 5, 2, 3; 25 noduplicates(list1); 26 27 28 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 Duplicates) till och med första anropet av break. 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 noduplicates metoden fungerar. (3 poäng) 1 Radnumren är inte del av programmet. 2

e) Ändra programmet: Gör så att metoden noduplicates, istället för att skriva ut resultatet, returnerar det. Använd en lämplig returtyp. Byta ut innersta for-loopen mot en while-loop. Bytet skall medföra att break satsen försvinner. (6 poäng) 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 sum(int[] a) { int sum = "0"; for (int i = 0; i < a.length(); j++) sum += a[i]; Uppgift 3 (8 poäng) class IntPrint { public static int strtoint(string s) { return Integer.parseInt(s); public static void main (String[] args) { for (String a: args) { try { System.out.println(strToInt(a)); catch (NumberFormatException e) { System.out.println("Fail with " + a); finally { System.out.println("Moving on"); a) Vad skrivs ut då programmet körs med följande argument: 12 c 1? (4 poäng) b) Vad är den gemensamma superklassen till alla undantag (exceptions)? (1 poäng) c) Hur ändras programmets beteende om vi ändrar typen i catch-blocket från NumberFormatException till den gemensamma superklassen till alla undantag? (3 poäng) 3

Uppgift 4 (16 poäng) En linjär funktion är en funktion som har följande struktur: y = intercept + slope x där intercept och slope är konstanter som avgör sambandet mellan x och y. Ovanstående formel kallas för räta linjens ekvation. intercept kallas eller även konstantterm och bestämmer var linjen skär y-axeln slope kallas riktningskoefficient och betecknar lutningen på linjen. Om slope är lika med 0 så har linjen en horisontell lutning och linjen ligger därför parallellt med x-axeln. Ett positivt slope ger en linje som lutar snett uppåt åt höger i koordinatsystemet, och ett negativt slope ger en linje som lutar snett neråt åt höger. Vi har definierat en BasicLine klass så här: class BasicLine { private float intercept, slope; public BasicLine(float intercept, float slope) { this.intercept = intercept; this.slope = slope; float getintercept() { return intercept; float getslope() { return slope; Din uppgift är att skapa en Line klass. Line ärver från BasicLine och utökar den med följande publika metoder och konstruktorer: Line(float intercept, float slope) skapar ett objekt med given intercept och slope. Line(float intercept) konstruerar en horisontell linje med given intercept. boolean ishorizontal() returnerar om linjen är horisontell eller inte. boolean parallel(line otherline) returnerar om linjen är parallellt med otherline. Line clone() returnerar ett nytt Line objekt som är en kopia av den aktuella linjen. float y(float x) returnerar linjens vertikala koordinat för horisontella koordinat x, dvs vi ska applicera formeln på x. float[] cross(line otherline) returnerar ett fält med två element: första elementet är x-koordinaten och andra är y-koordinaten av punkten där otherline skär aktuella linjen. Om linjerna är parallell med varandra då returnerar metoden null. 4

Uppgift 5 (14 poäng) Betrakta nedanstående klasser och interfaces: interface A { int getx(); abstract class B implements A { protected int x; interface C { void printx(); void printy(); public class D extends B { public int getx() { return x; public class E extends D implements C { public void printx() { System.out.println(getX()); public void printy() { public class F extends E { protected int x = 4; @Override public void printy() { super.printx(); Anta att vi har gjort följande deklarationer: D d = new D(); E e = new E(); F f = new F(); a) Hur är A, B, C, D, E och F 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) 5

b) Vad är värdet av följande uttryck: 1. d.getx() 2. e.x 3. ((D)e).getX() 4. f.getx() 5. f.x 6. ((D)f).getX() 7. ((E)f).getX() 8. ((E)f).x (4 poäng) c) Vad blir utskriften när vi evaluerar följande satser? 1. e.printx(); 2. e.printy(); 3. f.printx(); 4. f.printy(); (2 poäng) d) 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 v1 = new A(); 2. A v2 = new D(); 3. C v3 = new D(); 4. D v4 = new E(); 5. C v5 = new E(); 6. F v6 = new D(); 7. List<D> v7 = new ArrayList<D>(); 8. ArrayList<D> v8 = new ArrayList<E>(); 9. A v9 = new B(); (4 poäng) 6