Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”

Slides:



Advertisements
Liknende presentasjoner
Objektorientert systemutvikling og UML  OOSU er den mest anvendte metoden på både store og små prosjekter  UML er det mest anvendte beskrivelsesspråk.
Advertisements

Del 3 : Patterns (Kap 16 – kap 20, Craig Larman) Arne Maus Inst. for informatikk, UiO.
Memento Object Behavioral Design Pattern. Lagre og hente tilstander • Et system inneholder ofte mekanismer som trenger gjenbruk av tilstander • Memento.
Sekvensdiagram En sekvens viser hvordan objekter samarbeider om en oppgave Diagrammet viser hvem som har kontrollen til enhver tid Det spesifiserer nøyaktig.
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.
Organisering av arbeid Samarbeid Klient Tjenesteyter.
Introduksjon til objektorientert programmering i PHP
Objektorientert systemutvikling og UML
IMT OOSU 28.sept Dagens tema : forts. DESIGN PATTERNS ObjektOrientert Design = Bevissthet i tildeling/fordeling av ansvar til softwareklasser for.
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.
Gruppe 6 Gunnar Henrik Mathias Morten Ronny Svein Ivar.
Chain of Responsibility GoF mønster Operasjonelt (behavioral)
Variasjoner i subklasser.  Prinsippskissen er meget enkel  En abstrakt klasse har en konkret metode og en abstrakt metode  Hver subklasse realiserer.
Mønstre og tekniske applikasjoner
IS-102 Klassedefinisjoner
Java Server Faces (JSF) en introduksjon Frode Eika Sandnes.
Gruppe 9 Design evaluering og validering.
Objektorientert utforming In 140 Forelesning Nr 13 Sommerville kap 12 – del 2.
OOSU PATTERNS (mønstre) Hva er et Pattern – opprinnelsen Mal for en Patternbeskrivelse Typer Pattern vi anvender innen systemutvikling Noen eksempler.
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,
Sekvensdiagram En sekvens viser hvordan objekter samarbeider om en oppgave Diagrammet spesifiserer hvem som har kontrollen til enhver tid Det vises nokså.
Prosjektet transparente lag Composite og tegnende objekter Decorator og gui-kontrollere Factory Method Iterator.
Sammensatt struktur Visning av intern struktur i et samarbeid mellom objekter Fokuserer på ett av en klasses flere mulige ansvar.
GRASP General Responsibility Assignment SP GRASP er et hjelpemiddel for å lære om OD GRASP er retningslinjer for å fordele og tildele ansvar mellom klasser.
En kort innføring i Design Patterns
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.
Forbindelser Diagrammer i UML består av ting med forbindelser
Hovedprinsipper i Rational Unified Process
Bendik Bygstad Høgskolen i Vestfold RUP-prosjekt Sammenhengen med UML 1.Hovedstruktur i RUP-prosjekter 2.Faser og iterasjoner 3.Sammenhengen med.
Domeneklasser En applikasjon kan ha domenesvake og domenesterke klasser.
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.
Design Patterns Iterator & Mediator. Gruppe 8 Presentasjonsgruppe:Resten av gruppen: Marianne AtesAndrè Johansen Tom Vidar LundeHege-Kristin Johansen.
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.
Object Oriented Measurement
Objektorientert programmering
Java & OO.
Information Expert GRASP Grunnleggende prinsipp i programdesign.
Innkapsling av request. Køing, logging, angre Command tilhører gruppen av ”behavioral patterns” Instanser av mønsteret leder til instanser av forespørsler.
Composite GoF Structural Pattern. Alle kjenner Composite Alle som har brukt lister organisert som trær i brukermiljøer, kjenner Composite Pattern.
XML og Composite Pattern Mønstre og bygging av xml-tre.
Verktøy i faget ”Objektorientert systemutvikling og UML” Eclipse Together Architect for Eclipse
The Peer-to-Peer Architecture Av Ingunn Lund og Anja Lønningen.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
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.
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.
Objektorientert utforming
Objektorientert utforming In 140 Sommerville kap. 12.
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.
Forstudie Nå situasjonen: dagens situasjon med ulemper og fordeler
Handling Churn in a DHT Andreas Wigmostad Bjerkhaug.
Routing Indices For P2P Systems TDT2 – Avanserte Distribuerte Systemer Lars-Erik Bjørk.
Objektorientert design
Objektorientert utforming In 140 Forelesning Nr 11 Sommerville kap 12 – del 1.
1 Utvikling av kritiske systemer Kort sammendrag Kap. 1 og 2.
1 Ansvarsdrevet design og bruk av design-mønstre Utforming av klassediagrammer
Objektorientert design In 140 Sommerville kap 12 – del 1.
Arv Gjenbruk. Begreper Super Overriding – Samme signatur Polymorfi – «en ting kan bety mange ting»
Strukturerende elementer i UML
RUP-prosjekt Sammenhengen med UML
Ting Forbindelser Ting og forbindelser blir til sammen et diagram
Utskrift av presentasjonen:

Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”

