LULEÅ TEKNISKA UNIVERSITET



Relevanta dokument
2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3.

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

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

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

Konstruktion av klasser med klasser

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

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

OOP Objekt-orienterad programmering

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

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

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

tentaplugg.nu av studenter för studenter

Objektsamlingar i Java

Kurskod D0010E Datum Skrivtid 5tim

Objektorienterad Programmering (TDDC77)

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Tentamen i Objektorienterad programmering

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

Föreläsning 6: Introduktion av listor

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

Objektorienterad programmering i Java

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Tentamen FYTA11 Javaprogrammering

TENTAMEN OBJEKTORIENTERAD PROGRAMMERING I JAVA 5P ANVISNINGAR: FRISTÅENDE KURS, KVÄLL (ITM - ÖSTERSUND)

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Föreläsning 9: Arv och UML

DELPROV 1 I DATAVETENSKAP

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Objektorienterad Programmering (TDDC77)

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

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

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

Tentamen Datastrukturer D DAT 036/DIT960

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

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

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

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

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

DAT043 - föreläsning 8

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

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

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

Klasshierarkier - repetition

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 {... }

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

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

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

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

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

Länkade strukturer. (del 2)

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

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

Recitation 4. 2-D arrays. Exceptions

Föreläsning 12. Länkade listor

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

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

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

Lösningar till tentamen i EDAF25

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.

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:

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

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

Lösningsförslag till tentamen FYTA11 Javaprogrammering

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

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

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

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

c = s[2]; /* move chars around */ p = &s[2]; *p = *(p-1); --p; *p = *(p-1); s[0] = c; printf("%s\n",s); /* print the string */ English version

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

TENTAMEN OOP

Objektorienterad programmering D2

Tentamen Grundläggande programmering

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

PROGRAMMERING-Java Omtentamina

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

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

OOP Objekt-orienterad programmering

Föreläsning 8. Designmönster

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

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Tentamen, EDA501 Programmering M L TM W K V

Objektorienterad Programmering (TDDC77)

Tentamen OOP

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

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

Föreläsning 3. Stack

trafiksimulering Intro OU5 trafiksimulering

Transkript:

LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, Andrey Kruglyak, 491000 Resultatet offentliggörs senast: 2010-04-09. Tillåtna hjälpmedel: Inga. Kurskod D0010E Datum 2010-03-19 Skrivtid 5 tim OBS! Lösningar får inte baseras på fördefinierade klasser ur t ex Javas standardbibliotek annat än där detta uttryckligen tillåts. 1. Teori a) Vad innebär det att något är deklarerat protected? (1p) b) Låt A, B och C vara tre klasser av vilka B och C ligger i paketet p1 medan A ligger i p2. B ärver A och C har en A. Rita UML-diagrammet som beskriver klasserna och deras relationer till varandra. (1p) c) Denna klass innehåller ett programmeringsfel. Vilket då? (1p) public class Main { public int i = 10; public static int increasebyten(int i) { return i + this.i; d) Denna metod innehåller en annan slags fel. Vilket? (1p) public int factorial(int n) { return n * factorial (n-1); e) Vad är huvudpoängen med exceptions ( undantag )? (1p) f) Varför finns det två sorters undantag, checked (Exception) och unchecked (RuntimeException)? Förklara gärna med exempel om du vill. (1p) 2. Observer-Observable mönstret Designmönstret Observer (Observer design pattern på engelska) implementeras i Java med klassen java.util.observable och gränssnittet java.util.observer. Implementera två (eller flera) javaklasser där en väsentlig del av funktionen uppnås med hjälp av detta mönster. Du får själv hitta på vad klasserna ska göra. Förklara hur klasserna är tänkta att fungera och hur designmönstret därmed används. (6p) Klassen java.util.observable innehåller metoderna public void addobserver(observer o), protected void setchanged(), public void notifyobservers(object arg) och public void notifyobservers() medan gränssnittet java.util.observer endast deklarerar metoden public void update(observable o, Object arg).

Adam Maria Anna Carl John Pia Stina Bill Emma Thomas Figur 1: Ett släktträd. 3. Släktträd Figur 1 visar ett släktträd där pilarna går från barn till förälder. Man ser t ex att Marias föräldrar är Anna och John, och att Anna är en av Emmas förfäder (hennes mormor). Genom att följa pilarna i ett släktträd kan man hitta en persons alla förfäder. Du får i denna uppgift utgå från att släktträd är naturliga i den meningen att ingen är sin egen förfader/förmoder (alltså inga cykler) och att alla namn är unika 1. a) Deklarera en class Person för en person i ett släktträd. Man ska kunna skapa personobjekt på två sätt; med namn (en sträng) och personens två föräldrar (som är av typen Person) eller med enbart namn, vilket man gör om föräldrarna är okända. (3p) Exempel: Följande kod skapar släktträdet i Figur 1: Person anna = new Person("Anna"); Person john = new Person("John"); Person maria = new Person("Maria", anna, john); Person carl = new Person("Carl", anna, john); Person adam = new Person("Adam"); Person emma = new Person("Emma", maria, adam); Person stina = new Person("Stina"); Person pia = new Person("Pia", john, stina); Person bill = new Person("Bill"); Person thomas = new Person("Thomas", pia, bill); b) Lägg till en dynamisk metod public boolean isancestor(person p) som avgör om personen är en förfader/förmoder till p. (3p) En person A är en förfader/förmoder till en person B om, och endast om, A antingen är förälder till B eller en förfader/förmoder till en av B:s föräldrar. Exempel: Stina är förmoder till Thomas (hans mormor) eftersom hon är förälder till Pia som i sin tur är förälder till Thomas. 1 Strängar kan jämföras med equals och, från Java 5.0, även med ==.

