Teoridel (svaren direkt på lydelsen)

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

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

Teoridel (svaren direkt på lydelsen)

OOMPA 2D1359 Föreläsning 8

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

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

OOMPA 2D1359 Föreläsning 2

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

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

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

Laboration 1: Figurer i hierarki

Tentamen i Objektorienterad modellering och design Helsingborg

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Föreläsning 15: Repetition DVGA02

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

Tentamen i Objektorienterad modellering och design

Föreläsning 13 Innehåll

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

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

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

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

DAT043 - Föreläsning 7

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

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

Länkade strukturer. (del 2)

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

Objektorienterad programmering i Java

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

TENTAMEN OOP

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Objektorientering. Grunderna i OO

Objektorienterad Systemutveckling 1 (7,5 hp)

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

..arv Arv kan delas in i två huvudtyper Arv för specifikation dvs arv av protokoll Arv av kod dvs arv av beteende och struktur. 2203$ ) UHOlVQLQJ.

OOP Tenta

Tentamen i Objektorienterad modellering och diskreta strukturer

Föreläsning 9: Arv och UML

TENTAMEN OOP

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

Föreläsning REPETITION & EXTENTA

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

Repetition av OOP- och Javabegrepp

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

Objektorienterad Programmering (TDDC77)

Kurskod D0010E Datum Skrivtid 5tim

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

Repetition av OOP- och Javabegrepp

Objektorienterad programmering

Objektorienterad Programmering (TDDC77)

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

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

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

Tentamen i Grundläggande programmering STS, åk

Laboration 2: Designmönster

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

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.

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

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

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Lösningar till tentamen i EDAF25

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

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

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

Lösningar till tentamen i EDAF25

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

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

PROGRAMMERINGSTEKNIK TIN212

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Föreläsning 8. Designmönster

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

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen ID1004 Objektorienterad programmering October 29, 2013

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN OOP

Arv. Objektorienterad och komponentbaserad programmering

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Inkapsling (encapsulation)

Imperativ programmering. Föreläsning 4

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Objektorienterad Programmering (TDDC77)

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

Introduktion. Byggstenar TDBA

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

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

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

Tentamen i Objektorienterad modellering och diskreta strukturer

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

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Laboration 1 - Grunderna för OOP i Java

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Transkript:

ND, KTH 2D359 998-0-20 Sid (0) Tentamen i 2D359 Objektorinterad modellering programmering och analys Tisdag den 20 oktober 998 kl. 4-9 MED KORT LÖSNINGSFÖRSLG Inga hjälpmedel tillåtna. Poäng och betyg: 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! Teoridel (svaren direkt på lydelsen). (2) Förklara vad följande begrepp innebär inom objektorienterad programmering: a) Överlagring (eng. overloading) Se udd avsnitt 2.3 + ordlistan sidan 355 b) Överskrivning (eng. overriding) Se udd avsnitt 2.4 + ordlistan sidan 355

ND, KTH 2D359 998-0-20 Sid 2 (0) 2. (2) Vad innebär det att ett programspråk är statiskt typat? I ett statisk typat språk anges typer för alla variabler, argument och metoder. Typkontroll kan utföras utgående från enbart programkoden. I kurslitteraturen stå det om (snarlika) startkt typade språk! Därför godkänns en beskrivning av sådana: Ett programmeringsspråk är starkt typat om typkompabilitet för alla uttryck som representerar värden kan avgöras från programkoden vid kompileringstillfället. 3. (5) Para ihop var och en av begreppen i svarstabellen med den beskrivning i den inledande listan av beskrivningar som bäst passar (0 av 4 beskrivningar skall alltså användas). För varje rätt svar får du plus en halv poäng och för varje felaktigt minus en halv poäng på den totala poängsumman på tentan (inget svar ger varken plus eller minus).. nvändaren av en komponent måste erbjudas all nödvändig information men ingen annan. aseras på inkapsling, polymorfi och arv C. enämningen på en uppmaning till ett objekt att utföra någonting D. eskrivningen av hur ett objekt skall reagera på ett visst meddelande E. estår av tekniker att hitta objekt, för att strukturera relationer och hantera processen att skapa objekt F. Detaljer i implementationen döljs G. En beskrivning av en viss uppsättning av objekts attribut och beteende H. En brainstormingliknande process I. En inkapsling av data och algoritmer för att manipulera dessa data J. En subklass kan definiera ett attribut med samma namn som ett i en superklass K. En variabel L. Ett objekt av en viss klass M. Meddelanden får endast skickas till argument, instansvariabler, nya objekt som returneras av en meddelandesändning eller globala variabler N. Olika klasser kan ha metoder med samma namn Svarstabell: egrepp Inkapsling Instans Klass Meddelande Metod Objektorienterad analys och design Objektorienterat språk Parnas princip Polymorfi The Law of Demeter ästa alternativ F L G C D E N M

