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.