4. Dynamic dispatch simulator State running : boolean + setactive(boolean b) : void <<abstract>> Event # time : double #duration : double - id ; int + Event(double time, double duration, int id) + <<abstract>> execute(state s) : void + tostring() : String StartEvent + execute(state s) : void StopEvent + execute(state s) : void Figur 2: UML-diagram. a) UML-diagrammet i figur 2 beskriver en del av en generell händelsestyrd simulator 2. Skriv klasserna. (4p) Event har, förutom två metoder för att utföra en händelse och få en strängrepresentation av den, variabler för en händelses tid, varaktighet och identitetsnummer. Identitetsnumret ska vara unikt och tilldelas automatiskt utan inblandning från eventuella underklasser. Du avgör själv hur tostring bör implementeras för att du ska kunna lösa uppgiften. Metoden setactive i State sätter klassens boolska flagga, som indikerar för simulatorns övriga delar om en simulering ska fortgå eller avbrytas. Metoden execute ska i underklasserna StartEvent och StopEvent implementeras så att simuleringen markeras för att fortgå respektive avbrytas genom anrop till metoden setactive i State-objektet när de exekveras. Du avgör själv om, och i så fall hur, klasserna ska skugga tostring. b) Skapa ytterligare en klass Main i ett annat paket än de i UML-diagrammet med en statisk metod printevent(event e) som skriver ut händelsen e:s typ, tid, varaktighet och identitetsnummer med System.out.println. (2p) 5. Begränsning: Du får inte använda instanceof för att t ex ta reda på vilken typ en viss händelse har. Implementera klassen som den beskrivs i bilagan. Om du vill får du göra den generisk men detta krävs inte. Metoden tostring() ska rada upp vectorns innehåll i ordning. Du behöver inte skriva någon javadoc. (6p) Observera förbudet mot användning av fördefinierade klasser som t ex java.util.vector(!) Ett exempel på lämplig intern representation i är arrayer. 2 Inte nödvändigtvis den i laboration 5.

Package Class Use Tree Deprecated Index Help equals, getclass, hashcode, notify, notifyall, wait, wait, wait PREV CLASS NEXT CLASS FRAMES NO FRAMES SUMMARY: NESTED FIELD CONSTR METHOD DETAIL: FIELD CONSTR METHOD Constructor Detail d0010e100319 Class java.lang.object d0010e100319. public () Creates an empty vector with length zero. public class extends java.lang.object Method Detail This class provides vectors that are similar to those provided by the class Vector in the Java standard library but simpler to use. A acts as an array that automatically grows and shrinks in length as needed. Elements are indexed 0 to size()-1, i.e. the current size of the vector minus one. By the first element is meant the element at index 0. The element at index size()-1 lies at the end of the vector. Constructor Summary () Creates an empty vector with length zero. Method Summary void add(java.lang.object item) Adds an element to the vector at its end. java.lang.object elementat(int i) Returns an element currently stored in the vector. void insert(java.lang.object item, int index) Inserts an element into the vector, which length increases by one. void remove(int index) Removes an element from the vector and decreases the length of the vector by one. void set(java.lang.object item, int index) Substitutes an element for another. int size() Returns the current length of the vector. java.lang.string tostring() Returns a string representation of the object. size public int size() Returns the current length of the vector. This is the number of successful add and insert operations performed minus the number of (successful and performed) remove operations. Returns: the current length. elementat public java.lang.object elementat(int i) add Returns an element currently stored in the vector. i - the index of the element. Returns: the element at index i. java.lang.arrayindexoutofboundsexception - if i is not a valid index. public void add(java.lang.object item) Adds an element to the vector at its end. The length of the vector increases by one and the added element ends up at index size()-1 in this enlarged vector. item - the item that should be added to the vector. Methods inherited from class java.lang.object Sida 1 av 4 Sida 2 av 4

remove public void remove(int index) Removes an element from the vector and decreases the length of the vector by one. The vector is contracted by shifting all elements at indices higher than that of the removed element one step towards the first element of the vector. index - the index of the element that should be removed. java.lang.arrayindexoutofboundsexception - if i is not a valid index. tostring in class java.lang.object See Also: Object.toString() Package Class Use Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES SUMMARY: NESTED FIELD CONSTR METHOD DETAIL: FIELD CONSTR METHOD insert public void insert(java.lang.object item, int index) Inserts an element into the vector, which length increases by one. The element ends up at index index shifting all other elements that were placed at indices index or higher one step towards the end of the vector. The inserted element ends up before all these. It is valid to insert an element into an empty vector but only at index 0. item - the inserted element. index - the index at which the element should be placed. java.lang.arrayindexoutofboundsexception - if index is not a valid index. set public void set(java.lang.object item, int index) Substitutes an element for another. item - the item that should replace the element currently in the vector. index - the index at which the substitution should be made. java.lang.arrayindexoutofboundsexception - if index is not a valid index. tostring public java.lang.string tostring() Returns a string representation of the object. Overrides: Sida 3 av 4 Sida 4 av 4