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

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

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

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:

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

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

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

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

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

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

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

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 omtentamen för TDA540 Objektorienterad Programmering

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

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

TENTAMEN OOP

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

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 Programmeringsteknik I, ES,

Föreläsning 3-4 Innehåll

TENTAMEN OOP

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

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

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

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

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

DAT043 Objektorienterad Programmering

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

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

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 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

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

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

Föreläsning 9-10 Innehåll

Lösningsförslag tentamen FYTA11 Java

Instuderingsfrågor, del D

Tentamen i Grundläggande programmering STS, åk

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

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

Tentamen Programmering fortsättningskurs DIT950

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Tentamen OOP

PROGRAMMERINGSTEKNIK TIN212

Del A (obligatorisk för alla)

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

Tentamen, EDAA10 Programmering i Java

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

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.

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

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

Tentamen. Lösningsförslag

JAVAUTVECKLING LEKTION 11

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Föreläsning 13 Innehåll

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Tentamen i Programmeringsteknik I

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

OOP Tenta

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 Objektorienterad programmering

LÖSNINGSFÖRSLAG TENTAMEN

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

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

TDDD78 Viktiga begrepp, del 2

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

Dugga i Grundläggande programmering STS, åk

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Tentamen i Grundläggande programmering STS, åk

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 I JAVA, 5P SOMMARUNIVERSITETET

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

Institutionen för TENTAMEN CTH HT-14 Datavetenskap TDA550 DAG: TID: 14:00 18:00

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

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

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.

Tentamen i Programmeringsteknik I,, KandMa/Fy,

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

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

Objektorienterad programmering i Java

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen i Programmeringsteknik I

Transkript:

Tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-01-09, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar: Alex Gerdes (alexg@chalmers.se, 0729744966) 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 Betrakta klassen Match nedan 1 : 1 class Match { 2 public static void match(string pattern, String text) { 3 int i, j; 4 for (i = 0; i <= text.length() - pattern.length(); i++) { 5 for (j = 0; j < pattern.length(); j++) { 6 if (pattern.charat(j)!= text.charat(i + j)) 7 break; 8 9 if (j == pattern.length()) 10 System.out.println(i); 11 12 13 14 public static void main(string[] args) { 15 match("test", "kein protest, du testest"); 16 17 a) Förklara kort varje keyword i klassen. 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. c) Beskriv programmets kontrollflöde när det exekveras (genom java Match) till och med första anropet av break. Räkna upp alla exekverade satser (i korrekt ordning) tillsammans med radnummer. Om satsen är en metodanrop ange också parametrarnas värde. d) Vilken utskrift fås då program körs? Förklara utskriften genom en (informell) beskriving av hur match metoden fungerar. Hur hänger parametrarna pattern och text ihop med varandra? e) Förbättra programmet: Byta ut innersta for-loopen mot en while-loop. Bytet skall medföra att break satsen försvinner. Ersätt argumenterna till match i anropet i main med inmatning av data via System.in. Gör så att metoden match, istället för att skriva ut resultatet, returnerar det. Använd en lämplig returtyp. (5 poäng) 1 Radnumren är inte del av programmet. 2

Uppgift 2 Nedanstående kodavsnitt har några (kompilerings)fel. Förklara vad som är fel och rätta till. public static int power(int x, int n) int m = 1.0; for (int i = 0; i < n; i++) m *= x; Uppgift 3 class Divide { static int[] nums = {2, 3, 6, 8, 4, 8; static int[] denoms = {1, 2, 0, 2, 3; public static int divide(int a, int b) { return (a / b); public static void main(string[] args) { try { for (int i = 0; i < nums.length; i++) { int number = divide(nums[i], denoms[i]); System.out.println(number); catch (ArithmeticException e) { System.out.println("Division by zero!"); catch (ArrayIndexOutOfBoundsException e) { System.out.println("Out of bounds index!"); finally { System.out.println("Done!"); a) Vad skrivs ut då programmet körs? b) Ändra programmet så att det också kastar ett undantag (exception) om a % b 0. c) Vad är den gemensamma superklassen till alla undantag (exceptions)? (1 poäng) 3

Uppgift 4 (12 poäng) Vi har definierat en Point klass så här: class Point { private final int x, y; public Point (int x, int y) { this.x = x; this.y = y; public int getx () { return x; public int gety () { return y; Din uppgift är att skapa en Rectangle klass. Man kan konstruera en rektangel med hjälp av två positioner: övre vänster och undre högre hörnen. Klassen skall därför ha följande konstruktor: public Rectangle (Point upperleft, Point lowerright) Konstruktorn skall kontrollera om positionerna är korrekta, d.v.s. att positionen upperleft verkligen befinner sig faktiskt till vänster och ovanför positionen lowerright. Om så inte är fallet kastar konstruktorn en IllegalArgumentException. Klassen ska ha (åtminstone) följande metoderna: public Point getupperleft() public Point getlowerright() public int area() public boolean contains(rectangle r) public boolean overlaps(rectangle r) Metoden area skall returnera rektangelns area. Metoden contains avgör om rektangeln r är innesluten av en (annan) rektangel, t.ex. om r1.contains(r2) returnerar true så är r2 innesluten av r1. Metoden overlaps kontrollerar om två rektanglar är överlappande. Ni får anta att vi har bara positiva koordinater. 4

Uppgift 5 Betrakta nedanstående klasser: class A { int value = 1; public int getval() { return value; class B extends A { int value = 2; public int getval() { return value; public int getsup() { return super.getval(); class C extends A { int value = 3; Och anta att vi har gjort följande deklarationer: A a = new A(); B b = new B(); C c = new C(); a) Hur är klasserna A, B och C relaterad till varandra med hänsyn till arv? Förklara ditt svar. (2 poäng) b) Vad är värdet av följande uttryck: 1. a.value 2. b.value 3. ((A)b).value 4. c.getval() 5. b.getsup() 6. ((A)b).getVal() c) Bektrakta nedanstående klass: class D { public static void printa(a x) { System.out.println(x.getVal()); public static void printb(b x) { System.out.println(x.getVal()); 5

Bestäm om föjlande metodanrop är korrekta och om så ange utskrifterna; om inte förklara varför de är inte korrekta och om det handlar om en kompilerings- eller runtime-fel. 1. D.printA(a); 2. D.printA(b); 3. D.printA(c); 4. D.printB(a); 5. D.printB(b); 6. D.printB(c); Uppgift 6 Betrakta klassen Tree nedan: class Tree extends Object { Tree l; // left subtree Tree r; // right subtree long data; Tree (long data) { super(); this.l = null; this.r = null; this.data = data; // Create a tree from two subtrees Tree (Tree g, Tree d, long data) { this(data); this.l = g; this.r = d;; a) Ta bort så mycket överflödiga delar som möjligt från klassen Tree utan att påverka klassens funktionalitet (med hänsyn till andra klasser som använder den här klassen). Du får inte lägga till något eller ändra namn! Förklara varför du kan ta bort vissa delar. (1 poäng) b) Någon påstår: Match (från uppgift 1) är ett imperativt program men Tree är ett objektorienterat program. Vad menas med detta? Stämmer det (och varför)? (1 poäng) c) Skapa en klass ArityTree som generaliserar Tree klassen och har ett godtyckligt antal sub-träd istället av två. (4 poäng) d) Låt Tree ärva från ArityTree och uppdatera konstruktorerna. (2 poäng) 6

e) Utöka klassen ArityTree med en metod flatten() som returnerar alla data element (d.v.s inklusive alla element från alla subträden) i en lista. Fundera på vad en lämpligt returtyp är. Ordningen av elementen i listan spelar ingen roll. (4 poäng) f) Är det möjligt att använda ett objekt av typen ArityTree där ett objekt av typen Tree förväntas? Och tvärtom? Förklara varför det är logisk. (1 poäng) 7