ND, KTH 2D359 998-0-20 Sid 3 (0) 4. (5) Diskutera fördelar respektive nackdelar med arv respektive komposition. Se udd avsnitt 8.7-8.8, 0.2

ND, KTH 2D359 998-0-20 Sid 4 (0) 5. (3) Para ihop figurerna med den klassificering av typen av arv som bäst stämmer. Ellipse Rectangle Window Circle Square Win95Window MacWindow MotorLandVehicle C Polyline Vector tank engine Cartoon Stack wheels() speed() D Circle Square Car ike Lorry MotorCycle E Vector F Collection GraphicObject Ellipse Car Rectangle oat Set GraphicComponent mphibiouscar Svarstabell: Typ av arv rv för specifikation (eng. inheritance for specification) rv för specialisering (eng. inheritance for specialization) rv för konstruktion (eng. inheritance for construction) rv för utvidgning (eng. inheritance for extension) rv för begränsning (eng. inheritance for limitation) rv för kombinering (eng. inheritance for combination) Matchande figur C D E F 6. (3) Förklara kortfattat vad designmönster är (eng. design patterns) samt vad de är användbara till. Se föreläsningsanteckningar + udd kapitel 5 + EG

ND, KTH 2D359 998-0-20 Sid 5 (0) Problemdel (svaren på separata blad) 7. (4) nvänd den fragmentariska bekrivningen av klassen Vector nedan för att konstruera en mängdklass Set. I ett Set skall ett visst objektet endast få förekomma en gång, dvs om man försöker lägga till ett objekt som redan finns i mängden så skall ingenting hända. Implementera metoder så att följande meddelanden förstås av instanser av klassen. boolean isempty() //Är mängden tom? int size() //ntalet element i mängden void add(object) //Lägg till ett objekt boolean contains(object) //Finns objektet redan i mängden? boolean remove(object) //Ta bort objektet från mängden, fanns objektet i mängden så skall true returneras annars false. 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 elementt(int index) {... Genom att: //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 om obj fanns i vektorn så returneras true annars false */ public boolean removeelement(object obj) {...... a) implementera mängdklassen som subklass till Vector b) använda komposition via en instans av Vector. Lösning: a) b) class SetInh extends Vector { public void add(object o) { if(!contains(o)) this.addelement(o); public boolean remove(object o) { return removeelement(o); class SetComp { private Vector v = new Vector(); public int size(){

ND, KTH 2D359 998-0-20 Sid 6 (0) return v.size(); public boolean isempty(){ return v.isempty(); public boolean contains(object o){ return v.contains(o); public void add(object o){ if(!contains(o)) v.addelement(o); public boolean remove(object o){ return v.removeelement(o); 8. (4) Ett enkelt centralvärmesystem är uppbyggt av ett flertal värmelement med anslutna temperatursensorer. åde sensorer och värmelement är kopplade till en kontrollenhet. En sensor känner av temperaturen i en viss del av en byggnad och rapporterar till kontrollenheten om den med viss marginal avviker (uppåt eller neråt) från ett givet förinställt värde.

ND, KTH 2D359 998-0-20 Sid 7 (0) I dessa fall slår kontrollenheten antingen på eller av det värmelement som den aktuella sensorn är kopplad till. a) Konstruera ett klassdiagram på konceptuell nivå som beskriver systemet och de ingående objektens associationer. b) Rita ett sekvensdiagram som illustrerar meddelandeflödet mellan en sensor, kontrollenheten och värmeelementen både då sensorn meddelar att temperaturen är för låg och för hög. c) Konstruera ett tillståndsdiagram för en sensor. Ledning: i alla tre deluppgifterna räcker det med väldigt enkla diagram! Lösning: Några av flera möjliga lösningar a) Sensor Värmeelement..* * * Kontroll b) :Sensor :Kontroll :Värmeelement temp low(s n ) temp high(s n ) turn on() turn off() c). Temperature low enter/^kontroll.temperaturelow() [temperature low] Check high enter/check temperature Check low enter/check temperature [temperature high] Temperature high enter/^kontroll.temperaturehigh()

