Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

Relevanta dokument
Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

Teoridel (svaren direkt på lydelsen)

Teoridel (svaren direkt på lydelsen)

2D1359 & 2D1360. Informationsblad 1, 3 September Objektorienterad analys, modellering och design: principiella tillvägagångssätt,

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

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

Objektorienterad Systemutveckling 1 (7,5 hp)

Objektorientering. Grunderna i OO

Tentamen i Objektorienterad modellering och design Helsingborg

Laboration 1: Figurer i hierarki

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

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

Objektorienterad Programmering (TDDC77)

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

OOMPA 2D1359 Föreläsning 8

Tentamen i Objektorienterad modellering och design

Objektorienterad Programmering (TDDC77)

Examen i 2D1359 & 2D1360 Objektorienterad modellering programmering och analys Tisdagen, 23 Oktober 2001, 14:00-19:00

OOMPA 2D1359 Föreläsning 2

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

Objektorienterad Programmering (TDDC77)

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

Objektkonstruktion. Vilka sorter finns? Varför ärver vi? Aggregering ger en lösare koppling till delarna än komposition. 1nJUDÃJUXQGOlJJDQGHÃUHJOHU

Introduktion. Byggstenar TDBA

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

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Objektorienterad analys och design

PROGRAMMERINGSTEKNIK TIN212

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

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

Föreläsning 9: Arv och UML

Kurskod D0010E Datum Skrivtid 5tim

TENTAMEN OOP

Föreläsning 15: Repetition DVGA02

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Tentamen, EDAA10 Programmering i Java

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Laboration 2: Designmönster

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

OOMPA 2D1359 Föreläsning 5

Laboration 2: Designmönster

TENTAMEN OOP

LÖSNINGSFÖRSLAG. Tentamen. Objektorienterad modellering och design. EDA665, 4 poäng

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

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

Objektorientering Användning

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Introduktionsmöte Innehåll

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

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Tentamen Datastrukturer D DAT 035/INN960

Länkade strukturer. (del 2)

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

Föreläsning 12. Länkade listor

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Objektorienterad programmering

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

EDAA01 Programmeringsteknik - fördjupningskurs

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

Design Patterns. En kort introduktion

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

Föreläsning 13 Innehåll

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

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

Tentamen i Objektorienterad modellering och design Helsingborg

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

Information. Computer

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

UML. Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN Åbo, Finland url:

Föreläsning 8. Designmönster

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

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

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Objektorienterad programmering i Java

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

Tentamen i Objektorienterad modellering och diskreta strukturer

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Designmönster, introduktion. Vad är det? Varför skall man använda mönster?

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

DAT043 - Föreläsning 7

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

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

Transkript:

NADA, KTH OOMPA 998-0-3 Sid () Extentamen i 2D359 Objektorinterad modellering programmering och analys Tisdag den 3 oktober 998 kl. -3 MED KORTA LÖSNINGSFÖRSLAG I dom flesta fall finns också lösningarna i föreläsningsanteckningarna, även då detta inte anges! Inga hjälpmedel tillåtna. Poäng och betyg: För godkänt krävs minst 0 poäng på vardera av teoridelen och problemdelen. För betyget 3, 4 och 5 krävs 20, 26 respektive 32 poäng (av möjliga 40). Övriga anvisningar: Teoridelen besvaras på dom prickade linjerna under respektive fråga och lämnas in tillsammans med övriga svarsblad. Lösningar till problemdelen lämnas in på separata blad. Frågorna ej säkert i svårighetsordning! Lösningar: Lösningsskisser på http://www.nada.kth.se/kurser/kth/2d359. Namn: Lycka till! Personnummer: Teoridel (svaren direkt på lydelsen). (4) Arv är centralt i objektorienterade språk och utvecklingsmetoder. a) Vad innebär det att en klass i ett objektorienterat språk ärver från en annan. Se Budd kapitel, 5.3, 8, 0

NADA, KTH OOMPA 998-0-3 Sid 2 () Man kan också tala om olika typer av arv. Förklara med en mening per delfråga vad de olika typerna av arv i b-g nedan innebär: b) Arv för specifikation (eng. inheritance for specification) Se Budd avsnitt 8.4.2 c) Arv för specialisering (eng. inheritance for specialization) Se Budd avsnitt 8.4. d) Arv för konstruktion (eng. inheritance for construction) Se Budd avsnitt 8.4.3 e) Arv för utvidgning (eng. inheritance for extension) Se Budd avsnitt 8.4.4 f) Arv för begränsning (eng. inheritance for limitation) Se Budd avsnitt 8.4.5 g) Arv för kombinering (eng. inheritance for combination) Se Budd avsnitt 8.4.6 2. (5) Förklara vad följande begrepp innebär inom objektorienterad programmering: a) Polymorfi Se Budd kapitel 2 + ordlistan sidan 355 b) Abstrakt klass Se Budd kapitel 8 + ordlistan sidan 349

