Design mönster. n n n n n n. Command Active object Template method Strategy Facade Mediator



Relevanta dokument
Mönster. n n n n n n n n n n. Singleton Monostate Null object Factory Composite Observer Abstract server Adapter Bridge Proxy

Återanvändning. Två mekanismer. Nedärvning av egenskaper (inheritance) Objekt komposition

Mönster. n n n n n. Visitor Decorator Extension Object State Taskmaster

Systemdesign fortsättningskurs

Webprogrammering och databaser. Begrepps-modellering. Exempel: universitetsstudier Kravspec. ER-modellen. Exempel: kravspec forts:

Datastrukturer och algoritmer

Databaser - Design och programmering. Programutveckling. Programdesign, databasdesign. Kravspecifikation. ER-modellen. Begrepps-modellering

Kontrakt baserad design. Design by contract

Subsystem. Klasser är ett bra sätt att organisera små system. Klasser är för små enheter för att organisera stora system

Föreläsningar 7,8 sept 24, sept 26 v 39). delvis DD Chapter 6.

Analys av algoritmer. Beräkningsbar/hanterbar. Stora Ordo. O(definition) Datastrukturer och algoritmer. Varför analysera algoritmer?

Databaser - Design och programmering. Databasdesign. Kravspecifikation. Begrepps-modellering. Design processen. ER-modellering

MS-A0409 Grundkurs i diskret matematik I

Föreläsning 10: Kombinatorik

MS-A0409 Grundkurs i diskret matematik Sammanfattning, del I

Operativsystem - Baklås

Universitetet: ER-diagram e-namn

Borel-Cantellis sats och stora talens lag

Egna funktioner. Vad är sin? sin är namnet på en av många inbyggda funktioner i Ada (och den återfinns i paketet Ada.Numerics.Elementary_Functions)

Innehåll Grafräknaren och diskret matematik...1 Vad handlar diskret matematik om?...1 Permutationer och kombinationer...3 Något om heltalsräkning...

Databaser - Design och programmering. Databasdesign. Funktioner. Relationsmodellen. Relationsmodellen. Funktion = avbildning (mappning) Y=X 2

Duo HOME Duo OFFICE. Programmerings manual SE

Universitetet: ER-diagram e-namn

Tommy Färnqvist, IDA, Linköpings universitet

Genomsnittligt sökdjup i binära sökträd

101. och sista termen 1

Föreläsning G04: Surveymetodik

Funktionsteori Datorlaboration 1

Datorövning 2 Fördelningar inom säkerhetsanalys

ENDIMENSIONELL ANALYS B1 FÖRELÄSNING VI. Föreläsning VI. Mikael P. Sundqvist

Digital signalbehandling Fönsterfunktioner

Vi har... Diskuterat olika objektorienterade mekanismer. Ha också tagit upp några krav på hur dom här mekanismerna ska användas

Plattformshissar från Cibes Lift för alla byggnader

1. Hur gammalt är ditt barn?

SveTys. Affärskultur i Tyskland. Vad är det? Och vad ska jag tänka på?

Allmänna avtalsvillkor för konsument

Remiss Remissvar lämnas i kolumnen Tillstyrkes term och Tillstyrkes def(inition) och eventuella synpunkter skrivs i kolumnen Synpunkter.

RESTARITMETIKER. Avsnitt 4. När man adderar eller multiplicerar två tal som t ex

z Teori z Hypotesgenerering z Observation (empirisk test) z Bara sanningen : Inga falska teser z Hela sanningen : Täcker alla sanna teser

Exempel. En klass för att inkapsla funktionen hos ett tangentbord. Nu kan många objekt skapas av klassen

1. Hur gammalt är ditt barn?

Lösningar och kommentarer till uppgifter i 1.1

Induktion LCB Rekursion och induktion; enkla fall. Ersätter Grimaldi 4.1

Många tror att det räcker

Höftledsdysplasi hos dansk-svensk gårdshund - Exempel på tavlan

Uppgifter 3: Talföljder och induktionsbevis

H1009, Introduktionskurs i matematik Armin Halilovic POLYNOM, POLYNOMDIVISION, ALGEBRAISKA EKVATIONER, PARTIALBRÅKSUPPDELNING. vara ett polynom där a

