INSTITUTIONEN FÖR MATEMATIK, NATUR- OCH DATAVETENSKAP TENTAMEN

Relevanta dokument
Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

Akronymer. CD5130 OOP, fk. Mjukvarumönster. Mjukvarumönster. Mjukvarumönster, forts. Mjukvarumönster, forts

Designmönster/Design patterns

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

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

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Mönster. Ulf Cederling Växjö University Slide 1

Sammanfattning och Tentamensinfo Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Software Design Introduction

Design. Vad lärde jag mig förra lekfonen? Hur bidrog jag Fll lärandet? Kravhantering sammanfa0ning 13/04/14

Kursplan. IK1004 Java - Grafiska användargränssnitt med Swing. 7,5 högskolepoäng, Grundnivå 1. Java - GUI Programming with Swing - Undergraduate Level

Design Patterns. Objekt-orienterad programmering och design Alex Gerdes, 2016

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

Dependencies High cohesion, low coupling. Objekt-orienterad programmering och design Alex Gerdes, 2018

Föreläsning 8. Designmönster


Tentamen NOA011 Systemarkitektprogrammet. 51 poäng

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

Objektorienterad Systemutveckling Period 3

Methods to increase work-related activities within the curricula. S Nyberg and Pr U Edlund KTH SoTL 2017

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

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

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

SOA One Year Later and With a Business Perspective. BEA Education VNUG 2006

Om fem stycken :GameObject ligger i vägen för b:bullet så kommer alltid loopen köras fem gånger. Välj ett alternativ

KravinsamlingAnalys Design Implementation Testning

Course Contents. Objektorienterad programmering. Goals. Buzzwords. Course overview (1) Book. Objektorienterad programmering d2. DAT050, 16/17, lp 2 1

Objektorienterad Systemutveckling 2

Flervariabel Analys för Civilingenjörsutbildning i datateknik

Module 1: Functions, Limits, Continuity

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

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

Tentamen NOA011 Systemarkitektprogrammet

Writing with context. Att skriva med sammanhang

Isolda Purchase - EDI

State Examinations Commission

Del av projektuppgiften. Systemarkitektprogrammet

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

Beijer Electronics AB 2000, MA00336A,

" «Observable» DataGenerator" betyder att klassen DataGenerator ärver från den abstrakta klassen Observable.

Preschool Kindergarten

Isometries of the plane

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

CHANGE WITH THE BRAIN IN MIND. Frukostseminarium 11 oktober 2018

Principer, Patterns och Tekniker. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Principer, Patterns och Tekniker. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Examensarbete Introduk)on - Slutsatser Anne Håkansson annehak@kth.se Studierektor Examensarbeten ICT-skolan, KTH

PORTSECURITY IN SÖLVESBORG

Kanban är inte din process. (låt mig berätta varför) #DevLin Mars 2012

Ett hållbart boende A sustainable living. Mikael Hassel. Handledare/ Supervisor. Examiner. Katarina Lundeberg/Fredric Benesch

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

endast har ett korrekt alternativ. Om

Principer, Pa+erns och Tekniker. Objekt-orienterad programmering och design Alex Gerdes, 2018

Högskolan i Skövde (SK, JS) Svensk version Tentamen i matematik

Materialplanering och styrning på grundnivå. 7,5 högskolepoäng

När? Varför? För vem? Resultat? (Artefakter?)

Creo Customization. Lars Björs

Design Patterns Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Module 6: Integrals and applications

Objektorienterad Programkonstruktion. Föreläsning jan 2016

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

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

Om oss DET PERFEKTA KOMPLEMENTET THE PERFECT COMPLETION 04 EN BINZ ÄR PRECIS SÅ BRA SOM DU FÖRVÄNTAR DIG A BINZ IS JUST AS GOOD AS YOU THINK 05

Swedish framework for qualification

Mutability och State. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

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

Collaborative Product Development:

Webbregistrering pa kurs och termin

Laboration 2: Designmönster

PA1415 Programvarudesign Second Resit

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

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

Consumer attitudes regarding durability and labelling

Undantag, Sammanfattning och Tentamensinfo. Objekt-orienterad programmering och design Alex Gerdes, 2016

Discovering!!!!! Swedish ÅÄÖ. EPISODE 6 Norrlänningar and numbers Misi.se

2.1 Installation of driver using Internet Installation of driver from disk... 3

Dependencies High cohesion, low coupling. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Design Patterns. Objekt-orienterad programmering och design Alex Gerdes, 2018

Stad + Data = Makt. Kart/GIS-dag SamGIS Skåne 6 december 2017

Förändrade förväntningar

ISO STATUS. Prof. dr Vidosav D. MAJSTOROVIĆ 1/14. Mašinski fakultet u Beogradu - PM. Tuesday, December 09,

Workplan Food. Spring term 2016 Year 7. Name:

