Tentamen Programmering fortsättningskurs DIT950

Relevanta dokument
/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

Föreläsning 2. Länkad lista och iterator

Föreläsning 2. Länkad lista och iterator

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

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

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

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

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

Generisk klass med typparameter Inre klass - ListIterator

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Objektorienterad Programmering (TDDC77)

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

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

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

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Länkade strukturer, parametriserade typer och undantag

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

Föreläsning 3. Stack

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

DAT043 Objektorienterad Programmering

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

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

Värde och typ? Problem. Vad skrivs ut? Referenssematik (1) Joachim von Hacht. Förklara (i detalj)! int x; int y; x = y = 1; out.println(x + ":" + y);

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

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

Dugga i Grundläggande programmering STS, åk

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

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

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

Objektorienterad Programmering (TDDC77)

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

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

Generics och polymorfism. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

Objektorienterad Programmering (TDDC77)

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

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

TENTAMEN OOP

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

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

Föreläsning 3 Datastrukturer (DAT037)

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

Concurrency Saker händer samtidigt. Process En instans av ett program

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

Tentamen i Objektorienterad modellering och diskreta strukturer

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

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

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

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.

Föreläsning 3. Stack

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

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

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

Fördjupad Java. Undantagshantering. Fel

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

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

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:

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

Föreläsning Datastrukturer (DAT036)

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

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen, EDAA10 Programmering i Java

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

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

Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10

Föreläsning 3 Datastrukturer (DAT037)

Tentamen i Objektorienterad modellering och design Helsingborg

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

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. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

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

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

Generics och polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Föreläsning 10. ADT:er och datastrukturer

Repetition av OOP- och Javabegrepp

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Objektorienterad programutveckling, fk

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

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

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

Länkade strukturer. (del 2)

Föreläsning 4 Innehåll

Instuderingsuppgifter läsvecka 2

Repetition av OOP- och Javabegrepp

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

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

Transkript:

Tentamen Programmering fortsättningskurs Datum: 2015-03-17 Tid: 08.30-12.30 Hjälpmedel: Engelskt-Valfritt språk lexikon Betygsgränser: U: -23 G: 24-43 VG: 44-60 (max 60) Lärare:. Någon besöker ca 10.00 och 11.30, 0707/311066 Granskning: Tentamen kan granskas på studieexpeditionen. Vi ev. åsikter om rättningen eposta mig och ange noggrant vad du anser är fel så återkommer jag (ta en bild och skicka). Instruktioner: För full poäng krävs ett läsbart, begripligt och heltäckande svar. Generellt 1p för varje relevant aspekt av problemet, konkreta kodexempel kan ge mer. Det räcker med enbart relevanta kodavsnitt, övrig kod ersätts med... import, hjälpklasser såsom Main, main-metod, etc...) (aldrig Oprecisa eller alltför generella (vaga) svar ger inga poäng. Konkretisera och/eller ge exempel. Det är aldrig någon risk att vara övertydlig! LYCKA TILL... 1

1. Vad avses med (förklara med en eller ett par meningar); 4p a) Imperativ programmering (jmf. gärna med funktionell programmering). b) Klassinvariant (class invariant). c) Implementationsarv. d) Statisk typ (compile time type). 2. Givet klasserna och gränssnitten nedan (ev. vänd sida). 6p a) Rita ett UML klassdiagram för dessa. b) Ange för a)-f) i koden nedan om kodstycket är korrekt eller ej. Om det ej är korrekt specicera om det är compile-time eller runtime-fel. Om det är korrekt, vad skrivs ut? // a C c = new A(); c.doit(); // b A a = new B(); a.doit(); // c IA ia = new C(); ia.doit(); // d IA a = new B(); IX x = (IX) a; x.doother(); // e IX x = new C(); A a = x; a.doit(); // f A a1 = new B(); a1.doyetother(1); 2