ND, KTH 2D359 998-0-20 Sid 8 (0) 9. (5) En enkel digital klocka har en urtavla och två knappar för att ställa in klockan. Klockan har två huvudlägen, visa tid och ställ in tid. I visa-tid-läget visas timmar och minuter. Ställin-tid-läget har två underordnade lägen, ställ-in-timmar respektive ställ-in-minuter. -knappen används för att ändra operationslägen: visa-tid, ändra-timmar, ändraminuter, visa-tid, osv. I operationslägena ändra-timmar respektive ändra-minuter används -knappen för att flytta fram timmarna respektive minuterna ett steg vid varje tryckning. åde -knappen och -knappen måste släppas innan en ny "händelse" utlöses. a) Konstruera ett tillståndsdiagram för klockan. b) Nu skall vi revidera klockan så att vi får en möjlighet att snabbare ställa in timmar och minuter. Om man i läget för att ställa in timmar eller minuter trycker på -knappen mer än 3 sekunder så skall timmarna respektive minuterna automatiskt räknas fram en gång per halvsekund. Konstruera ett tillståndsdiagram för klockan enligt denna reviderade modell. 7:5 Lösning: a) Display time do/show hours and minutes Set hours do/show hours Set minutes do/show minutes /increment hours /increment minutes b) Förfina tillståned Set hours och Set minutes (enklast via deltillstånd) Set hours Set minutes... Step /increment hours /increment min Step Waiting Waiting after(3s)/increment hours after(3s)/increment min uto uto after(0.5s)/increment hours do/show hours after(0.5s)/increment min do/show minutes 0. (7) Ett bolag för lokaltrafik i ett visst område använder sig av bussar och tunnelbanor för att transportera passagerare. Varje buss och tunnelbana tillhör ett garage. Vidare finns det en trafikledning med ansvar för att koordinera trafiken, bemanna bussar och tunnelbanor, samt ta hand om eventuellt uppkommande problem. Personalen på bolaget tillhör antingen kategorin förare eller trafikledare. En person som är trafikledare är knuten till trafikledningen och en som är förare till ett garage. ll personal har ett anställningsnummer, lön, arbetss-

ND, KTH 2D359 998-0-20 Sid 9 (0) chema samt eventuellt en chef. En förare har antingen kompetens att köra buss, tunnelbana eller bådadera. a) Konstruera CRC-kort över problemet. b) Konstruera ett klassdiagram med lämpliga arvshierarkier, associationer och beroenden. Diagrammet skall vara på konceptuell nivå. Lösning: a) CRC-kort används vanligen för att "brainstorma" fram klasser och relationer under flera iterationer. Efter en eller möjligen ett par iterationer skulle vi kunna ha identifierat följande klasser, ansvarsområden och relationer: Person subklasser: Förare, Ledare Hantera anställningsnummer, lön, arbetsschema Ledare superklasser: Person Sköter trafikledning Trafikled ning Trafikledning Koordinerar trafik Ledare Förare superklasser: Person Kompetens Fordon subklasser: uss, Tunnelbana Transporerar passagerare Hantera servicestatus, antal säten, årsmodell, presetanda mm uss superklasser: Fordon Garage Kör buss och/eller tunnelbana Garage Har hand om fordon och förare. emannar. Garage Fordon Förare eskriver en förares kompetens Förare Tunnelbana superklasser: Fordon olag Garage Trafikledning Rout Hantera väg-rout och tidtabell Fordon b) (som sagt konceptuell nivå) Trafikledn * Ledare /anställd olag * Schema underställd Person 0.. * chef chefar4 * Förare * Garage..2 Kompetens {en eller båda av komptenserna usskomp Tunnelbkomp * Fordon * Rout uss Tunnelb

ND, KTH 2D359 998-0-20 Sid 0 (0) Referenser udd - UML Distilled pplying The Standard Object Modelling Language st Edition, M. Fowler, K. Scott, 997 208 pages, ddison-wesley 0-20-32563-2. Fowler - Understanding Object-Oriented Programming With Java st Edition, Timothy udd, 998 384 pages, ddison-wesley 0-20-3088-9. C - Laboratory For Teaching Object-Oriented Thinking, Kent eck och Ward Cunningham, 989. PW - Dimensions of Object-ased Language Design, Peter Wegner, 987. WW - Object-Oriented Design: Responsibility-Driven pproach, Rebecca Wirfs-rock och rian Wilkerson, 989. EG - Utdrag ur Design Patterns Elements of Reusable Object-oriented Software (mönstret Observer) av Gamma, Helm, Johnson och Vlissides, 994.