Hur fattar samhället beslut när forskarna är oeniga?

Introduktion ICAO-EASA.

Ökat personligt engagemang En studie om coachande förhållningssätt

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Styrteknik: Binära tal, talsystem och koder D3:1

Designmönster för sociala användningssituationer

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

Flytta din affär till molnet

Enterprise App Store. Sammi Khayer. Igor Stevstedt. Konsultchef mobila lösningar. Teknisk Lead mobila lösningar

Design Patterns. En kort introduktion

Datavetenskap. Beteendevetenskap MDI. Design

Välkommen in på min hemsida. Som företagsnamnet antyder så sysslar jag med teknisk design och konstruktion i 3D cad.

D-RAIL AB. All Rights Reserved.

Transkript:

INSTITUTIONEN FÖR MATEMATIK, NATUR- OCH DATAVETENSKAP TENTAMEN Kurs: Metoder för objektorienterad utveckling, 15 hp Kurskod: DV014C Kursmoment: 0040, Skriftlig tentamen Design/Realisering Datum: 2007-01-15 Tid: 15:00-19:00 Plats: 96:243 Lärare: Fredrik Bökman (fbn@hig.se, 076-2164724) Hjälpmedel: Inga särskilda Antal uppgifter: 7 Max antal poäng: 41 Betygsgränser: Minst 22 p av 41 för godkänt. Skriv ditt namn och frågans nummer på varje ark. Besvara endast en fråga per ark. Börja med att titta igenom hela tentamen. Uppgifterna är inte ordnade tematiskt eller i svårighetsgrad. LYCKA TILL!

Högskolan i Gävle Tentamen, DV014C 2 ( 8) (1) Diverse [12 p] (a) Grunden för Larmans GRASPs är RDD, responsibility-driven design. Beskriv i egna ord vad RDD handlar om. [1 p] (b) Förklara vad Larmans GRASP Creator handlar om. Vilket problem är det som skall lösas och hur ser lösningen ut? [2] (c) Hitta på ett eget exempel (inte från Larman) där du använder Creator. Beskriv designalternativen och det val du gör utifrån Creator. [2] (d) Beskriv vad som menas med designmönster. [1] (e) Hur skall man gå tillväga ifall man har uppfunnit ett nytt designmönster? [1] (f) Förklara vad som menas med the Model-View Separation Principle. [1] (g) Vilket designmönster (GoF) förknippar du med modell-vy-separationen? Varför? [1] (h) Ett av Larmans GRASPs handlar bl.a. om hur man skapar utbytbara mjukvarukomponenter. Eftersom klassen User beror av klassen Server måste User ändras ifall vi vill byta ut Server mot Server2. Hur kan man lösa detta så att User inte behöver ändras när Server byts mot Server2? Beskriv lösningen i egna ord samt en figur. [3] User Server (2) Databaser [3 p] När en applikation kodad i ett objektorienterat språk som Java skall kopplas till en relationsdatabas krävs någon form av mappning mellan Javas objektmodell och relationsdatamodellen. Beskriv ett lämpligt relationsschema för följande domänklassdiagram. (Visa alltså vilka tabeller, kolumner och nycklar som är lämpliga.) Motivera dina lösningar i text. Photo datetaken binaryim age 0..1 1 Player name position 1..* * age gender Team 1 * Trainer name trainerlicense

Högskolan i Gävle Tentamen, DV014C 3 ( 8) (3) POS enteritem [3 p] enteritem(id, qty) :Register 2: makelineitem(desc, qty) :Sale 1: desc = getproductdesc(id) 2.1: create(desc, qty) :Product Catalog sl: SalesLineItem 1.1: desc = get(id) 2.2: add(sl) : Map<ProductDescription> lineitems : List<SalesLineItem> (Från Larman, Figur 20.2, sid 372) I kursboken (Craig Larman, Applying UML and Patterns, 3:e uppl., Pearson Education, 2005) finns ett löpande exempel POS (PointOfSale) om försäljning med kassaapparater. Ovanstående interaktionsdiagram visar hur systemoperationen enteritem är tänkt att lösas av objekt i domänlagret (affärslogiken). Uppgift: Skapa Javaklasser (d.v.s. kod) som realiserar så mycket som möjligt av designdiagrammet ovan. Lägg till nödvändiga detaljer. Det behövs t.ex. en datatyp för qty (quantity). Ifall du behöver göra några antaganden så beskriv dem. Motivera val mellan olika alternativ. Du skall inte lägga till kod som behövs för att systemet skall fungera i praktiken (t.ex. användargränssnitt eller databaser), inte heller stöd för andra systemoperationer än enteritem. Det ingår inte i uppgiften att rita ett klassdiagram, men det kanske underlättar.