NADA, KTH OOMPA 998-0-3 Sid 3 () c) Abstrakt metod Se Budd kapitel 8, avsnitt 2.5 + ordlistan sidan 349 d) Överskrivning (eng. overriding) Se Budd avsnitt 2.4 + ordlistan sidan 355 e) Överlagring (eng. overloading) Se Budd avsnitt 2.3 + ordlistan sidan 355 3. (2) Förklara kort begreppen datadriven och ansvarsdriven design samt vilken inverkan respektive metod har på programkonstruktionen. Se WBW 4. (3) Diskutera vilka konsekvenser användning av komposition respektive arv har på designen och underhållet av ett program. Se Budd avsnitt 8.7-8.8, 0.2

NADA, KTH OOMPA 998-0-3 Sid 4 () 5. (4) Den objektorineterade utvecklingsprocessen Beskriv de olika faserna i en objektorienterad utvecklingsprocess och vad man gör i respektive moment. Poängtera vilka av UML:s tekniker som används i respektive moment samt hur de olika faserna och momenten hänger ihop och påverkar varandra. Se Fowler kapitel 2 + föreläsninganteckningar 4, 9

NADA, KTH OOMPA 998-0-3 Sid 5 () 6. (2) Ge minst tre viktiga orsaker till att använda designmönster (eng. design patterns): Se Budd kapitel 5 + föreläsninganteckningar 0 + EG

NADA, KTH OOMPA 998-0-3 Sid 6 () Problemdel (svaren på separata blad) 7. (4) Använd den fragmentariska bekrivningen av klassen Vector nedan för att konstruera en klass Stack med metoderna (beskrivningen på formen returtyp metodnamn(argumenttyp)): boolean isempty() // Är stacken tom? Object push(object) //Lägg ett element på stacken och returnera det Object peek() //Vad ligger överst på stacken Object pop() //Ta bort översta objektet från stacken public class Vector { //Är vektorn tom? public boolean isempty() {...} //Hur stor är vektorn? public int size() {...} //Ingår elem i vektorn? public boolean contains(object elem) {...} //Vilket element finns vid index? public Object elementat(int index) {...} } //Första elementet public Object firstelement() {...} //Sista elementet public Object lastelement() {...} //lägg till obj sist i vektorn public void addelement(object obj) {...} //ta bort obj från vektorn public boolean removeelement(object obj) {...}... Genom att: a) implementera stacken som subklass till Vector b) använda komposition via en instans av Vector. Lösning: Se Budd avsnitt 0.2. Observera att vi borde använda removeelementat(...). Vad händer annars om vi har dubbletter och tar bort ett element på stacken? 8. (4) Klass- och samarbetsdiagram: a) Konstruera ett klassdiagram med företag och personer. Där: ett företag har noll eller flera anställda varje person jobbar på högst fyra olika företag varje anställd har en chef som sin tur har en noll eller flera underställda. Sätt också ut: lämpliga rollnamn namn på eventuella associationer samt riktningar på dessa. b) Ett samarbetsdiagram (eng. collaboration diagram) som illustrerar följande enkla scenarie: En person (P) ber om "audiens" hos ett företag via dess personalavdelning (PA). PA meddelar P om att han kan komma för intervju hos sin eventuellt blivande chef C kl K dagen D. Personen kommer till receptionen (R) och frågar efter C. Receptionen kontrollerar om C är inne.

NADA, KTH OOMPA 998-0-3 Sid 7 () Är C inne så meddelar R C att P är på väg upp annars frågar R PA om ny tid och meddelar P den nya tiden. Lösning: Se föreläsningsanteckningar 5 och Fowler. a) Klassdiagram 0.. boss Works-for4 0..4 Person employee employer worker Company Manages4 b) Samarbetsdiagram 2.2.3b :[C not available] proposenewappointment(n) 2.2.2a: [C available] okey() P R 2.:askFor (C).:askForAudience().2:confirmAppointment(C, D, K) 2.2.3a:[C not available]n := askfornewappointment (C) 2.2.:checkIfAvailable() 2.2.2b:[C available]persononway(p) PA C 9. (6) En bandspelare har följande knappar som kontrollerar motorn: Rew << Play > FF >> Stop där Rew är Rewind och FF är Fast Forward. Stop par bandet mjukt. Om användaren byter riktning utan att först pa bandet (t ex om man trycker Play och sedan Rew) ska motorlogiken pa bandet automatiskt för att undvika bandbrott. Play-Rew ska alltså utföras som Play-Stop-Rew, Rew-FF som Rew-Stop-FF osv. Däremot behöver inte bandet pas om man trycker Play-FF, eftersom spelriktningen då är oförändrad. Antag att det finns ett objekt panel som skickar meddelandena rew,, ff och vidare till ett objekt control som följd av att användaren trycker på knapparna. Objektet control i

