Föreläsning 8. Designmönster



Relevanta dokument
Webbregistrering pa kurs och termin

Support Manual HoistLocatel Electronic Locks

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

Designmönster/Design patterns

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

PROGRAMMERING A VC# 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL C#

Webbreg öppen: 26/ /

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

Fördjupande uppsats i datalogi

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

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

Föreläsning 7. Grafiska användargränssnitt

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad programmering

Självkörande bilar. Alvin Karlsson TE14A 9/3-2015

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

Preschool Kindergarten

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

Vad är mönsterspråk?

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

Design Patterns. En kort introduktion

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

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

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

Tentamen i Objektorienterad programmering

Beijer Electronics AB 2000, MA00336A,

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

Användarhandbok. MHL to HDMI Adapter IM750

LULEÅ TEKNISKA UNIVERSITET

Övningar Dag 2 En första klass

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Nr 17 Överenskommelse med Thailand om radioamatörverksamhet

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

Objektsamlingar i Java

Mer om metoder och abstraktioner

Symbolisk data. quote. (define a 1) (define b 2) (jacek johan david) (list a b)

Sätt att skriva ut binärträd

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

Föreläsning 15: Repetition DVGA02

Föreläsning 12: Exempel och problemlösning

Pedagogisk planering. Ron Chlebek. Centralt Innehåll. Svenska/Engelska. Lego Mindstorms. Syfte: Matematik

Del 2 Processkonsultation Edgar Schein

Installation av F13 Bråvalla

De senaste åren har det hänt en hel del på ATO Fritid

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

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

RADIATION TEST REPORT. GAMMA: 30.45k, 59.05k, 118.8k/TM1019 Condition D

Designmönster - EMW. Kent Petersson epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL:

Rhino3D. Schackbräde. Krav. Några detaljer som kan vara bra att känna till:

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

OOMPA 2D1359 Föreläsning 2

State Examinations Commission

tentaplugg.nu av studenter för studenter

Lehigh Valley Hospital Schuylkill Portal User Q&A

IRAB Mottagare sida 2-5 Tele Radio AB Mottagare sida 6

< THE SHELF SYSTEM FILLED WITH POSSIBILITIES. Design Anne Krook

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

Alias 1.0 Rollbaserad inloggning

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

2.45GHz CF Card Reader User Manual. Version /09/15

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

Space Shooter. Projektrapport i kursen Avancerad C/C++ (DVA303) vid Mälardalens Högskola av Lars Lindqvist och Niklas Nolte

Questionnaire for visa applicants Appendix A

KARL ANDERSSON & SÖNER

Introduktion till arv

Arctic. Design by Rolf Fransson

Mekanik FK2002m. Kraft och rörelse II

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

Styrteknik: Grundläggande logiska funktioner D2:1

Multifunktions-Detector Multi detector

Klassificering av brister från internaudit

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

SVENSK STANDARD SS-EN ISO 19108:2005/AC:2015

Plats för projektsymbol. Nätverket för svensk Internet- Infrastruktur


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

En bild säger mer än tusen ord?

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

Certifikat. Detta certifikat intygar att. Moelven Årjäng Såg AB

Problem som kan uppkomma vid registrering av ansökan

Objektorienterad programmering

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

säkerhetsutrustning / SAFETY EQUIPMENT

Ändringar i språkfiler i e-line 3.42A

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd

LÄNKHJUL S3. Monteringsanvisning för: Länkhjul S3

Programmering A. Johan Eliasson

Scratch Junior. makeandshape.com. by MIT. Gränssnitt Scratch Junior

Mekanik FK2002m. Kraft och rörelse I

IMPORTANT! RETAIN FOR FUTURE REFERENCE PLEASE READ CAREFULLY VIKTIGT! BEHÅLL FÖR FRAMTIDA REFERENS LÄS IGENOM INSTRUKTIONSMANUALEN

Observer Pattern och MVC. Objekt-orienterad programmering och design Alex Gerdes, 2016

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

Västsvenska paketet Skattning av trafikarbete

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

Rev No. Magnetic gripper 3

Transkript:

Föreläsning 8 Designmönster

Designmönster När man designar program kan det vara viktigt att förstå hur man tidigare gått till väga när man konstruerat program. Kännedom om dessa tillvägagångssätt kan snabba upp designprocessen och leda till bättre program i slutändan. Olika tillvägagångssätt att konstruera program kallas designmönster. Dessa är alltså bra lösningar till ett antal vanliga problem inom (objektorienterad) mjukvarudesign. Inspirationen till designmönster inom objektorienterad programmering kommer från arkitekturen där man använder olika arkitekturstilar vid husbygge. 2

Designmönster 1994 utkom Design Patterns, Elements of Reusable Object- Oriented Software av Gamma, Helm, Johnson och Vlissides. Boken lanserade idén om designmönster för mjukvaruutveckling. Den utgör en katalogisering av typiska problem och deras typiska lösningar. Boken är dock svår att läsa om man inte har programmerat mycket tidigare. 3