Anmärkning: I några böcker använder man följande beteckning ]a,b[, [a,b[ och ]a,b] för (a,b), [a,b) och (a,b].

Statistisk analys. Vilka slutsatser kan dras om populationen med resultatet i stickprovet som grund? Hur säkra uttalande kan göras om resultatet?

Övningstentamen i MA2018 Tillämpad Matematik III-Statistik, 7.5hp

Leica Lino. Noggranna, självavvägande punkt- och linjelasers

1. Test av anpassning.

SANNOLIKHETER. Exempel. ( Tärningskast) Vi har sex möjliga utfall 1, 2, 3, 4, 5 och 6. Därför är utfallsrummet Ω = {1, 2, 3, 4, 5,6}.

Datorövning 2 Fördelningar inom säkerhetsanalys

Översikt. Modern C++ Generisk programmering vs OOP. En titt i backspegeln... Generisk programmering. Objektorienterad programmering.

Visst kan man faktorisera x 4 + 1

Familje- juridik Här är dina rättigheter. Bostad& fastighet. Sambo eller gift? Sambo eller gift? Privata Affärers serie om. Del 3

Ekvationen (ekv1) kan beskriva en s.k. stationär tillstånd (steady-state) för en fysikalisk process.

Lärarhandledning Att bli kvitt virus och snuva - När Lisa blev av med förkylningen

Tentamen i Kunskapsbaserade system, 5p, Data 3

DEL I. Matematiska Institutionen KTH

vara ett polynom där a 0, då kallas n för polynomets grad och ibland betecknas n grad( P(

(a) om vi kan välja helt fritt? (b) om vi vill ha minst en fisk av varje art? (c) om vi vill ha precis 3 olika arter?

Sannolikheten. met. A 3 = {2, 4, 6 }, 1 av 11

Inledande matematisk analys (TATA79) Höstterminen 2016 Föreläsnings- och lekionsplan

Kompletterande kurslitteratur om serier

Minsta kvadrat-metoden, MK. Maximum likelihood-metoden, ML. Medelfel. E(X i ) = µ i (θ) MK-skattningen av θ fås genom att minimera

Samtal med Karl-Erik Nilsson

Digital signalbehandling Alternativa sätt att se på faltning

Geometriska summor. Aritmetiska summor. Aritmetiska talföljder kallar vi talföljder som. Geometriska talföljder kallar vi talföljder som

Föreläsning 2: Punktskattningar

Förfrågan till Klockarens redaktörer

x 1 x 2 x 3 x 4 x 5 x 6 HL Z x x x

Befolkning per födelseland Reviderad metod vid framskrivningar. Version: 2

REGULJÄRA SPRÅK (8p + 6p) 1. DFA och reguljära uttryck (6 p) Problem. För följande NFA över alfabetet {0,1}:

Hamnbanan Göteborg Dubbelspår Eriksbergsmotet - Pölsebobangården

Cartesisk produkt. Multiplikationsprincipen Ï Ï Ï

Introduktion till statistik för statsvetare

Tentamen i Statistik STG A01 (12 hp) 5 mars 2010, kl

Vad är det okända som efterfrågas? Vilka data är givna? Vilka är villkoren?

Bilaga 1 Formelsamling

Kontextfri grammatik (CFG)

IAB Sverige Juni 2017

TAMS15: SS1 Markovprocesser

Hambley avsnitt 12.7 (även 7.3 för den som vill läsa lite mer om grindar)

c n x n, där c 0, c 1, c 2,... är givna (reella eller n=0 c n x n n=0 absolutkonvergent om x < R divergent om x > R n n lim = 1 R.

Räkning med potensserier

Enkel slumpvandring. Sven Erick Alm. 9 april 2002 (modifierad 8 mars 2006) 2 Apan och stupet Passagesannolikheter Passagetider...

Lycka till! I(X i t) 1 om A 0 annars I(A) =

Resultatet av kryssprodukten i exempel 2.9 ska vara följande: Det vill säga att lika med tecknet ska bytas mot ett plustecken.

Utlandskyrkans krisberedskap

Tolkning av sannolikhet. Statistikens grunder, 15p dagtid. Lite mängdlära. Lite mängdlära, forts. Frekventistisk n A /n P(A) då n

Handbok i materialstyrning - Del F Prognostisering

Linjär Algebra (lp 1, 2016) Lösningar till skrivuppgiften Julia Brandes

Vikingen FutureLook. Delphi Finansanalys AB

Tentamen i Statistik, STA A13 Deltentamen 2, 5p 20 januari 2007, kl

n Marknadens minsta och mest robusta FRAinstrument n Marknadens högsta prestanda och användande n Uppfyller alla internationella standarder för

Jag läser kursen på. Halvfart Helfart

TAMS79: Föreläsning 9 Approximationer och stokastiska processer

MS-A0409 Grundkurs i diskret matematik Sammanfattning, del I

Transkript:

Desig möster

Desig möster Commad Active object Template method Strategy Facade Mediator

Commad Ett av de eklaste desig möstre Me också mycket avädbart Ett grässitt med e metod <<iterface>> Comm ad do()

Commad - exempel Behöver ite veta exakt vilket kommado Olika kommado ka behadlas av systemet på samma sätt <<iterface>> Comm ad do() RelayOCommad Mot oro RelayOffCommad MotorOff

Commad - exempel Kommado som drivs av sesor Sesor <<iterface>> Comm ad do() Sesor behöver ite veta ågot om kommadot Ka bytas ut är som helst Kommado associeras ite med sesor vid kompilerig, ka bytas ut dyamiskt Separerar fuktioe hos delara frå hopkopplige

Commad -exempel Emplyee <<iterface>> PayClassificatio calculatepay() CommissioedClassificatio SalariedClassificatio HourlyClassificatio 0..* SalesReceipt 0..* Tim ecard

Commad - Trasaktioer Ka avädas för att implemetera trasaktioer Ta emot data validera och köra <<iterface>> Trasactio validate() execute() Validerig Kolla att de aställda ite reda är i database osv AddEm ployeetras actio <<iterface>> PayClassificatio calculatepay() Physical decouplig separerar avädargrässitt frå logik Temporal decoublig Spara trasaktioer kör seare

Commad - udo do metod åtföljs av e udo metod i varje Commad objekt Varje kommado vet också hur ma ka udo kommadot Cliet UdoSy stem udostack <<iterface>> UdoableCommad do() udo() TextDocumet AddTextCom mad legth positio DeleteTextCpmmad deletedtext positio E stack udostack sparar slutförda kommado För att udo e operatio aropar ma udostack.pop().udo()

Commad Ivoker <<it erface>> Comm ad do() CCliet Receiver Cocrete Comm ad1 state CocreteCommad2 state

Commad Bra att aväda då ma har måga kommado Iga låga switch eller if-satser Lätt att skapa udo-, redo- fuktioalitet Lätt att skapa trasaktioer Ka samla kommado och köra vid seare tillfälle Frikopplar de som aropar kommado frå de som vet vad som ska göras Lätt att lägga till ya kommado uta att påverka gamla

Active Object Tekik för implemeterig av multipla kotrolltrådar Ekel variat där olika trådar samarbetar Ite egetlige parallell programmerig

Active Object class ActiveObjectEgie{ List<Commad> commads= ew LikedList<Commad>(); public void addcommad(commad c){ commads.add(c); } public void ru(){ while (!commads.isempty() ){ Commad c= commads.getfirst(); commads.removefirst(); c.do(); } }

Active Object Ite speciellt avädbart äu, me om... Kommado objekte skapar kopior av sej själv som sätts tillbaka på kö Kö blir aldrig tom ru metode avslutas aldrig

Active Object Exempel frå boke

Active object Valigt för multitrådade system Ru to completio trådar Trådar som körs tills de är färdiga Ka ite bli stoppade Bra för system med små miesresurser Eklare ä att aväda ä Javas ibyggda trådar Ige riktig parallellism iget problem med parallella accesser av data Behöver ite sykroiseras

Template method Ett valigt möster är att e metod deklareras som abstrakt i basklasse och seda överskuggas av subklass metodera. Det är saolikt att subklass metodera påmier mycket om varadra Grafik paket med Shape klass Sub-klassera Circle, Lie och Rectagle Abstrakt metod draw() i Shape Defiitioer är likade i alla versioer av draw Iitialisera grafikpaketet, välj färg, lijetjocklek, etc.

Template method Shape x y colour draw() drawstep() public fial void draw(){ iitgraphics(); setcolour(...) setlietype(...) drawstep(); exitgraphics(); } Circle Rectagle Lie drawstep() drawstep() drawstep()

Template method Implemetera delar som ite ädrar i basklasse Edast på ett ställe Subklassera defiierar bara de steg som faktiskt ädrar Ati-möster: Subklassera aropar gemesamma fuktioalitet basklasse

Template method - översikt AbstractClass templatemethod() primitivestep1() primitivestep2() CocreteClass1 primitiveste p1() primitiveste p() CocreteClass2 primitivestep1() primitivestep2() CocreteClass3 primitivestep1() primitivestep2()

Strategy E metod som är avsedd att styra beteedet hos aa kod Ite ödvädigtvis ågot som ka utföras som ett isolerat kommado Sorterig exempel sorterig av persoobjekt Iblad vill ma sortera på efteram, iblad på persoummer class Perso{... public Strig getlastname(){...} public Strig getnumber(){...}... }

Strategy Stöd för sorterig av objekt sampligar fis i klasse java.util.collectios klasse static <T> void sort( List<T> list, Comparator<? super T> c ) Färdigt grässitt för Strategy möstret public iterface Comparator<T> it compare(t t1, T t2); //... } Flera kokreta strategier

Strategy Sortera på efteram public class LastNameComparator implemets Comparator<Perso>{ public it compare(perso p1, Perso p2){ retur p1.getlastname().compareto(p2.getlastname()); } } Sortera på ummer public class NumberComparator implemets Comparator<Perso>{ public it compare(perso p1, Perso p2){ retur p1.getnumber().compareto(p2.getnumber()); } }

Strategy Ekelt att aväda List<Perso> c=ew ArrayList<Perso>() //fyll på med persoer Collectios.sort(c, ew LastNameComparator()); //... Collectios.sort(c, ew NumberComparator()); //... Sorterige oberoede av jämförelsekriteriet Flera olika kriterier ka lätt avädas

Strategy - geerell Cotext <<iterface>> St rat egy algorithm() CocreteStrategy1 Co cret estrateg y2 CocreteStrategy3

Strategy Avädbart för Separera utvalda algoritm delar så att dessa ka bytas ut efter behov Ha edast e implemetatio av algoritm, som ka apassas efter behov Ka avädas i stället för villkorad kod Udviker switch och if satser med alterativ de ka vara svåra att uderhålla Nackdelar med Strategy möstret Algoritmavädare tvigas veta om strategier Ka göra kode lågsammare

Facade Döljer komplexitet för avädara Lättare att aväda fasade ä de ursprugliga systemet Ofta ite lätt att utveckla fasade Målet med Facade möstret är att förekla Avädare ser bara fasade Ka byta implemetatio av det som fasade gömmer Midre beroede

Facade Det som ma vill dölja bakom e Facade ka vara komplext av olika skäl Ett gammalt bibliotek som har dålig struktur. Kaske utvecklats uder tiotals år, me måste avädas eftersom ma ite har resurser att skriva om. Operativsystem är komplexa system Om ett program ska kua avädas på flera operativsystem ka det vara e god ide att gömma plattform specifika fuktioer bakom e Facade

Facade - exempel Applicatio DB storeproduct() getproduct() deleteproduct() Pro ductdata java.sql

Facade - geerell FCliet Facade

Mediator Möster för att hatera beroede mella objekt Atalet parrelatioer mella objekt är (-1)/2. Nya objekt som iförs ska dessutom ite störa gamla iteraktioer : Collegue : Collegue : Collegue : Collegue : Collegue : Mediator : Collegue : Collegue : Collegue : Collegue : Collegue

Mediator Udviker kaos geom att cetralisera kommuikatiosstyrige Idividuella objekt ka föreklas då kommuikatioe mella dem försvier Ka iföra gemesamma regler för kommuikatioe

Mediator <<iterface>> Mediator <<iterface>> Collegue CocreteMediator CocreteCollegue1 CocreteCollegue2 Cocret ecollegu e3

Mediator Exempel i boke