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:

Tentamen 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

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

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

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

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

Institutionen för TENTAMEN CTH HT-14 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

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

Föreläsning 5-6 Innehåll

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

TENTAMEN OOP

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

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

Tentamen Programmering fortsättningskurs DIT950

Tentamen, EDAA20/EDA501 Programmering

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

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

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

PROGRAMMERINGSTEKNIK TIN212

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

Tentamen i Programmeringsteknik I, ES,

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Föreläsning 3-4 Innehåll

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

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

Föreläsning 13 Innehåll

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

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

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

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

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

TENTAMEN OOP

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

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

Klasshierarkier - repetition

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

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.

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-4 Innehåll. Diskutera. Metod. Programexempel med metod

OOP Tenta

TDDD78 Viktiga begrepp, del 2

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

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

Exempel på användning av arv: Geometriska figurer

TENTAMEN OOP

Tentamen i Programmering

Tentamen OOP

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

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

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

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

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

Lösningsförslag tentamen FYTA11 Java

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

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

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.

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

DAT043 Objektorienterad Programmering

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

2D1339 Programkonstruktion för F1, ht 2003

Föreläsning 9-10 Innehåll

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

Institutionen för TENTAMEN CTH HT-13 Datavetenskap TDA550 DAG: TID: 8:30 12:30

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

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

tentaplugg.nu av studenter för studenter

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

LÖSNINGSFÖRSLAG TENTAMEN

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

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

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

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

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

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

F4. programmeringsteknik och Matlab

Lösningsförslag till tentamen

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Tentamen i Objektorienterad programmering

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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.

Transkript:

Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-17, TDA540 Dag: 2018-08-30, 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 (15 poäng) Betrakta klassen Uppgift1 nedan 1 : 1 public class Uppgift1 { 2 public static void main(string[] args) { 3 int[] xs = {3, 3; 4 int[] ys = {2, 3, 3, 3, 1, 4, 5, 2, 3, 3; 5 6 maf(xs, ys); 7 8 9 public static void maf(int[] xs, int[] ys) { 10 int i, j; 11 12 for (i = 0; i <= ys.length - xs.length; i++) { 13 for (j = 0; j < xs.length; j++) { 14 if (xs[j]!= ys[i + j]) 15 break; 16 17 if (j == xs.length) 18 System.out.println(i); 19 20 21 a) Förklara kort varje keyword i klassen. (2 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 Uppgift1) 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) beskrivning av hur maf metoden fungerar. (2 poäng) e) Ändra programmet: Gör så att metoden maf, 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. (5 poäng) (OBS ett fel svar ger poängavdrag) 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. import java.util.list; class Error { public static List<Character replicate(integer size, Character c) { List<Character> res = new List<Character>(); for (int i = 0; i < size; ++i) res.add(c) Uppgift 3 (7 poäng) class InRange { public static void inrange(int n) throws Exception { if (n < 42) throw new NumberFormatException("Way too small!"); else if (n > 1337) throw new Exception("Way too large!"); public static void main(string[] args) { int[] xs = {42, 33, 3137, 1000; for (int x : xs) { try { inrange(x); System.out.println(x + " is in range!"); catch (NumberFormatException e) { System.out.println(e.toString()); catch (Exception e) { System.out.println("Hmm..."); a) Vad skrivs ut då programmet körs? (4 poäng) b) Vad är den gemensamma superklassen till alla undantag (exceptions)? (1 poäng) c) Vad händer om vi tar bort sista catch blocket? (2 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 Circle klass. Man kan konstruera en cirkel med en mittpunkt och radie. Klassen skall därför ha följande konstruktor: public Circle(Point center, double radius) Konstruktorn skall kontrollera om radie är större än noll, om så inte är fallet kastar konstruktorn en IllegalArgumentException. Klassen ska ha (åtminstone) följande metoderna: public Point getcenter() public double getradius() public double area() public double circumference() public boolean contains(circle c) public boolean overlaps(circle c) Ni får anta att vi har bara positiva koordinater. Metoden area skall returnera cirkelns area och metoden circumference beräknar cirkelns omkrets. Metoden contains avgör om cirkeln c är innesluten av en (annan) cirkel, t.ex. om c1.contains(c2) returnerar true så är c2 innesluten av c1. Metoden overlaps kontrollerar om två cirklar är överlappande. OBS, i metoderna overlaps och contains kommer man troligen att jämföra reella tal med varandra och måste man ta hänsyn till trunkeringsfel. Hint: tillåt en viss skillnad när ni jämför reella tal, en så kallad epsilon. 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

Uppgift 6 (8 poäng) För att avgöra om ett n-siffrigt tal N är ett Keithtal skapar man en Fibonacci-liknande talföljd som börjar med de n siffrorna i N med den mest signifikanta siffran först. Man fortsätter sedan talföljden med termer som var och en är summan av de n föregående termerna. N är ett Keithtal om N ingår i den på detta sätt konstruerade talföljden och är större än 9. Betrakta exempelvis ett tresiffrigt tal N = 197. Talföljden blir då: 1, 9, 7, 17, 33, 57, 107, 197, 361,... Eftersom 197 ingår i talföljden så är det ett Keithtal. Om N = 123 då blir talföljden: 1, 2, 3, 6, 11, 20, 37, 68, 125,... och kan vi dra slutsatsen att 123 är inget Keithtal, för 123 är inte med i talföljden. Skriv en metod som givet ett heltal n returnerar om talet är ett Keithtal eller inte. 7