NADA, KTH 2D359 & 2D360 999-0-23 Sid () Tentamen i 2D359 & 2D360 Objektorienterad modellering programmering och analys Lördag den 23 oktober 999 kl. 4-9 MED KORTA LÖSNINGSFÖRSLAG 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 följande begrepp: a) Polymorfi Se Budd kapitel 2 + ordlistan sidan 355. Pooley och Stevens s 24 b) Dynamisk bindning Se Budd avsnitt..2 + ordlistan sidan 350. Pooley och Stevens s 25 2. (5) Para ihop var och en av begreppen i svarstabellen med den beskrivning i listan av beskrivningar (A-O) som bäst passar (0 av 5 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 på viss fråga ger varken plus eller minus. A. Användaren av en komponent måste erbjudas all nödvändig information men ingen annan
NADA, KTH 2D359 & 2D360 999-0-23 Sid 2 () B. Baseras på inkapsling, polymorfi och arv C. Benämningen på en uppmaning till ett objekt att utföra någonting D. Beskrivningen av hur ett objekt skall reagera på ett visst meddelande E. Bestå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 O. Metoder med samma namn åtskiljs genom antalet argument och argumentens typer. Svarstabell: Begrepp Inkapsling Instans Klass Meddelande Metod Objektorienterad analys och design Objektorienterat språk Parnas princip Parameteröverlagring (parametric overloading) The Law of Demeter Bästa alternativ F L G C D E B A O M
NADA, KTH 2D359 & 2D360 999-0-23 Sid 3 () 3. (3) Komposition eller arv? I vissa fall förordas arv och i andra komposition. Diskutera föroch nackdelar med det ena respektive andra sättet. Se Budd avsnitt 0.3
NADA, KTH 2D359 & 2D360 999-0-23 Sid 4 () 4. (3) Designmönster (eng. Design Patterns). a) Förklara kortfattat vad ett designmönster är. Ett designmönster är en lösningen på ett återkommande problem skriven på ett sådant sätt att lösningen kan användas i olika situationer utan att man i detalj behöver använda den på samma sätt i dom olika situationerna. b) Hur brukar designmönster beskrivas? Via en standardiserad mall med följande rubriker: namn, problem, krafter och lösning. Under varje rubrik görs en relativt kort beskrivning av mönstret med avseende på den infallsvinkel rubriken indikerar. Vid behov kan andra rubriker och beskrivningar användas, som: exempel, konsekvenser och relaterade mönster. c) Nämn minst fyra orsaker till att använda designmönster. Förmedlar expertkunskap Ger kraftfull vokabulär Ger snabbare förståelse av programsystem Förenklar underhåll och omstrukturering 5. (6) Förklara vad följande typer av arv innebär och ge något exempel på hur respektive typ kan användas. a) Arv för specifikation (eng. inheritance for specification) Se Budd avsnitt 8.4.2 b) Arv för specialisering (eng. inheritance for specialization) Se Budd avsnitt 8.4.
NADA, KTH 2D359 & 2D360 999-0-23 Sid 5 () c) Arv för konstruktion (eng. inheritance for construction) Se Budd avsnitt 8.4.3 d) Arv för utvidgning (eng. inheritance for extension) Se Budd avsnitt 8.4.4 e) Arv för begränsning (eng. inheritance for limitation) Se Budd avsnitt 8.4.5 f) Arv för kombinering (eng. inheritance for combination) Se Budd avsnitt 8.4.6
NADA, KTH 2D359 & 2D360 999-0-23 Sid 6 () Problemdel (svaren på separata blad) 6. (4) Konstruera ett klassdiagram efter beskrivningen som följer. En skola består, med komposition, av en eller flera avdelningar. En avdelning tillhör precis en skola. På en skola kan det gå noll eller flera studenter. Varje student kan gå på flera skolor. Varje student kan följa noll eller flera kurser och varje kurs kan följas av noll eller flera studenter. En kurs är förutom att den är knuten till studenter också knuten till en eller flera avdelningar samt en eller flera instruktörer. En instruktör kan undervisa på en eller flera kurser. En avdelning kan ha en eller flera kurser. Varje avdelning består, med aggregering, av en eller flera instruktörer. En instruktör kan tillhöra en eller flera avdelningar. På varje avdelning är också noll eller en instruktör chef. En instruktör kan å sin sida vara chef på högst en avdelning. Lösning: ett möjligt diagram (i ett mer detaljerat diagram kan man lägga in namn på associationer som att ge associationen mellan student och kurs namnet går på eller liknande) Skola..* * Student *..* * Avdelning..*..* Kurs 0....*..*..* 0.. chef Lärare 7. (6) Konstruera ett tillståndsdiagram efter beskrivningen som följer. Vi har tre tillstånd: vilande, överföring och det sammansatta tillståndet taemot. Starttillståndet skall vara tillståndet vilande. Om objektet befinner sig i tillståndet vilande och händelsen skickafax inträffar så övergår det aktuella objektet i tillståndet överföring. Om däremot händelsen ringer inträffar så övergår objektet i det nästlade tillståndet taemot. Det sammansatta tillståndet taemot består av tre nästlade tillstånd (dvs deltillstånd): uppkopplad, processar och rensaupp. Starttillstånd i taemot är tillståndet uppkopplad. Om objektet befinner sig i tillståndet uppkoplad och händelsen rubrikok inträffar så övergår objektet i tillståndet processar. Om händelsen checksummaok inträffar i tillståndet processar så går objektet över i tillståndet rensaupp. Från tillståndet rensaupp går objektet ovillkorligt över i tillståndet vilande. Om händelsen läggpå inträffar i något nästlat tillstånd i taemot så går objektet över i tillståndet vilande. Om händelsen fel inträffar i taemot så skall objektet gå över i tillståndet vilande samtidigt som aktiviteten skrivfelrapport skall utföras
NADA, KTH 2D359 & 2D360 999-0-23 Sid 7 () vid övergången. Tillståndet taemot skall också ha ingångsaktiviteten (entry-aktiviteten) lyftupp och utgångsaktiviteten (exit-aktiviteten) kopplaifrån. Lösning: vilande ringer taemot skickafax uppkopplad rubrikok överföring läggpå checksummaok processar fel / skrivfelrapport rensaupp entry / lyftupp exit / kopplaifrån Kommentar: i ett mer realistiskt system borde det finnas en ovillkorlig övergång från övergång till vilande (men detta är ju "bara" en tentafråga så...)
NADA, KTH 2D359 & 2D360 999-0-23 Sid 8 () 8. (5) Konstruera ett aktivitetsdiagram med simbanor efter beskrivningen som följer. Det är tre inblandade parter: en kund, en försäljare och ett lager. Kunden gör en beställning av en viss produkt. Detta resulterar i att försäljaren tar hand om det hela genom att skriva en order till lagret som resulterar i att lagret tar fram materialet och skickar iväg det hela till kunden. Kunden och försäljaren väntar på att beställningen skall bli ivägskickad samtidigt som försäljaren skriver en faktura. Därefter väntar kunden på att ta emot beställningen och den faktura som försäljaren skickat iväg. Då kunden betalat fakturan så avslutar försäljaren ordern. Lösning: Kund Försäljare Lager Fråga efter produkt Ta hand om order Ta fram material Skicka ordern Ta emot order Fakturera kund Betala faktura Avsluta order
NADA, KTH 2D359 & 2D360 999-0-23 Sid 9 () 9. (6) En biluthyrningsfirma önskar ett datorbaserat system för biluthyrning. Firman består av ett huvudkontor och noll eller flera lokalkontor. Vid varje lokalkontor finns ett antal bilar (noll eller flera), ett antal kunder (noll eller flera). Mellan varje kund och ett lokalkontor kan ett hyresavtal ingås om att kunden skall hyra en (eller möjligen flera) bil (bilar). Knutet till varje kontor finns också ett antal anställda uthyrare. En av dessa anställda är också chef på det aktuella kontoret. Förutom denna information vill man också att systemet skall lagra adress, telefonnummer och faxnummer för varje lokalkontor. En uthyrare skall kunna boka en bil, registrera utlämning, registrera återläming samt debitera kund. a) Användningsfall Konstruera ett användnigsfallsdiagram som illustrerar vilka aktiviteter en uthyrare kan utföra med hjälp av systemet. b) Klassdiagram Beskriv systemet med ett klassdiagram. c) Då en kund hyr en bil så utspelar sig ungefär följande förlopp: kunden frågar uthyrare om det finns någon ledig bil uthyrare kontrollerar mot registret om det finns ledig bil om bil finns så görs en kreditupplysning av kunden och om kunden inte har några betalningsanmärkningar så registreras utlämningen (som i sin tur debiterar kunden) (efter ett tag) lämnar kunden tillbaks bilen och återläming registreras
NADA, KTH 2D359 & 2D360 999-0-23 Sid 0 () Konstruera ett sekvensdiagram som illustrerar detta förlopp. Lösning: a) Boka bil Uthyrare Registrera utlämning Registrera återlämning Debitera b) 0..* Uthyrare chef Huvudkontor Kund 0..* 0.. 0..* Lokalkontor Info adress telefon fax 0..* Hyresavtal Bil c) kund: uthyrare: register: kredit: hyrbil() bil := ledigbil() debitering: [bil not null] ok := kreditupplysning(kund) [bil not null and ok] lämnaut(bil) [bil not null and ok] debitera(kund) [bil not null and ok] registrera(kund, bil) skickafaktura() lämatillbaks(bil) återlämnad(kund, bil) Kommentar: flera olika varianter är ju möjliga (tex pilarnas utseende och hur man tar hand om resultatet kan variera, vem lämnar kunden tillbaks bilen till osv..)
NADA, KTH 2D359 & 2D360 999-0-23 Sid () 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. Pooley & Stevens - Using UML st Edition, Rob Pooley & Perdita Stevens, 999 260 pages, Addison- Wesley 0-20-36067-5.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.