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

Relevanta dokument
Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Tentamen. Programmeringsmetodik, KV: Java och OOP. 20 januari 2005

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Föreläsning 9 Innehåll

Föreläsning 3. Stack

OOP Objekt-orienterad programmering

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

TENTAMEN OOP

Objektorienterad Programmering (TDDC77)

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. HT-15 Datum: Tid: kl

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

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

TENTAMEN OOP

Repetition av OOP- och Javabegrepp

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

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

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

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

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

Repetition av OOP- och Javabegrepp

Lösningsförslag till tentamen

Föreläsning 3. Stack

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

Lösningsförslag till tentamen Datastrukturer, DAT037,

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

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

Tentamen i Algoritmer & Datastrukturer i Java

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Tentamen i Algoritmer & Datastrukturer i Java

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

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

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

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

DAT043 Objektorienterad Programmering

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 2 Datastrukturer (DAT037)

Länkade strukturer, parametriserade typer och undantag

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

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

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

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

Föreläsning 7. Träd och binära sökträd

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.

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

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2002

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

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

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

Objektorienterad programmering i Java

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

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

1 Comparator & Comparable

Föreläsning 7. Träd och binära sökträd

13 Prioritetsköer, heapar

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga.

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

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

Tentamen. Lösningsförslag

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Föreläsning 2 Datastrukturer (DAT037)

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

OOP Objekt-orienterad programmering

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

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

OOP Omtenta

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

Lösningsförslag till tentamen

Tentamen i Programmeringsteknik I, ES,

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

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

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

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:

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

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

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

Tentamen i Programmeringsteknik I

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

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

Dugga Datastrukturer (DAT036)

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

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

TENTAMEN OOP

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

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

TENTAMEN I DATAVETENSKAP

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

Transkript:

Lösningsförslag Programmeringsmetodik, KV: Java och OOP 17 januari 2004 Examinator: Johan Karlsson Skrivtid: 9-15 Hjälpmedel: En av följande böcker: Barnes & Kölling: Objects First With Java a practical introduction using BlueJ Lewis & Loftus: Java Software Solutions Holm: Objektorienterad programmering och Java (eller motsvarande) Maxpoäng: 600 (plus 280 om du inte skrev duggan) För godkänt krävs normalt 500 poäng på kursen. Observera att uppgift 9-13 enbart ska lösas av de som inte skrev duggan! Betyg som ges är U, G och VG. Börja varje uppgift på ett nytt blad och skriv uppgiftsnummer längst uppe till höger. Skriv namn och personnummer på varje blad Uttryck dig mycket tydligt. Alla otydligheter tolkas till din nackdel. Om du är osäker på tolkningen av en fråga, skriv ner en rimlig tolkning av frågan och lös enligt den tolkningen. Är frågan uppdelad i flera deluppgifter kan man klara senare deluppgifter även om man inte klarat första. Försök därför lösa alla deluppgifter. Resultat kommer att tillkännages via webben. Lärare kommer förbi kl. 11.00 Lycka till!

Uppgift 1 (10 p) Uppgift 2 (40 p) public class Train { private int maxpassengers; private int current = 0; public Train(int maxpassengers) { this.maxpassengers = maxpassengers; public void addpassenger() throws TrainFullException { if (current < maxpassengers) { current++; else { throw new TrainFullException(); public class TrainFullException() extends Exception { public TrainFullException() { super(); public class MyClass { public void mymethod() { Train t = new Train(); try { t.addpassenger(); catch (TrainFullException() { System.err.println( MyClass: addpassenger: Train was full! ); 2

Uppgift 3 (60 p) public class Person { private String name; private int yearofbirth; /** * Create a Person object with name n * and year of birth y */ public Person(String n, int y) { name = n; yearofbirth = y; public class Employee extends Person { private String room; /** * Create an Employee object with * name n, year of birth y och room number room */ public Employee(String n, int y, String room) { super(n, y); this.room = room; /** * Create an Employee object with standard values for * name, year of birth och room number */ public Employee() { this( Olle Olsson, 1954, C321 ); 3

Uppgift 4 (100 p) 1. m firststar secondstar 4.3 false 2. m firststar secondstar 4.3 true 3. s m 1.2 false firststar secondstar 1.2 false 4.3 true 4

Uppgift 5 (120 p) Viktigt i designen var att ni fördelat ansvaret väl på olika klasser med så få beroenden som möjligt. Dessutom att ni klart visat på relationerna mellan klasserna. Uppgift 6 (60 p) Operation 1 Operation 2 Operation 3 Operation 4 Operation 5 Operation 6 Operation 7 Operation 8 Operation 9 Operation 10 Operation 11 Operation 12 Ej tillåten, attributet är final Ej tillåten, privata attribut ärvs ej Ej tillåten, privata attribut ärvs ej 5

Uppgift 7 (70 + 30 p) a) public class MySet implements Set { private int[] a = new int[20]; private int currentfreeindex = 0; public boolean contains(int elem) { boolean containsit = false; for (int i = 0; i < length(); i++) { if (a[i] == elem) { containsit = true; break; return containsit; public void add(int elem) { if (!contains(elem)) a[currentfreeindex++] = elem; public boolean equals(set s) { boolean equal = length() == s.length(); for (int i = 0; i < length(); i++) { if (!s.contains(a[i])) { equal = false; break; return equal; public int length() { return currentfreeindex; 6

b) Värstafalls-komplexitet: contains O(n) add O(n) equals O(n 2 ) length O(1) Då det finns n andra element i mängden och vi måste kontrollera om något av dom är likadant som det givna elementet så blir det O(n) För varje element som vi lägger till måste vi kontrollera de n andra elementen. Således O(n) Eftersom ordningen inte spelar nån roll i mängden (t.ex. är {2,3,4 samma mängd som {3,2,4) så måste vi för varje element i den ena mängden kontrollera detta mot alla andra element i den mängden. Då mängderna i värsta fallet -scenariot är lika stora (är de inte lika stora behöver vi inte ens kontrollera alla element) blir det n kontroller av n element, O(n 2 ) I implementationen i a) fanns det en räknare som höll reda på hur stor mängden var, alltså bara att kontrollera värdet av den, O(1) I a) uppgiften så var det angivet att ni skulle använda en array för att implementera ert Set. Exempelvis ett binärt sökträd som grund för implementationen hade snabbat upp metoden contains betydligt (och därmed de övriga metoderna). 7

Uppgift 8 (40 + 60 + 10 p) a) Vi måste som det står i uppgiften ha ett numeriskt värde på båda operanderna (barnen) för att kunna evaluera en operator (föräldern). Exempelvis så måste vi för att beräkna / måste vi ha ett numeriskt värde klart på både 12-4 (ej klart) och 2 (klart), dvs vi måste beräkna både vänster och höger barn innan vi beräknar en operand. Alltså, vi måste använda post-order. b) public String tostring() { return String.valueOf(value); // alternativt return + value; public String tostring() { return ( +leftchild.tostring()+ +operator+ +rightchild.tostring()+ ) ; c) Eftersom vi i b) först besöker vänster barn, sedan oss själva och till sist höger barn blir det in-order. 8