Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Design Patterns Iterator & Mediator. Gruppe 8 Presentasjonsgruppe:Resten av gruppen: Marianne AtesAndrè Johansen Tom Vidar LundeHege-Kristin Johansen.

Liknende presentasjoner


Presentasjon om: "Design Patterns Iterator & Mediator. Gruppe 8 Presentasjonsgruppe:Resten av gruppen: Marianne AtesAndrè Johansen Tom Vidar LundeHege-Kristin Johansen."— Utskrift av presentasjonen:

1 Design Patterns Iterator & Mediator

2 Gruppe 8 Presentasjonsgruppe:Resten av gruppen: Marianne AtesAndrè Johansen Tom Vidar LundeHege-Kristin Johansen Marit Bøe FindenHerman Kolås Jonas Lillevold

3 Objekt-orientert design En samling elementer – klasser og objekter – som er tilrettelagt slik at de til sammen fungerer som en helhet

4 Design Patterns Begrepet oppsto i 1994/95 i boka: ”Designpattern – Elements of Reusable Object Oriented Software” Av: Erich Gamma, Richard Helm, Ralph Johnson og John Vlissides.

5 Design Patterns Definisjon: Designpatterns kan beskrives ved at de i en abstrakt form beskriver et designproblem i en gitt sammenheng, samt beskriver hvordan elementene – klassene og objektene – bør organiseres for å løse problemet.

6 Fordeler med Designpatterns Bruk av Designpatterns bidrar til: Bedre arkitektur Bedre kommunikasjon mellom prosjektdeltakerne Bedre forståelse av problemstillinger og hvordan de skal/bør løses At systemer ikke bare blir bedre, men også produsert raskere Å gi systemer lengre livsløp samt lavere totale livskostnader

7 Patternkatalog Det finnes tre hovedtyper designpatterns. Katalogene her er organisert med base på hovedformålet: Creation pattern – dvs pattern som brukes med formål å abstraktere hvordan objekter produseres / instantieres. Structural patterns – dvs pattern med formål å bygge større objektkomposisjoner / - strukturer. Behavior patterns – dvs patterns med formål å komponere funksjoner med basis i hvordan et antall objekter kommuniserer og funksjonerer. VI skal ta for oss 2 typer av designpattern; iterator og mediator pattern som er katalogisert som behavior patterns

8 Iterator Pattern Definisjon: Tilrettelegge en ensartet metode for å sekvensielt traversere et objekts elementer uten at den underliggende datastrukturen eksponeres.

9 UML Class Diagram: Iterator Pattern Aggregate CreateIterator() Client Iterator First() Next() IsDone() CurrentItem() ConcreateAggregate CreateIterator() ConcreateIterator Return new ConcreateIterator(this);

10 Iterator Pattern: UML class - diagram The Client (Klienten): Ønsker å aksessere en liste Klasser og/eller elementer som er med i mønsteret er: The Aggregate (samling): Interfacet som oppretter et objekt som gir adgang til klienten (i.e. Iterator) Iteratoren (abstrakt iterator): Definerer et Interface for å opprette et Iterator objekt. Interfacet brukes av klienten til å aksessere (gi tilgang) og traversere elementene I lista. ConcreteAggregate (Collection, samling): Koden som implementerer Iterator. Oppretter et Interface for å returnere en instans av klassen ConcreteIterator. ConcreteIterator Implementerer Iterator Interfacet.

11 Praktisk eks. 1: Legekontor

12 Praktisk eks. 2: TV fjernkontroll

13 Iterator Pattern Fordeler: Klienten ser et enkelt interface fra Aggregate. Det er forskjellige måter å traversere et Aggregate. Klienten kan fremføre mer en èn traveresering på samme liste og samtidig. Interfacet sørger for at Aggregatet er konsistent, uavhangig av hvilken struktur som implementasjonen bruker. Ulemper: Dynamisk fordeling av Iterator ender ofte opp med “lekkasjer” fordi det er lett å glemme å slette dem. Relaterte Pattern: Composite Factory Memento

14 Eks. kode Code Example (modified from [Bono, 2001]) // Aggregate template class List { friend class ListIter public: //... }; // Iterator template class ListIter { public: ListIter(const List &l); const Type &curr() const; Type &curr(); void next(); int done() const; private: Node *curr; }; // Concrete Iterator - iter ListIter iter(list); int n = 0; int sum = 0; while (!iter.done()) { sum += iter.curr(); };// Implementation // constructor template ListIter :: ListIter(const List &l) : curr(l.listp) { } // curr() template const & ListIter :: curr() const { return curr->value; } // next() template void ListIter :: next() { curr = curr->next; } // done() template int ListIter :: done() const { return curr == NULL; } // Client void main () { // Concrete Aggregate - list List list = new List (...);... cout &list) {

15 Mediator Pattern Definisjon: –La et objekt være ansvarlig for å koordinere hvordan et antall andre objekter kommuniserer med hverandre og derigjennom kunne styre ulike typer av kommunikasjonsmønstre.

16 Fordeler - Ulemper Forandring på systemet rammer bare Mediator, andre objekter kan brukes som de er. Siden Mediator (mekler) og dens colleagues (kollegaer) bare er knyttet sammen ved hjelp av en løs kopling, kan begge bli variert og brukt om igjen uavhengig av hverandre. Siden Mediator benytter seg av ”en-til-mange” relasjoner blir systemet lettere å forstå. Siden alle hendelsene mellom colleagues (kollegaer) er integrert i Mediator, fører dette ofte til at Mediator-klassen blir veldig kompleks og dermed vanskelig å opprettholde.

17 Mediator ex. I

18 Mediator ex. II


Laste ned ppt "Design Patterns Iterator & Mediator. Gruppe 8 Presentasjonsgruppe:Resten av gruppen: Marianne AtesAndrè Johansen Tom Vidar LundeHege-Kristin Johansen."

Liknende presentasjoner


Annonser fra Google