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

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

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

TENTAMEN OOP

TENTAMEN OOP

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

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

Tentamen OOP

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

TENTAMEN OOP

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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:

Föreläsning 3-4 Innehåll

Föreläsning 2, vecka 8: Repetition

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

JAVAUTVECKLING LEKTION 11

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

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

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

Föreläsning 14. Filhantering

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Lösningsförslag till tentamen

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

F4. programmeringsteknik och Matlab

Del A (obligatorisk för alla)

Föreläsning 9-10 Innehåll

Lösningsförslag övning 2.

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

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

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

tentaplugg.nu av studenter för studenter

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

TDA550 - Objektorienterad programvaruutveckling, fk

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

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

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

OOP Objekt-orienterad programmering

DAT043 Objektorienterad Programmering

OOP Objekt-orienterad programmering

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

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

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

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

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Tentamen i Objektorienterad programmering

Typkonvertering. Java versus C

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

OOP Objekt-orienterad programmering

Föreläsning 3: Booleans, if, switch

Klasshierarkier - repetition

Tentamen , Introduktion till Java, dtaa98, dtea53

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

OOP Objekt-orienterad programmering

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

LÖSNINGSFÖRSLAG TENTAMEN

"if"-satsen. Inledande programmering med C# (1DV402)

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

Föreläsning REPETITION & EXTENTA

Lösningsförslag till tentamen FYTA11 Javaprogrammering

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

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

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

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

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

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

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

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

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

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Tentamen. Lösningsförslag

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

Objektorienterad programutveckling, fk

Instuderingsfrågor, del D

Lösningsförslag till tentamen

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Del A (obligatorisk för alla)

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

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

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Lösningar för tenta 2 DAT043,

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

Parallellism, återblick

Händelsestyrd simulering. Inledning. Exempel

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

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

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

Tentamen ID1004 Objektorienterad programmering December 15, 2012

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 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.

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

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.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Transkript:

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-01-09, Tid: 14.00-18.00 Uppgift 1 a) class används för en klassdeklaration som är ett mall för att skapa objekt public en modifierare som antyder att enheten (instansvariabel, metod, etc.) är tillgängligt för alla static en modifierare som anger att en enhet (variabel eller metod) tillhör själva klassen och är gemensamt för alla klassens objekt void returtyp som antyder att en metod har inget returvärde break slutar exekvera nuvarande loop if används för selektering mellan två satser beroende på en boolesk uttryck int används för att deklarera en variabel som kan spara en heltal for används för att skapa en räknareloop Klass Signatur Returtyp Statisk Match main(string[] args) void ja b) Match match(string pattern, String text) void ja String length() int nej String charat(int i) char nej PrintStream println(int i) void nej c) 15 match("test", "kein protest, du testest"); 4 for (i = 0; i <= text.length() - pattern.length(); i++) 5 for (j = 0; j < pattern.length(); j++) 6 if (pattern.charat(0)!= text.charat(0)) 1

7 break; d) Utskriften: 8 17 20 Metoden match skriver ut indexen av början av förekomsterna av strängen pattern i strängen text. e) import java.util.arraylist; import java.util.list; class Match { public static List<Integer> match(string pattern, String text) { List<Integer> indices = new ArrayList<>(); int i, j; for (i = 0; i <= text.length() - pattern.length(); i++) { j = 0; while (j < pattern.length() && pattern.charat(j) == text.charat(i + j)) j++; if (j == pattern.length()) indices.add(i); return indices; public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.print("Give pattern: "); String pattern = sc.nextline(); System.out.print("Give text: "); String text = sc.nextline(); System.out.println(match(pattern, text)); Uppgift 2 Det saknas en vänsterklämm (måsving) efter metodens parametrar. Variabeln m är av typen int men blir initialiserat med ett double värde. Det resulterar i en typfel. 2

Det saknas en return-sats. Förbättrade versionen: public static int power(int x, int n) { int m = 1; for (int i = 0; i < n; i++) m *= x; return m; Uppgift 3 a) Utskriften: 2 1 Division by zero! Done! b) 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) { if (a % b!= 0) throw new ArithmeticException("Remainder not zero!"); else 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(e.getMessage()); catch (ArrayIndexOutOfBoundsException e) { System.out.println("Out of bounds index!"); finally { System.out.println("Done!"); c) Det är klassen Throwable. 3

Uppgift 4 public class Rectangle { private final Point ul, lr; public Rectangle(Point upperleft, Point lowerright) { ul = upperleft; lr = lowerright; if (ul.getx() >= lr.getx() ul.gety() <= lr.gety()) throw new IllegalArgumentException("Invalid points!"); public Point getupperleft() { return ul; public Point getlowerright() { return lr; public int area() { return (lr.getx() - ul.getx()) * (ul.gety() - lr.gety()); public boolean contains(rectangle r) { return (ul.gety() >= r.ul.gety() && ul.getx() <= r.ul.getx() && lr.gety() <= r.lr.gety() && lr.getx() >= r.lr.getx()); public boolean overlaps(rectangle r) { boolean res = true; // Do not overlap on x-axis if (ul.getx() > r.lr.getx() r.ul.getx() > lr.getx()) res = false; // Do not overlap on y-axis if (ul.gety() < r.lr.gety() r.ul.gety() < lr.gety()) res = false; return res; Uppgift 5 a) Både klass B och C är subklasser av klass A vilket åstadkommas med extends A. 4

b) 1. 1 2. 2 3. 1 4. 1 5. 1 6. 2 c) 1. Korrekt: 1 2. Korrekt: 2 3. Korrekt: 1 4. Inkorrekt: man får en typfel för A är ingen subtyp av B 5. Korrekt: 2 6. Inkorrekt: man får en typfeil för C är ingen subtyp av B Uppgift 6 a) class Tree { Tree l; Tree r; long data; Tree(long data) { this.data = data; Tree (long data, Tree g, Tree d) { this(data); l = g; r = d; b) Det stämmer, i Match använder vi oss bara av det imperativa delen av Java, vi har inga instansvariabler eller instansmetoder. c) import java.util.arraydeque; import java.util.arraylist; import java.util.list; import java.util.queue; public class ArityTree { public List<ArityTree> subtrees; public final long data; ArityTree(long data) { 5

this.data = data; subtrees = new ArrayList<>(); public List<Long> flatten() { List<Long> elements = new ArrayList<>(); elements.add(data); for (ArityTree tree : subtrees) elements.addall(tree.flatten()); return elements; public List<Long> flattenbf() { List<Long> elems = new ArrayList<>(); Queue<ArityTree> queue = new ArrayDeque<>(); queue.add(this); while (!queue.isempty()) { ArityTree tree = queue.remove(); elems.add(tree.data); queue.addall(tree.subtrees); return elems; d) public class Tree extends ArityTree { Tree(long data) { super(data); Tree(long data, Tree l, Tree r) { this(data); subtrees.add(l); subtrees.add(r); e) se c) f) Nej, tvärtom ja. Vi kan använda en instans av en subklass där vi förväntar oss en superklass, dvs vi kan ge ett objekt av typen Tree där ett objekt av ArityTree förväntas. Vi är ju säkert att en Tree har allt vad en ArityTree också har (Tree är en subtyp av ArityTree. 6