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

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

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

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

Kontrakt baserad design. Design by contract

Systemdesign fortsättningskurs

. Mängden av alla möjliga tillstånd E k kallas tillståndsrummet.

Armin Halilovic: EXTRA ÖVNINGAR

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)

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

MS-A0409 Grundkurs i diskret matematik Sammanfattning, del I

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

Borel-Cantellis sats och stora talens lag

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

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

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

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

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

Operativsystem - Baklås

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

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

Datastrukturer och algoritmer

Tentamen i Elektronik, ESS010, del 2 den 14 dec 2009 klockan 14:00 19:00.

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].

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

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}.

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning F3 Patrik Eriksson 2000

Lösningar och kommentarer till uppgifter i 1.1

DEL I. Matematiska Institutionen KTH

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

Datorövning 2 Fördelningar inom säkerhetsanalys

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

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

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

För rörformiga instrument, slangar och liknande krävs speciella insatser för genomspolning för att få ett fullgott resultat.

Digital signalbehandling Alternativa sätt att se på faltning

Förfrågan till Klockarens redaktörer

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

MS-A0409 Grundkurs i diskret matematik I

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

INSTALLATIONSMANUAL COBRA 8800/8900 CAN

Kompletterande kurslitteratur om serier

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

7 Sjunde lektionen. 7.1 Digitala filter

Duo HOME Duo OFFICE. Programmerings manual SE

Applikationen kan endast användas av enskilda användare med förtroenderapportering.

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

Extrem prestanda Nu utan BPA UPPLEV DEN FANTASTISKA STYRKAN HOS VÅRA BPA-FRIA PRODUKTER

Universitetet: ER-diagram e-namn

Föreläsning 10: Kombinatorik

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

Fakta om plast i havet

Tentamen i matematisk statistik, Statistisk Kvalitetsstyrning, MSN320/TMS070 Lördag , klockan Lärare: Jan Rohlén

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

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.

101. och sista termen 1

Universitetet: ER-diagram e-namn

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

Datorövning 2 Fördelningar inom säkerhetsanalys

Cartesisk produkt. Multiplikationsprincipen Ï Ï Ï

2. Konfidensintervall för skillnaden mellan två proportioner.

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

Introduktion till statistik för statsvetare