NADA, KTH OOMPA 998-0-3 Sid 8 () sin tur skickar meddelandena forward, fast forward, fast backward och till motor för att kontrollera bandets hastighet. a) Konstruera ett sekvensdiagram som visar meddelandesändningen mellan de tre ovan nämnda objekten. Täck speciellt in följande sekvens av knapptryckingar på panelen:,, ff, rew,. b) Konstruera ett tillståndsdiagram som beskriver motorns olika tillstånd samt övergångar mellan dessa. Hantera dom tillfälliga pen mellan fram- och bakåtspolning med speciella ptillstånd som tillfälligt par bandet och efter tiden t automatiskt går över i nästa tillstånd. Tex fastforward till fast backward ger sekvensen: fast forward, tillfälligt p, efter tiden t övergång till fast backward. Lösning: a) Panel Control Motor forward ff rew fast forward fast backward forward

NADA, KTH OOMPA 998-0-3 Sid 9 () b) Vi börjar med att identifiera tillstånden i tillståndsdiagrammet i (a) (detta hör gentligen inte till svaret utan är ett steg på vägen för att komma fram till det). Panel Control Motor Playing Stopped ff FastForward rew Waiting Rewinding Waiting2 Playing forward fast forward fast backward forward och här är tillståndsdiagrammet (som snarast visar motorkontrollenheten): FastForward entry/fast forward rew after(t sec) Waiting entry/ Waiting4 entry/ after(t sec) ff Rewinding entry/fast backward ff ff Stopped entry/ rew Waiting2 entry/ after(t sec) Playing entry/forward rew Waiting3 entry/

NADA, KTH OOMPA 998-0-3 Sid 0 () 0. (6) Antag att vi skall konstruera ett system för att hantera studenter, anställda, kurser, tentor och inrapportering till LADOK Följande lista och kort-korta beskrivningar av ingående objekt har vi fått från den administrativa avdelningen. I övrigt är vi fria att designa systemet efter vår egen förmåga och införa nya objekt om vi anser att detta behövs. Fast ett sidokrav från den administrativa avdelningen är att varje deluppgift skall få plats på högst en A4 var. (I ett senare skede kan dom tänka sig att vi gör mer detaljerade beskrivningar.) Objekt Beskrivning Student en person går kurser Lärare en person håller kurser har lön rapporterar in resultat till LADOK Kurs har deltagare har en kursledare/lärare har kurskod Studievägledning ansvarar för tentamensbokning Tentamen för kurs och moment anmälda tentander sal salsvakt, som bla skall ha lön LADOK inrapportering av kursmoment a) Konstruera CRC-kort över problemet. b) Konstruera ett klassdiagram med lämpliga arvshierarkier, associationer och beroenden. Diagrammet skall vara på (konceptuell) analysnivå.

NADA, KTH OOMPA 998-0-3 Sid () Lösning: a) Tex något i följande stil: Person subklasser: Student subklasser: Anställd, Student Hanterar information om en person: namn, adress, telefon, födelsenummer, email Student superklasser: Person Hanterar info om linjer/inriktingoch kursstatus Anställd superklasser: Person subklasser: Lärare Hanterar lön, anställningsnummer, utbetalningskonto, etc Lärare superklasser: Anställd Kurs LADOK Ansvarar för kurser och inrapportering av resultat Kurs LADOK Kurs Beskrivning, hemsidor, res, fanteckningar, labkurs Lärare Student Tentamen Studievägledning Tentamensbokning Student Tentamen LADOK Inrapportering och hantering av resultat Tentamen Salsbokning, tillsättande av vakt, tentalistor Anställd Student Kurs Lösning: ett möjligt diagram (jag har inte hunnit lägga in namn på associationer osv än!) Studievägledning Person Student LADOK Kurs Anställd Lärare.. salsvakt lärare.. Tentamen Referenser Budd - UML Distilled Applying The Standard Object Modelling Language st Edition, M. Fowler, K. Scott, 997 208 pages, Addison-Wesley 0-20-32563-2. Fowler - Understanding Object-Oriented Programming With Java st Edition, Timothy Budd, 998 384 pages, Addison-Wesley 0-20-3088-9. BC - A Laboratory For Teaching Object-Oriented Thinking, Kent Beck och Ward Cunningham, 989. PW - Dimensions of Object-Based Language Design, Peter Wegner, 987. WBW - Object-Oriented Design: A Responsibility-Driven Approach, Rebecca Wirfs-Brock och Brian Wilkerson, 989. EG - Utdrag ur Design Patterns Elements of Reusable Object-oriented Software (mönstret Observer) av Gamma, Helm, Johnson och Vlissides, 994.