// Types ---------------------------- public interface IA { public void doit(); public interface IX { public void doother(); public class A implements IA { public void doit() { System.out.println("doIt A"); public void doyetother(double i) { System.out.println("doYetOther A " + i); public class B extends A { public void doit() { System.out.println("doIt B"); public void doyetother(int d) { System.out.println("doYetOther B " + d); public class C extends A implements IX { public void doother() { System.out.println("doOther C"); 3. Förklara utförligt begreppen värde- respektive referenssemantik (by value, by reference) och ge ett belysande kodexempel. Illustrera gärna med bilder. 4p 4. Klassen nedan bryter mot the Open Closed Principle (OPC). 6p a) Vad innebär OPC? b) På vilket sätt bryter klassen, eller kommer den att bryta, mot OPC? c) Åtgärda problemet. Förklara din lösning och visa den i Java-kod (skissa). // The class public class BreakOPC { 3

public enum AnimalType { DOG, CAT, BIRD public void feedtheanimals(animaltype animaltype) { switch (animaltype) { case DOG: // Complex code special for Dog break; case CAT: // Complex code special for Cat break; case BIRD: // Complex code special for Bird break; default: // General case 5. Vad skriver koden nedan ut? IllegalArgumentException och NullPointerException är båda subklasser till RuntimeException. 6p public static void main(string[] args) { try { doit(); System.out.println("main after doit"); doother(); System.out.println("main after doother"); catch (IllegalArgumentException e) { System.out.println("main IllegalArgumentException"); catch (RuntimeException e) { System.out.println("main RuntimeException"); public static void doit() { System.out.println("enter doit"); try { doother(); catch (IllegalArgumentException e) { System.out.println("doIt IllegalArgumentException"); throw new NullPointerException(); catch (NullPointerException e) { System.out.println("doIt NullPointerException"); throw new NullPointerException(); finally { 4

System.out.println("doIt finally"); System.out.println("exit doit"); public static void doother() { System.out.println("enter doother"); throw new IllegalArgumentException(); 6. Designmönster har används en del i kursen. 8p a) Beskriv kort vad ett designmönster är. b) Redogör för två olika designmönster. Vad är syftet med mönstret (i vilket sammanhang/på vilket sätt används det)? Skissa struktur i UML och implementation i Java-kod. 7. Redogör för trådar (aktiva objekt). Varför används de (i denna kurs)? Vilka problem kan man få? Ge ett konkret kodexempel på något problem och hur det kan åtgärdas. 8. Klassen nedan skall fungera som en enkellänkad cirkulär lista. En sådan ser ut som (vi antar att value är Integer); 6p 12p Man kan alltså bara gå åt ena hållet. a) Gör klart klassen genom att lägga till den kod som kan behövas vid kommentarerna (du får även ändra i bentlig kod). Tips: head används inte för någon data, jmf. root i Trie-klassen. Metoden add lägger till ett värde (och en nod) i listan. Exakt hur add skall implementeras får ni avgöra själva. b) Skapa en Iterator för klassen som en inre klass. Grässnittet för Iterator är; 5

public interface Iterator<T> { public boolean hasnext(); public T next(); public void remove(); // You don't need to implement remove Du tar själv eventuella designbeslut. Vad skall hända om man modierar listan samtidigt som man genomlöper den? Hantera detta. c) Implementera clone-metoden för klassen. Clone behöver inte bibehålla ordningen på elementen. /** * Class for a circular simple linked list */ public class CircularList<T> implements Iterable<T>, Cloneable { private Node head = new Node(null, null); private int size = 0; private class Node { T value; Node next; public Node(T value, Node next) { this.value = value; this.next = next; public CircularList() { // Possibly TODO // Add element t to list public void add(t t) { // TODO @Override public Iterator<T> iterator() { // TODO Iterator // TODO clone 6

9. Antag att vi har typerna och koden nedan. Den markerade raden (<) kommer inte att kompilera p.g.a. ett typfel. 8p a) Förklara varför. b) Modiera metoden writeall så att koden kompilerar d.v.s inte har något typfel. Du måste dessutom kort motivera varför det kommer att fungera. // In some method Sink<Object> s =...; Collection<String> cs =...; String str =...; str = writeall(cs, s); <----- Will not compile // Will send all elements to sink.flush and return last. public static <T> T writeall(collection<t> coll, Sink<T> snk) { T last = null; for (T t : coll) { last = t; snk.flush(last); return last; // Interface public interface Sink<T> { void flush(t t); 7