(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?

Innanför skalet på centralenheten: Mikroprogrammering

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

Artificiell intelligens Probabilistisk logik

Funktionsteori Datorlaboration 1

Tentamen 19 mars, 8:00 12:00, Q22, Q26

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

Digital signalbehandling Fönsterfunktioner

Operativsystem - Processkommunikation

Finansiell Statistik (GN, 7,5 hp,, HT 2008) Föreläsning 4 (del 1)

Uppsala Universitet Matematiska Institutionen Bo Styf. Genomgånget på föreläsningarna Föreläsning 26, 9/2 2011: y + ay + by = h(x)

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

1. Hur gammalt är ditt barn?

b 1 och har för olika värden på den reella konstanten a.

Osäkerhet. Probabilistiska resonemang. Sannolikhet. Osäkerhet. ! Osäkerhet! Grundläggande sannolikhetslära. ! Bayesianska nätverk

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

Avtalet End user software licence agreement skall gälla, och finns att läsa på VAIO Info Centre.

MS-A0409 Grundkurs i diskret matematik Sammanfattning, del I

Ny lagstiftning från 1 januari 2011

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

PLACERING I STADSBIBLIO- TEKET.

Diskmaskiner. Sparsammare: Från 8 liter vatten och. Snabbare: Kortare programtider och ännu mindre el med varmvattenanslutning

Produsert for bevegelses hemmede, og er det mest fleksible og variasjonrike alternativ på markedet. Tilpasnings-mulighetene er nesten ubegrensede.

Parsningsalgoritmer. Parsningsalgoritmer: inledning. OH-serie 1: introduktion. Parsningalgoritmer I. Algoritmer. Vad är parsning? Vad är en algoritm?

Tentamen 1 i Matematik 1, HF1903, Fredag 14 september 2012, kl

Digitalteknik F6. Några sammansatta digitala komponenter och lite designmetodik. Digitalteknik F6 bild 1

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

Sannolikhetslära. c 2015 Eric Järpe Högskolan i Halmstad

TAMS15: SS1 Markovprocesser

Andra ordningens lineära differensekvationer

Induktion och Binomialsatsen. Vi fortsätter att visa hur matematiska påståenden bevisas med induktion.

Räkning med potensserier

Tentamen i Sannolikhetsteori III 13 januari 2000

5. Linjer och plan Linjer 48 5 LINJER OCH PLAN

THERMO S 160/230/300/350/400

TRIBECA Finansutveckling

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

Transkript:

Desig möster

Möster Visitor Decorator Extesio Object State Taskmaster

Visitor Aväds för komplicerade datastrukturer där det fis e växade mägd operatioer på dea Grafik exempel ige: Shape draw() ps() ik() svg() 0..* Lie Ci rcle Rec tagle Group draw() ps() ik() svg() draw() ps() ik() svg() draw() ps() ik() svg() draw() ps() ik() svg()

Visitor Varje y operatio kräver ädrig av varje subklass Problem då y fuktioalitet ska sättas till i ett existerade system Klasser blir ertygda med operatioer Operatioera har ite ödvädigtvis mycket gemesamt

Visitor Itroducera e visitor för varje fuktio ShapeVisitor visit(l : Lie) visit(c : Circle) visit(r : Rectagle) visit(g : Group) DrawVisitor Ikvisitor PsVisitor SvgVisitor

Visitor Klasshierarki för Shapes får u följade struktur Shape 0..* accept(s v : ShapeVisitor) Lie Circle Rec tagle Group accept() accept() accept() accept()

Visitor Varje accept metod är implemeterad på följade sätt: public void accept(shapevisitor v){ v.visit(this); } Group klasse skickar dessutom besökare vidare till sia gruppmedlemmar: public void accept(shapevisitor v){ for ( Shape s : members) s.accept(v); v.visit(this); }

Visitor Nu är det lätt att få operatioer utförda på godtyckligt komplicerade Shape strukturer exempel: koverterig av ritig till postscript Shape complexdrawig; complexdrawig=//...bygge av komplex ritig ShapeVisitor ps=ew ShapeVisitor(); complexdrawig.accept(ps);

Visitor Exempel på ekel Shape hierarki ps : PsVisitor complexdrawig : Group : Lie : Circle Arope av metoder i objekte illustreras av följade sekvesdiagram:

Visitor acliet ps : ShapeVisitor : Circle : Lie complexdrawig : Group 1: accept(ps) 2: acc ept(ps) 3: visit(this) 4: accept(ps) 5: visit(this) 6: visit(this)

Visitor - Sammafattig Separerar datastrukture frå operatioera på de Ska edast avädas då datastrukture (Shape hierarki) är stabil Om datastrukture ädras är Visitor gaska meigslös Visitor förhidrar att datastrukturklassera blir fyllda av diverse orelaterade operatiosuppsättigar som var och borde spridas ut i varje datastrukturklass Plugis för ya operatioer

Decorator Om ma vill utöka beteedet hos e klass ka det ske med arv Ka ite ädras dyamiskt Vill ma ge ett objekt flera ya egeskaper vid körige fugerar ite arv Bättre om objektet behåller sitt gamla grässitt och bara utökas med ya egeskaper

Decorator Föster för att visa kompoet Cotaier cotetpae getcotetpae(); JTextArea textarea =ew JTextArea(200,200); cotetpae.add(textarea); TextArea kaske ite får plats i föstret Dekorerar med rullister Cotaier cotetpae getcotetpae(); JTextArea textarea =ew JTextArea(200,200); JScrollPAe scrollpae=ew JSCrollPae(textArea); cotetpae.add(scrollpae);

Decorator Visar bara rullister är föstret är för litet JScrollPae, Cotaier och JTextArea ärver Compoet De igåede objektes grässitt bevaras De utökade fuktioalitete är ett ret tillägg

Decorator Javas IO-arkitektur BufferedReader i =ew BufferedReader(ew FileReader( text.txt )); Strig lie= i.readlie(); Olika streams för läsig ka kopplas ihop på flera sätt Reader read() close() FileReader BufferedReader PushbackReader

Decorator geerellt Compoet operatio() CocreteCompoet Decorator CocreteDecorator1 addedstate CocreteDecorator2 addedbehaviour()

Decorator - sammafattig Större flexibilitet och dyamik ä statiskt arv Varje kombiatio av dekoratioer skulle behöva e ege klass Fuktioalitet ka läggas till efter had E dekorator är ite idetisk med origialobjektet äve om de har samma grässitt Ka bli problem med jämförelseoperatioer Ma ka få måga objekt att hålla reda på (jämför java.io paketet)

Extesio object Varje objekt i e hierarki håller reda på e lista av extesio objekts Mera komplicerat ä decorator Me också mera flexibelt 0..* Part getextesio() addextesio() <<Map<Strig,PartExtesio>>> <<marker>> PartExtesio <<iterface>> PartExtesio1 Assempl y PiecePart AssemplyExtesio1 PiecePartExtesio1

State Implemetatio av ädlig tillstådsmaski (fiite state automata) Erbjuder ett ekelt och elegat sätt att beskriva beteedet för komplicerade system. Avädbart till allt frå grafiska avädargrässitt till kommuikatiosprotokoll

State Exempel: Parkerigsautomat Två hädelser euro: Sätter i e euro i automate ticket: Begär att ma får e parkerigsbiljett Reaktioe på hädelsera är olika beroede på tillståd idle euro / icsum() ticket / givetick et() euro / icsum() coiiserted

Tillståds maskier (Statemachies) Här består de av Hädelser (evets) Hädelser frå omvärlde som maskie reagerar på Tillståd (states) Reaktioe på e hädelse bestäms av tillstådet som maskie befier sej i Aktioer (actios) Aktioer beskriver de effekt som e hädelse har på omgivige då maskie är i ett visst tillståd

State Iformatioe ka också preseteras i tabellform euro ticket idle coiiserted idle coiiserted coiiserted idle

State - Implemetatio Switch case public void euro(){ switch ( state) { case IDLE: state=coin_inserted; icsum(); break; case COIN_INSERTED; icsum(); break; } } public void ticket(){...}

State - Implemetatio Ekelt och sabbt sätt att implememtera FSMs Fugerar bra för små tillstådsmaskier Stora swítch-case block blir ofta oöverskådliga och svåra att hatera Dålig separatio mella logike för tillstådsförädrigar och aktioer

State - Trasitiostabell Ka också implemeteras som tabell motsvarade tabell represetatioe av tillstådsmaskie

State - implemetatio Ekelt att översätta frå tabellrepresetatio av tillstådsmaskie Lätt att uderhålla jämfört med switch-case Ekelt att ädra beteedet hos tillstådsmaskie då programmet körs Nackdelar: Lågsam Det tar tid att söka i tabeller E hel del kod måste skrivas för att få allt och fuka

State - möster ParkigTicketDispeser state icsum() giveticket() <<iterface>> ParkigState euro(p : ParkigTicketDispeser) ticket(p : ParkigTicketDispeser) Idle CoiIserted

State - implemetatio Implemetatio av IDLE tillstådet class Idle implemets State{ } public void euro(parkigticketdispeser p){ p.icsum(); p.setcoiisertedstate(); } public void ticket(){ }

State - geerellt Cotext state actio1() actio2() <<iterface>> State evet1() evet2() evet3() S1 S2 S3

State Bra separerig mella aktioer och logike för trasitioer mella tillståd Lätt att ädra e uta att påverka de adra Sabbare ä tabell Ataglige lika sabbt som switch-case Bästa egeskapera av båda tidigare lösigara Nackdelar Kräver e del arbete att skapa alla State subklasser - Måga metoder gör igetig Ige cetralt ställe att för att få överblick över logike svårt att uderhålla

UML statemachies s1 r1 etry/ AR1 exit/ AR2 do/ AR3 e2[ G2 ] / A2 ^E2 e1( p1,p2 )[ G1 ] / A1 s2 e3 e4 H r2

Taskmaster Arkitektur för att hatera komplicerade sekveser av hädelser Aväder tillstådsmaskier Olika uppgifter (=tasks) Exempel: MeasureTask Mäter avstådet mella två pukter i ett ritprogram Avädare markerar vilka två pukter

Taskmaster Tillstådsmaski beskriver iteraktioe GettigPoits / Iit Get FirstPoit MovePoit GetPoit / RecordEdPt GetPoit / RecordStartPt Cacel / ClearTask MovePoit / DragLi e DoubleClick Get SecodPoit MouseUp