Kilder til patterns Alle med kredibilitet/legimitet GRASP (9 patterns) GoF (23 patterns) Craig Larman ”Applying UML og Patterns”

Beskrivelser Patterns må beskrives etter en mal Beskrivelsene inneholder ofte UML Minstekrav (klikk)klikk GoF form (klikk)klikk

Arkitektur og mønstre Arkitektur realiseres med mønstre Hvert problem kan ha sitt eget mønster Noen mønstre brukes mange steder i en og samme arkitektur Andre mønstre brukes kanskje bare en gang Bruk av mønstre gir enklere vedlikehold Mønsteret gjør det lett å kjenne seg igjen

System og subsystem Et system kan bestå av flere subsystemer Hvert subsystem har egen arkitektur og mønstre

Mekanismer Mekanismer er mønstre for samarbeid mellom klasser MVC har for eksempel en trelags mekanisme MVC kan vises i et samarbeidsdiagram med tre objekter:

Andre lagdelte design Forretningssystemer er 3-lags eller n-lags Lagene kan være fordelt på ulike noder Et system er for stort til å kalles en mekanisme

Rammeverk Rammeverk er betydelig større enn mekanismer Rammeverk er samarbeid mellom pakkersamarbeid Rammeverk har callbackteknologi Klassebiblioteker lar applikasjonen bruke instanser Rammeverk bruker i tillegg applikasjonens instanser

Applikasjonens instanser Figuren viser bruk av applikasjonens instanser i to av rammeverkets mekanismer

GRASP General Responsibility Assignment Software Patterns GRASP er prinsipper for god OO design GRASP beskriver i den forbindelsen 9 mønstre GRASP gir innsikt i klassisk design

GRASP og high cohesion High cohesion betyr høy sammenheng Uttrykket brukes om en klasses ansvar Klassens operasjoner skal dekke ansvar med høy grad av sammenheng Dette gir objekter med enkle tilstander og enkel api Enkle tilstander og enkel api gir lav risiko

GRASP General Responsibility Assignment SP GRASP er et hjelpemiddel for å lære om OD GRASP er retningslinjer for å fordele og tildele ansvar mellom klasser GRASP fører til sunne, enkle systemer med lav teknologisk risiko

High Cohesion Metoder med en oppgave Objekter med få og enkle tilstander Klasser med høy konsentrasjon om ett ansvarsområde Applikasjonslag med konsentrasjon om ett område Bidrar til enkel API Høy grad av abstraksjon og enkel gjenbruk Bidrar til lav kobling

Low coupling Kobling vises som assosiasjoner mellom klasser Lav kobling vises som få assosiasjoner

Controller og indirection Controller oversetter brukerimpulser til systemoperasjoner Indirection unngår direkte kobling mellom behov og tilbyder. Se JDBCtrainer java[13] Se

Creator Gir råd om hvem som kan lage instanser Er i slekt med LoD (Law of Demeter) A kan konstruere B dersom A aggregerer, inneholder eller bruker instanser av B A kan konstruere B dersom A har nødvendig informasjon for konstruksjonen av B

Law of Demeter En metode skal ha begrenset kunnskap om en objektmodell Et objekts metode kan sende meldinger til seg selv Et objekts metode kan sende meldinger til sine parametre Et objekts metode kan sende meldinger til objekter det selv instansierer

Meldinger fra et objekt Et objekt kan sende meldinger til seg selv Et objekt kan sende meldinger til sine parametre Et objekt kan sende meldinger til objekter det selv instansierer Et objekt kan sende meldinger til sine egne komponentobjekter

Praktiske følger av LoD Et objekt kan instansiere assosierte objekter i private metoder Et objekt kan sende meldinger til andre objekter i private metoder ”A public method M of Class C shold invoke only its own public and private methods, and those of its superclasses” Annen praksis øker den teknologiske risikoen

Praktisk problem og LoD Snakk bare med de nærmeste

Praktisk design med LoD La en venn ordne problemet

Generelt kart over LoD Klassen Ansvar har bare noen få nære Venn-er

Information Expert Tildeling av ansvar til den som har den relevante informasjonen Hvem tar ansvaret for å oppdage vinnermønsteret?

Praktisk bruk av Information Expert Spillebrett samler inn kunnskap fra sine ”venner” og tar ansvaret Salg samler inn kunnskap fra sine venner for å rapportere endelig pris

Layers, 3-tier GRASP Forretningssystemer er lagdelte

Layers, n-tier Systemets størrelse krever av og til flere lag Klikk for detaljerKlikk

Praktisk lagdeling Figuren viser en lagdeling av et kinosystem