Högskolan i Gävle Tentamen, DV014C 4 ( 8) (4) Facade och Singleton [10 p] I Larman (Applying UML and Patterns, 3:e uppl., 2005, sid 462) finns följande beskrivning av designmönstret Facade: Problem: A common, unified interface to a disparate set of implementations or interfaces such as within a subsystem is required. There may be undesirable couplings to many things in the subsystem, or the implementation of the subsystem may change. What to do? Solution: Define a single point of contact to the subsystem a façade object that wraps the subsystem. Larman är tydlig med att Façade-objektet skall vara den enda ingången till subsystemet: the implementation and other components of the subsystem can t be seen by external components. Andra författare (t.ex. Grand, Patterns in Java, Vol 1, 1998 och Stelting & Maassen, Applied Java Patterns, 2002) anser tvärtom att Facade inte behöver innebära att subsystemets inre döljs för externa klienter. Klienter kan alltså, vid behov, skicka meddelanden direkt till objekt inne i subsystemet, utan att gå via Facade-objektet. Om man går tillbaka till den ursprungliga beskrivningen av Facade (Gamma, Helm, Johnson & Vlissides, Design Patterns, 1995) så står där bl.a.: Consequences [of Facade] 1. It shields clients from subsystem components making the subsystem easier to use. 2. It promotes weak coupling between the subsystem and its clients. 3. It doesn t prevent applications from using subsystem classes if they need to. Vad är egentligen bäst? (a) [2 p] Gör en jämförelse (diskutera för- och nackdelar) mellan (i) (ii) att bara tillåta anrop till subsystemet via Facaden och att tillåta klienter att anropa metoder direkt inne hos subsystemets klasser, utan att nödvändigtvis gå via Facaden. En av orsakerna till att GoF-boken förespråkade att klienterna skulle kunna gå runt facadeobjektet var att de språk (C++ och Smalltalk) som användes av författarna (GoF) inte kunde dölja subsystemets klasser för externa klienter. (b) [4 p] Hur kan man i Java se till att dölja subsystemets inre så att klienterna tvingas att endast använda facaden? Beskriv vilka språkmekanismer i Java som används och visa ett litet exempel på hur det kan se ut med en Facade, en Client och ett subsystem med de sinsemellan samarbetande klasserna A, B och C (eller intressantare namn) samt några lämpliga metoder.

Högskolan i Gävle Tentamen, DV014C 5 ( 8) Många designmönster liknar varandra och varje beskrivning av ett designmönster brukar ha en litet avsnitt Related Patterns. GoF (Design Patterns, 1995) kommenterar det t.ex. så här: You might think of a façade as an adapter to a set of other objects. But that interpretation overlooks the fact that (c) [1 p] Vad kan det vara för en viktig skillnad mellan Adapter och Facade som kommer efter But? (Ledtrådar: Vad är syftet med respektive mönster? Hur nya är de gränssnitt som är inblandade?) Det är vanligt att Facade-objekten implementeras enligt designmönstret Singleton. (d) [3 p] Beskriv designmönstret (GoF) Singleton. Vad går det ut på? Visa hur det kan implementeras i Java. (5) Information hiding [3 p] I boken Code Complete 2 (Microsoft Press, 2:a upplagan, 2004) diskuterar Steve McConnell Information Hiding som en milstolpe i utvecklingen av software engineering: Information hiding is part of the foundation of both structured design and object-oriented design. In structured design, the notion of "black boxes" comes from information hiding. In objectoriented design, it gives rise to the concepts of encapsulation and modularity and it is associated with the concept of abstraction. Information hiding is one of the seminal ideas in software development (sid 92) Information hiding is one of the few theoretical techniques that has indisputably proven its value in practice, which has been true for a long time (Boehm 1987a). Large programs that use information hiding were found years ago to be easier to modify by a factor of 4 than programs that don t (Korson and Vaishnavi 1986). Moreover, information hiding is part of the foundation of both structured design and object-oriented design. (sid 97) Asking about what needs to be hidden supports good design decisions at all levels. It promotes the use of named constants instead of literals at the construction level. It helps in creating good routine and parameter names inside classes. It guides decisions about class and subsystem decompositions and interconnections at the system level. (sid 98) Get into the habit of asking, "What should I hide?" You'll be surprised at how many difficult design decisions vanish before your eyes. (sid 98) a) Vilken forskare var det som i början på 1970-talet introducerade begreppet information hiding? [0 p] b) Vilket av Larmans GRASP hänger starkt ihop med Information hiding? [1 p] c) Förklara varför Information hiding hänger ihop med just detta GRASP. I den här förklaringen bör du beskriva GRASP:et ifråga samt förklara hur information hiding är relevant i sammanhanget. [2 p]