Designmönster Ingen ny Java-syntax krävs för att använda designmönster. Tre exempel på designmönster ges i boken: - Holder Pattern - Proxy Pattern - Composite Pattern 4

Första designmönstret Namn: Holder Pattern Problem: Ett objekt (A) måste kunna nås eller ändras av två eller flera klasser (klienter). (Jämför med globala variabler i andra programmeringsspråk.) Struktur: Skapa ett andra objekt (Holder-objekt) vars enda syfte är att innehålla objektet A och setoch get-metoder som klientobjekten kan använda. För- och nackdelar: Nackdelarna är att man måste skapa ett extra objekt och att ingen av klientobjekten kan komma åt A direkt. Fördelarna är att A är inkapslad, klassen för Holder-objektet är lätt att läsa och skriva och Holder-objektet förenklar koden för klientklasserna. 5

Holder Pattern SomeObjectHolder - _someobject: SomeObject + SomeObjectHolder() + getsomeobject(): SomeObject + setsomeobject(someobject): void Client1 Client2 Client3 6

Problemspecifikation: Problemexempel Create a frame with a rectangle and an ellipse, three radio buttons (red, blue, and green), and a quit button. Clicking on a radio button should change the current color (and make the button selected). When the user clicks on one of the shapes, the shape should appear selected, and the color of the shape should change to the current color. 7

Problemexempel Analys: green blue red Quit 8

Problemexempel Design: ColorHolderApp ColorShapePanel ColorHolder ControlPanel SmartRectangle SmartEllipse QuitButton ColorButton 9

Andra designmönstret Namn: Proxy Pattern Problem: Av olika anledningar vill man inte använda sig av ett objekt direkt (exempelvis kan objektet ändra sig från en tid till en annan). Man vill komma åt objektet men också få objektet att utföra något. Struktur: Skapa ett gränssnitt som definierar en roll, ett eller flera objekt (aktörer) som implementerar gränssnittet, ett proxy-objekt som också implementerar gränssnittet men som delegerar alla metodanrop till någon av aktörerna, samt ett eller flera klientobjekt. För- och nackdelar: Klientobjekten blir enklare. Nackdelarna är att man måste skapa ett extra objekt (proxy-objektet) och att ett extra metodanrop ska göras varje gång proxyn ska utföra något. 10

Proxy Pattern <<interface>> SomeRole SomeObject SomeObjectProxy - _someobject: SomeObject + SomeObjectProxy() + setsomeobject(someobject): void + All methods that the actor SomeObject has Client1 Client2 Client3 11

Skillnad mellan Holder och Proxy Om man behöver lagra ett värde som kan ändras (exempelvis en färg) och som andra objekt måste ha tillgång till då är det troligt att det är Holder-mönstret som ska användas. Om man behöver lagra ett värde som kan ändras och som man vill kunna skicka ett meddelande till för att något ska uträttas då ska man överväga Proxymönstret. 12

Problemspecifikation: Problemexempel Design a frame that contains two regions. One region should contain two pictures of cars. The other region should contain three buttons. Clicking on a car selects it and it remains selected until one clicks elsewhere in the region. Clicking a button makes the current car (if any) move to the right, move to the left, or stop. If no car is selected, clicking a button should have no effect. Once started, a car keeps moving until either (1) it reaches the edge of the region containing it or (2) the user selects it and clicks the stop button. 13

Problemexempel Analys: Reverse Stop Quit Forward 14

Problemexempel Design: CarProxyApp CarProxyPanel CarProxy ControlPanel MoveTimer Car QuitButton SpeedButton 15

Tredje designmönstret Namn: Composite Pattern Problem: Ett klient-objekt vill skicka ett meddelande till ett sammansatt objekt och få meddelandet förmedlat till objektets samtliga delar. Struktur: Skapa ett gränssnitt som definierar en roll, ett sammansatt objekt och dess delar (som också är objekt) som implementerar gränssnittet, samt ett eller flera klientobjekt. För- och nackdelar: Klientobjekten blir enklare. Lätt att lägga till fler komponenter (som i sin tur kan vara sammansatta) i det sammansatta objektet. Nackdelen är att det kan bli för lätt att lägga till komponenter (rörigt). 16

Composite Pattern <<interface>> SomeRole Client SomeObject1... SomeObjectN SomeObjectComposite - _someobject1: SomeObject1... - _someobjectn: SomeObjectN + SomeObjectComposite() + Methods in interface 17

Problemspecifikation: Problemexempel Design a frame with a space alien and a slider. The space alien bounces around the frame from one edge to another. Moving the slider sets the speed at which the alien bounces. The space alien should be composed of three ellipses. 18

Problemexempel Analys: 0 25 Quit 19