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

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Memento Object Behavioral Design Pattern. Lagre og hente tilstander • Et system inneholder ofte mekanismer som trenger gjenbruk av tilstander • Memento.
Realisering av Software Patterns Software Design Patterns Realisering med kode Refaktorering Gjenkjenning av mønstre.
Mediator i prosjektet easyhtml Mediator. Widgets og signaler  Systemet inneholder mange signalgivere  Mange til mange er erstattet med en til mange.
Unit testing Gruppe 2: Kjartan Haugen Jon Gunnar Bjørkmo
Tjenestebasert design med dynamiske proxyer og Spring Bjørn Vidar Bøe, JavaZone 2005.
Beslektede algoritmer. Isolere klient fra algoritme  Klienter trenger av og til helt forskjellige måter å gjøre det samme på  Men klienten selv kan.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Kap.8 Sortering og søking sist oppdatert • Del 1 Søking - lineær søking m/u sorterte elementer - binærsøking - analyse • Del 2 Sortering - ”gamle”
UML & object models av gruppe 8
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Objektorientert programmering Objektorientert systemutvikling
Objektorientert programmering i PHP del 2
Prototyping & Use Case Software Engineering Gruppe
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
En gang til!? .
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
Læring og tenkning Systemutvikling er læring Gjensidig respekt og samarbeid Følge en konkret oppskrift Velge blant flere oppskrifter Nå målet uten oppskrift,
Prosjektet transparente lag Composite og tegnende objekter Decorator og gui-kontrollere Factory Method Iterator.
GoF GoF er fire systemutviklere, Gang of Four GoF fikk utgitt boken Design Patterns høsten 1994 Boken Design Patterns er en klassiker Design Patterns beskriver.
Mediator Mediator i prosjektet easyhtml. Widgets og signaler Systemet inneholder mange signalgivere Mange til mange er erstattet med en til mange Hvert.
Strukturerende elementer i UML
Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
Kirsten Ribu HiO Ansvarsdrevet design og bruk av design-mønstre Kirsten Ribu.
Combining Compound Conceptual User Interface Components with Modelling Patterns - a Promising Direction for Model-based Cross-platform User Interface Development.
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
Kap 05 Abstrakte datastrukturer. Arv - Implementering Interface / Abstrakte klasser / Konkrete klasser Concrete classAbstract class Interface extends.
Gruppe 3 – Presentasjon 2 Henning Kristiansen, Mats Lindh, André Hauge og Vegard Simensen.
DEKOMPONERING OG MODULARITET ~Gruppe 4~. Gjennomgang Designtyper/kriterier innen dekomponering Dekomponeringsspesifikasjon Strukturert og objektorientert.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Composite & Decorator Patterns Patterns Composite Spørsmål? Introduksjon Decorator Resymé Gruppe 4 Ivar Bonsaksen Remi Karlsen Jonas Lepsøy Stian Rostad.
Teknikker for å bedre design- prosessen -Design by contract -Prototyping design -Fault-tree analyses.
Improving Products Gruppe Presenteres av : Hege-Kristin Johansen Herman Kolås Marianne Ates Marit Finden Jonas Lillevold André Johansen Tom.
Object Oriented Measurement
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
std::basic_string En oversikt over C++ Standard bibliotekets streng-klasse.
Oversikt Den delen av Standard C++ Library som tidligere var STL Konsepter i STL: –Iteratorer –Samlinger (containers) –Algoritmer –Funksjonsobjekter.
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 6 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
Composite GoF Structural Pattern. Alle kjenner Composite Alle som har brukt lister organisert som trær i brukermiljøer, kjenner Composite Pattern.
OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger.
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
CORBA Noen hull som må fylles: ORB Object Adapters CORBA services IDL Factory Objects.
Gruppe 5 består av: – Cecilie Vitting – – Marit S. Asklien -
Fra Mitose til Happy-meal Innføring i “Prototype Patterns” og “Builder Patterns” Gruppe 2 Carl-Erik Herheim Leendert Wienhofen Olav Dæhli Thomas Julsen.
PUG-NORWAY OKTOBER 2008 THOMAS SKJØRTEN, HILDE ANDREASSEN UML og OpenEdge OOABL.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
BUCS Utfordringer og valg av fokus Tor Stålhane. Rammebetingelser Første spørreundersøkelse viser at det vi gjør må kunne: Brukes sammen med UML Passe.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Objektorientert utforming In 140 Sommerville kap. 12.
Utvikling av tegneverktøy for Generalized Sketches Student: Ørjan Hatland Veiledere: Yngve Lamo, Høgskolen i Bergen Uwe Wolter, Universitetet i Bergen.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Objektorientert design
Objektorientert utforming In 140 Forelesning Nr 11 Sommerville kap 12 – del 1.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringContainerklasser.2 Mange objekter.
1 Ansvarsdrevet design og bruk av design-mønstre Utforming av klassediagrammer
Objektorientert design In 140 Sommerville kap 12 – del 1.
Kapittel 12 Samlingar Samlingar og datastrukturar Ei samling (collection) blir brukt til å oppbevare og handtere andre objekt ArrayList – klassen.
Typeparametrisering Generel kode (generisk kode).
Iterator i Java boolean hasNext() E next() void remove()
Triks Avslutt alle klasser, metoder og løkker samtidig som du lager dem. Deklarer alle variablene/referansene på begynnelsen av klassen. Hvis du definerer.
BilSalg klassedatastruktur Bil klassedatastruktur
Utskrift av presentasjonen:

Design Patterns Iterator & Mediator

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

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

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.

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.

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

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

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

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

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.

Praktisk eks. 1: Legekontor

Praktisk eks. 2: TV fjernkontroll

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

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) {

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.

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.

Mediator ex. I

Mediator ex. II