Högskolan i Gävle Tentamen, DV014C 6 ( 8) (6) Frameworks [3 p] I kapitel 37 av Applying UML and Patterns (3:e upplagan) presenterar Craig Larman PFW, ett förenklat ramverk för persistens. Han är tydlig med att det finns bättre robusta liknande ramverk tillgängliga och att bokens exempel bl.a. är till för att ge en introduktion till design av ramverk i ett viktigt tillämpningsområde (persistens). Men vad är ett ramverk? Larman själv ger i ordlistan följande förklaring: framework A set of collaborating abstract and concrete classes that may be used as a template to solve a related family of problems. It is usually extended by subclassing for application-specific behavior. (sid 690) För att tydligare visa på skillnaden mellan ett ramverk (framework) och ett vanligt klassbibliotek eller toolkit kan följande citat ur GOF-boken (Design Patterns: Elements of Reusable Object- Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, Addison- Wesley, 1995) vara lämpliga: toolkit A collection of classes that provides useful functionality but does not define the design of an application. (sid 362) Toolkits don't impose a particular design on your application; they just provide functionality that can help your application do its job. They let you as an implementer avoid recoding common functionality. Toolkits emphasize code reuse. They are the object-oriented equivalent of subroutine libraries. (sid 26) framework A set of cooperating classes that makes up a reusable design for a specific class of software. A framework provides architectural guidance by partitioning the design into abstract classes and defining their responsibilities and collaborations. A developer customizes the framework to a particular application by subclassing and composing instances of framework classes. (sid 360) The framework dictates the architecture of your application. It will define the overall structure, its partitioning into classes and objects, the key responsibilities thereof, how the classes and objects collaborate, and the thread of control. A framework predefines these design parameters so that you, the application designer/implementer, can concentrate on the specifics of your application. The framework captures the design decisions that are common to its application domain. Frameworks thus emphasize design reuse over code reuse, though a framework will usually include concrete subclasses you can put to work immediately. (sid 26) Avslutningsvis, tillbaka till Larman: A framework relies on the Hollywood principle Don t call us, we ll call you. This means that the user-defined classes (for example new subclasses) will receive messages from the predefined framework classes. These are usually handled by implementing superclass abstract methods. (sid 623) Uppgift: Ge ett litet exempel som visar hur en applikation använder ett ramverk enligt Hollywoodprincipen (se ovan). Du kan välja ett ramverk du har arbetat med eller läst om, eller hitta på ett förenklat miniramverk som visar principerna. Exemplet bör innehålla klassdiagram, javakod samt förklaringar.

Högskolan i Gävle Tentamen, DV014C 7 ( 8) (7) Konsultföretaget K [7 p] Du har fått i uppgift att skriva en applikation åt ett litet konsultföretag K som har specialiserat sig på att hjälpa andra konsultföretag med kniviga programmerings- och modelleringsproblem. Applikationen skall hjälpa konsultföretaget K att fakturera sina kunder. Det finns redan en annan applikation X som hanterar fördelningen av uppdrag/projekt på olika anställda hos firman K, så det skall din nya applikation inte ta hand om. Faktureringen utgår från timkort som företaget K:s anställda skriver. Där framgår bl.a. datum, antal arbetade timmar och en projektkod. Varje anställd har en viss fix timtaxa som debiteras kunden. De anställda har en grundlön plus en bonus efter hur många timmar de har fakturerat under månaden. Din applikation skall inte hantera lönerna, det gör ett annat system Y, men den skall kunna hjälpa lönesystemet Y med antalet timmar. Din applikation skall bl.a. stödja följande uppgifter: Skapa fakturor för en viss tidsperiod (för alla kunder eller för en enda kund). Skapa en faktura för en viss kund och alla timkort som inte redan har fakturerats. Sortera kunder efter fakturerat belopp ( kundvärde ) Lagra kunduppgifter Lagra uppgifter om timkort Ta reda på antalet timmar en anställd har fakturerat under en given månad. (a) Beskriv vilka domänklasser som är lämpliga i ett klassdiagram. Motivera. [1 p] (b) Rita ett interaktionsdiagram och ett designklassdiagram som stödjer följande scenario: Ekonomiavdelningen skapar en faktura till en kund och på den faktura finns med allt arbete för kunden som inte redan tidigare fakturerats. Antag en traditionell trelagersarkitektur (GUI-domän-persistens). Motivera med hjälp av Larmans GRASP tilldelningen av ansvar för varje operation. [6 p]

Högskolan i Gävle Tentamen, DV014C 8 ( 8) Bilaga 1: Craig Larmans nio GRASP Information Expert Creator Controller Low Coupling High Cohesion Polymorphism Pure Fabrication Indirection Protected Variation Bilaga 2: 23 GoF patterns (Gamma, Helm, Johnson & Vlissides) Creational: Abstract factory, Builder, Factory, Prototype, Singleton Structural: Adapter, Bridge, Composite, Decorator, Façade, Flyweight, Proxy Behavioral: Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template method, Visitor