Upload
hayes-travis
View
62
Download
2
Embed Size (px)
DESCRIPTION
Ansvarsdrevet design og bruk av design-mønstre. 04.11.2005 Kirsten Ribu. I dag. Design = klassediagram Mønstre – Patterns. Opprinnelsen til begrepet mønstre. Ideene bak design patterns stammer fra arkitektfaget, hvor Christopher Alexander utviklet et stort antall designmønstre - PowerPoint PPT Presentation
Citation preview
Kirsten Ribu HiO 2005 1
Ansvarsdrevet design ogbruk av design-moslashnstre
04112005Kirsten Ribu
Kirsten Ribu HiO 2005 2
I dag
Design = klassediagram Moslashnstre ndash Patterns
Kirsten Ribu HiO 2005 3
Opprinnelsen til begrepet moslashnstre
Ideene bak design patterns stammer fra arkitektfaget hvor Christopher Alexander utviklet et stort antall designmoslashnstre
Professor i arkitektur ved University of California Berkeley
Har skrevet en rekke boslashker som viser en ny vei til bedre design
Tar et oppgjoslashr med det tradisjonelle designparadigmet som er basert paring en faseoppdelt framgangsmaringte Analyse leder til spesifikasjon som er grunnlag for
konstruksjon (fossefall)
Kirsten Ribu HiO 2005 4
Klasser og objekter
I UML er klasser og objekter illustrert paring samme grafiske maringte men navnet er understreket i objektene
Sposlashrsmaringl Sposlashrsmaringl s1Sposlashrsmaringl
klasse objekt navngitt objekt
Kirsten Ribu HiO 2005 5
Designmodell
Kirsten Ribu HiO 2005 6
ObjektdesignAnsvarstilordning
UML definerer ansvar som en rsquokontraktrsquo i en klasse Ansvar er knyttet til objektet i form av dets
oppfoslashrsel Handling Opprette objekt beregning Kunnskap Vite om private data vite om
relaterte objekter Ansvar er ikke det samme som metoder men
metoder implementeres for aring oppfylle ansvaret Ansvarstilordning En utfordring under utforming
av sekvens-diagrammer
Kirsten Ribu HiO 2005 7
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den (Eksempel rsquoSposlashrreskjemarsquo) Kontrollobjektprinsippet Velg objekt som haringndterer systemhendelser
(Eksempel rsquoSposlashrreskjemaHaringndtererrsquo ndash use case kontrollobjekt) Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet (Eksempel rsquoSposlashrreskjemaGeneratorrsquo)
Kirsten Ribu HiO 2005 8
Kirsten Ribu HiO 2005 9
Kontrollobjekter
Hver use case kan ha et kontrollobjekt som styrer flyten i use caset
Kontrollobjektet er et grensesnitt-objekt
Kontrollobjekter delegerer oppgaver til andre objekter
Kirsten Ribu HiO 2005 10
Designmoslashnstre = oppskrifter
Kirsten Ribu HiO 2005 11
Hvorfor bruke moslashnstre (patterns) for informasjonssystemer
Mye av varingrt daglige virke bestaringr i aring lete etter strukturer (moslashnstre) i omgivelsene
Moslashnstre er vanlige loslashsninger paring vanlige problemer
Det samme gjelder utvikling av informasjonssystemer
Mange systemer har grunnleggende fellestrekk
Det finnes mange moslashnstre (patterns) som er blitt utviklet gjennom systemutviklingens historie
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 2
I dag
Design = klassediagram Moslashnstre ndash Patterns
Kirsten Ribu HiO 2005 3
Opprinnelsen til begrepet moslashnstre
Ideene bak design patterns stammer fra arkitektfaget hvor Christopher Alexander utviklet et stort antall designmoslashnstre
Professor i arkitektur ved University of California Berkeley
Har skrevet en rekke boslashker som viser en ny vei til bedre design
Tar et oppgjoslashr med det tradisjonelle designparadigmet som er basert paring en faseoppdelt framgangsmaringte Analyse leder til spesifikasjon som er grunnlag for
konstruksjon (fossefall)
Kirsten Ribu HiO 2005 4
Klasser og objekter
I UML er klasser og objekter illustrert paring samme grafiske maringte men navnet er understreket i objektene
Sposlashrsmaringl Sposlashrsmaringl s1Sposlashrsmaringl
klasse objekt navngitt objekt
Kirsten Ribu HiO 2005 5
Designmodell
Kirsten Ribu HiO 2005 6
ObjektdesignAnsvarstilordning
UML definerer ansvar som en rsquokontraktrsquo i en klasse Ansvar er knyttet til objektet i form av dets
oppfoslashrsel Handling Opprette objekt beregning Kunnskap Vite om private data vite om
relaterte objekter Ansvar er ikke det samme som metoder men
metoder implementeres for aring oppfylle ansvaret Ansvarstilordning En utfordring under utforming
av sekvens-diagrammer
Kirsten Ribu HiO 2005 7
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den (Eksempel rsquoSposlashrreskjemarsquo) Kontrollobjektprinsippet Velg objekt som haringndterer systemhendelser
(Eksempel rsquoSposlashrreskjemaHaringndtererrsquo ndash use case kontrollobjekt) Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet (Eksempel rsquoSposlashrreskjemaGeneratorrsquo)
Kirsten Ribu HiO 2005 8
Kirsten Ribu HiO 2005 9
Kontrollobjekter
Hver use case kan ha et kontrollobjekt som styrer flyten i use caset
Kontrollobjektet er et grensesnitt-objekt
Kontrollobjekter delegerer oppgaver til andre objekter
Kirsten Ribu HiO 2005 10
Designmoslashnstre = oppskrifter
Kirsten Ribu HiO 2005 11
Hvorfor bruke moslashnstre (patterns) for informasjonssystemer
Mye av varingrt daglige virke bestaringr i aring lete etter strukturer (moslashnstre) i omgivelsene
Moslashnstre er vanlige loslashsninger paring vanlige problemer
Det samme gjelder utvikling av informasjonssystemer
Mange systemer har grunnleggende fellestrekk
Det finnes mange moslashnstre (patterns) som er blitt utviklet gjennom systemutviklingens historie
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 3
Opprinnelsen til begrepet moslashnstre
Ideene bak design patterns stammer fra arkitektfaget hvor Christopher Alexander utviklet et stort antall designmoslashnstre
Professor i arkitektur ved University of California Berkeley
Har skrevet en rekke boslashker som viser en ny vei til bedre design
Tar et oppgjoslashr med det tradisjonelle designparadigmet som er basert paring en faseoppdelt framgangsmaringte Analyse leder til spesifikasjon som er grunnlag for
konstruksjon (fossefall)
Kirsten Ribu HiO 2005 4
Klasser og objekter
I UML er klasser og objekter illustrert paring samme grafiske maringte men navnet er understreket i objektene
Sposlashrsmaringl Sposlashrsmaringl s1Sposlashrsmaringl
klasse objekt navngitt objekt
Kirsten Ribu HiO 2005 5
Designmodell
Kirsten Ribu HiO 2005 6
ObjektdesignAnsvarstilordning
UML definerer ansvar som en rsquokontraktrsquo i en klasse Ansvar er knyttet til objektet i form av dets
oppfoslashrsel Handling Opprette objekt beregning Kunnskap Vite om private data vite om
relaterte objekter Ansvar er ikke det samme som metoder men
metoder implementeres for aring oppfylle ansvaret Ansvarstilordning En utfordring under utforming
av sekvens-diagrammer
Kirsten Ribu HiO 2005 7
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den (Eksempel rsquoSposlashrreskjemarsquo) Kontrollobjektprinsippet Velg objekt som haringndterer systemhendelser
(Eksempel rsquoSposlashrreskjemaHaringndtererrsquo ndash use case kontrollobjekt) Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet (Eksempel rsquoSposlashrreskjemaGeneratorrsquo)
Kirsten Ribu HiO 2005 8
Kirsten Ribu HiO 2005 9
Kontrollobjekter
Hver use case kan ha et kontrollobjekt som styrer flyten i use caset
Kontrollobjektet er et grensesnitt-objekt
Kontrollobjekter delegerer oppgaver til andre objekter
Kirsten Ribu HiO 2005 10
Designmoslashnstre = oppskrifter
Kirsten Ribu HiO 2005 11
Hvorfor bruke moslashnstre (patterns) for informasjonssystemer
Mye av varingrt daglige virke bestaringr i aring lete etter strukturer (moslashnstre) i omgivelsene
Moslashnstre er vanlige loslashsninger paring vanlige problemer
Det samme gjelder utvikling av informasjonssystemer
Mange systemer har grunnleggende fellestrekk
Det finnes mange moslashnstre (patterns) som er blitt utviklet gjennom systemutviklingens historie
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 4
Klasser og objekter
I UML er klasser og objekter illustrert paring samme grafiske maringte men navnet er understreket i objektene
Sposlashrsmaringl Sposlashrsmaringl s1Sposlashrsmaringl
klasse objekt navngitt objekt
Kirsten Ribu HiO 2005 5
Designmodell
Kirsten Ribu HiO 2005 6
ObjektdesignAnsvarstilordning
UML definerer ansvar som en rsquokontraktrsquo i en klasse Ansvar er knyttet til objektet i form av dets
oppfoslashrsel Handling Opprette objekt beregning Kunnskap Vite om private data vite om
relaterte objekter Ansvar er ikke det samme som metoder men
metoder implementeres for aring oppfylle ansvaret Ansvarstilordning En utfordring under utforming
av sekvens-diagrammer
Kirsten Ribu HiO 2005 7
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den (Eksempel rsquoSposlashrreskjemarsquo) Kontrollobjektprinsippet Velg objekt som haringndterer systemhendelser
(Eksempel rsquoSposlashrreskjemaHaringndtererrsquo ndash use case kontrollobjekt) Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet (Eksempel rsquoSposlashrreskjemaGeneratorrsquo)
Kirsten Ribu HiO 2005 8
Kirsten Ribu HiO 2005 9
Kontrollobjekter
Hver use case kan ha et kontrollobjekt som styrer flyten i use caset
Kontrollobjektet er et grensesnitt-objekt
Kontrollobjekter delegerer oppgaver til andre objekter
Kirsten Ribu HiO 2005 10
Designmoslashnstre = oppskrifter
Kirsten Ribu HiO 2005 11
Hvorfor bruke moslashnstre (patterns) for informasjonssystemer
Mye av varingrt daglige virke bestaringr i aring lete etter strukturer (moslashnstre) i omgivelsene
Moslashnstre er vanlige loslashsninger paring vanlige problemer
Det samme gjelder utvikling av informasjonssystemer
Mange systemer har grunnleggende fellestrekk
Det finnes mange moslashnstre (patterns) som er blitt utviklet gjennom systemutviklingens historie
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 5
Designmodell
Kirsten Ribu HiO 2005 6
ObjektdesignAnsvarstilordning
UML definerer ansvar som en rsquokontraktrsquo i en klasse Ansvar er knyttet til objektet i form av dets
oppfoslashrsel Handling Opprette objekt beregning Kunnskap Vite om private data vite om
relaterte objekter Ansvar er ikke det samme som metoder men
metoder implementeres for aring oppfylle ansvaret Ansvarstilordning En utfordring under utforming
av sekvens-diagrammer
Kirsten Ribu HiO 2005 7
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den (Eksempel rsquoSposlashrreskjemarsquo) Kontrollobjektprinsippet Velg objekt som haringndterer systemhendelser
(Eksempel rsquoSposlashrreskjemaHaringndtererrsquo ndash use case kontrollobjekt) Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet (Eksempel rsquoSposlashrreskjemaGeneratorrsquo)
Kirsten Ribu HiO 2005 8
Kirsten Ribu HiO 2005 9
Kontrollobjekter
Hver use case kan ha et kontrollobjekt som styrer flyten i use caset
Kontrollobjektet er et grensesnitt-objekt
Kontrollobjekter delegerer oppgaver til andre objekter
Kirsten Ribu HiO 2005 10
Designmoslashnstre = oppskrifter
Kirsten Ribu HiO 2005 11
Hvorfor bruke moslashnstre (patterns) for informasjonssystemer
Mye av varingrt daglige virke bestaringr i aring lete etter strukturer (moslashnstre) i omgivelsene
Moslashnstre er vanlige loslashsninger paring vanlige problemer
Det samme gjelder utvikling av informasjonssystemer
Mange systemer har grunnleggende fellestrekk
Det finnes mange moslashnstre (patterns) som er blitt utviklet gjennom systemutviklingens historie
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 6
ObjektdesignAnsvarstilordning
UML definerer ansvar som en rsquokontraktrsquo i en klasse Ansvar er knyttet til objektet i form av dets
oppfoslashrsel Handling Opprette objekt beregning Kunnskap Vite om private data vite om
relaterte objekter Ansvar er ikke det samme som metoder men
metoder implementeres for aring oppfylle ansvaret Ansvarstilordning En utfordring under utforming
av sekvens-diagrammer
Kirsten Ribu HiO 2005 7
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den (Eksempel rsquoSposlashrreskjemarsquo) Kontrollobjektprinsippet Velg objekt som haringndterer systemhendelser
(Eksempel rsquoSposlashrreskjemaHaringndtererrsquo ndash use case kontrollobjekt) Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet (Eksempel rsquoSposlashrreskjemaGeneratorrsquo)
Kirsten Ribu HiO 2005 8
Kirsten Ribu HiO 2005 9
Kontrollobjekter
Hver use case kan ha et kontrollobjekt som styrer flyten i use caset
Kontrollobjektet er et grensesnitt-objekt
Kontrollobjekter delegerer oppgaver til andre objekter
Kirsten Ribu HiO 2005 10
Designmoslashnstre = oppskrifter
Kirsten Ribu HiO 2005 11
Hvorfor bruke moslashnstre (patterns) for informasjonssystemer
Mye av varingrt daglige virke bestaringr i aring lete etter strukturer (moslashnstre) i omgivelsene
Moslashnstre er vanlige loslashsninger paring vanlige problemer
Det samme gjelder utvikling av informasjonssystemer
Mange systemer har grunnleggende fellestrekk
Det finnes mange moslashnstre (patterns) som er blitt utviklet gjennom systemutviklingens historie
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 7
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den (Eksempel rsquoSposlashrreskjemarsquo) Kontrollobjektprinsippet Velg objekt som haringndterer systemhendelser
(Eksempel rsquoSposlashrreskjemaHaringndtererrsquo ndash use case kontrollobjekt) Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet (Eksempel rsquoSposlashrreskjemaGeneratorrsquo)
Kirsten Ribu HiO 2005 8
Kirsten Ribu HiO 2005 9
Kontrollobjekter
Hver use case kan ha et kontrollobjekt som styrer flyten i use caset
Kontrollobjektet er et grensesnitt-objekt
Kontrollobjekter delegerer oppgaver til andre objekter
Kirsten Ribu HiO 2005 10
Designmoslashnstre = oppskrifter
Kirsten Ribu HiO 2005 11
Hvorfor bruke moslashnstre (patterns) for informasjonssystemer
Mye av varingrt daglige virke bestaringr i aring lete etter strukturer (moslashnstre) i omgivelsene
Moslashnstre er vanlige loslashsninger paring vanlige problemer
Det samme gjelder utvikling av informasjonssystemer
Mange systemer har grunnleggende fellestrekk
Det finnes mange moslashnstre (patterns) som er blitt utviklet gjennom systemutviklingens historie
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 8
Kirsten Ribu HiO 2005 9
Kontrollobjekter
Hver use case kan ha et kontrollobjekt som styrer flyten i use caset
Kontrollobjektet er et grensesnitt-objekt
Kontrollobjekter delegerer oppgaver til andre objekter
Kirsten Ribu HiO 2005 10
Designmoslashnstre = oppskrifter
Kirsten Ribu HiO 2005 11
Hvorfor bruke moslashnstre (patterns) for informasjonssystemer
Mye av varingrt daglige virke bestaringr i aring lete etter strukturer (moslashnstre) i omgivelsene
Moslashnstre er vanlige loslashsninger paring vanlige problemer
Det samme gjelder utvikling av informasjonssystemer
Mange systemer har grunnleggende fellestrekk
Det finnes mange moslashnstre (patterns) som er blitt utviklet gjennom systemutviklingens historie
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 9
Kontrollobjekter
Hver use case kan ha et kontrollobjekt som styrer flyten i use caset
Kontrollobjektet er et grensesnitt-objekt
Kontrollobjekter delegerer oppgaver til andre objekter
Kirsten Ribu HiO 2005 10
Designmoslashnstre = oppskrifter
Kirsten Ribu HiO 2005 11
Hvorfor bruke moslashnstre (patterns) for informasjonssystemer
Mye av varingrt daglige virke bestaringr i aring lete etter strukturer (moslashnstre) i omgivelsene
Moslashnstre er vanlige loslashsninger paring vanlige problemer
Det samme gjelder utvikling av informasjonssystemer
Mange systemer har grunnleggende fellestrekk
Det finnes mange moslashnstre (patterns) som er blitt utviklet gjennom systemutviklingens historie
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 10
Designmoslashnstre = oppskrifter
Kirsten Ribu HiO 2005 11
Hvorfor bruke moslashnstre (patterns) for informasjonssystemer
Mye av varingrt daglige virke bestaringr i aring lete etter strukturer (moslashnstre) i omgivelsene
Moslashnstre er vanlige loslashsninger paring vanlige problemer
Det samme gjelder utvikling av informasjonssystemer
Mange systemer har grunnleggende fellestrekk
Det finnes mange moslashnstre (patterns) som er blitt utviklet gjennom systemutviklingens historie
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 11
Hvorfor bruke moslashnstre (patterns) for informasjonssystemer
Mye av varingrt daglige virke bestaringr i aring lete etter strukturer (moslashnstre) i omgivelsene
Moslashnstre er vanlige loslashsninger paring vanlige problemer
Det samme gjelder utvikling av informasjonssystemer
Mange systemer har grunnleggende fellestrekk
Det finnes mange moslashnstre (patterns) som er blitt utviklet gjennom systemutviklingens historie
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 12
Produksjon og konsumpsjon
Paringstand Mennesker er
Produsenter av varer og tjenester Konsumenter av varer og tjenester
Mange av varingre aktiviteter er former for rsquokjoslashpsalgrsquo og produksjon
Informasjonssytemer gjenspeiler og styrer varingre aktiviteter
Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjoslashpsalgproduksjons-systemer
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 13
Tilbake til use case modell for rsquoOrdrebehandlingssystemrsquo
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 14
Fellestrekk ved informasjonssystemer
Kan et kjoslashpsalgproduksjon system kan danne et grunnlag ndash moslashnster ndash for andre informasjonssystemer
I et hvilket som helst system hva er det som tilsvarer Ordrene Varene Regnskap Leverandoslashren Kunden etc
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 15
Gjenkjennelige trekk
Vi finner igjen salgssituasjonen i mange sammenhenger
Det er ofte nok til aring komme i gang med en use case modell
Og deretter et klassediagram Vanlige klasser i et slikt system kan feks vaeligre
Ordre Lager Leverandoslashr Kunde Produkt Faktura
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 16
Use casemodell for rsquoKjoslashpsalgsystemrsquo
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 17
Moslashnster for klassediagram
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 18
Problemloslashsning - par
Kritiske designsposlashrsmaringl Hvordan allokere ansvar til klasser Hvordan skal objekter samarbeide Hvilke klasser skal gjoslashre hva
Noen utproslashvde loslashsninger paring designproblemer =best-practice prinsipper (moslashnstre) = patterns eksemplifiserte kodeloslashsninger paring design-prinsipper
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 19
Gjenbruk av loslashsninger
Hensikt aring omsette eksisterende design kunnskap til et kodeskjelett
Man trenger ikke finne opp hjulet paring nytt hver gang hellip
Aring navngi moslashnstrene letter kommunikasjonen mellom utviklerne
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 20
Retningslinjer for god objektdesign
rsquoDesign patternsrsquo er navngitte retningslinjer for hvordan ansvar skal fordeles i ulike situasjoner
GRASP ndash rsquoPatterns of General Principles in Assigning Responsibilitesrsquo Moslashnster for problemloslashsning
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 21
GRASP
Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Hoslashy kohesjon Lav kobling
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 22
Objektdesign
Ekspertprinsippet La det objektet som har kunnskapen (dataene) ogsaring behandle den Kontrollobjektprinsippet To typer kontrollere
Fasadekontroller En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller Styrer ett use case (brukes i stoslashrre systemer Et kontrollobjekt for hvert use case)
Skaperprinsippet Legg ansvar for aring opprette et nytt objekt i klassen som maring vite om det nye objektet
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 23
Information Expert
Tildel ansvar til den klassen som har tilgang til den noslashdvendige informasjonen for aring gjoslashre jobben
Eksempel I et salgssystem Metoden rsquohentKundenummer()rsquo legges i klassen som har variabelen rsquokundenrrsquo
Fordel Oppnaringr paring denne maringten lav kobling og hoslashy kohesjon
Ulemper Kan faring for store klasser ved at for mye ansvar puttes inn i
en klasse Loslashsning Fordel ansvaret paring to klasser
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 24
Creator Problem Hvilken klasse er ansvarlig for aring opprette
nye objekter Loslashsning La det objektet som maring vite om de nye
objektene lage dem Hvordan Gi klasse B ansvaret for aring opprette et
objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Eksempel KlasseB objektA = new KLasseB()
Ulempe Klasse A og B har hoslashy kobling
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 25
Controller
Hvilken klasse skal behandle en systemhendelsemelding Kontrolleren ligger gjerne paring klienten Kontrolleren har bare metoder faring eller ingen
variabler Kontrolleren gjoslashr ikke jobben selv men mottar
og fordeler oppgaver ndash er en slags administrator
Delegerer oppgaver og styrer use case Er et bindeledd mellom brukergrensesnittet
og applikasjonslaget
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 26
rsquoGenerer sposlashrreskjemarsquo igjen
visSposlashrreskjema()
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 27
Controller eksempel
Fordel Lett aring bytte ut klassene over og under kontrollklassen spesielt gernesesnitt
Styrer hendelsesforloslashpet i et use case
GUI
Controller
Kunde
fasadekundedatabase
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 28
Controller forts
Ulemper Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere faringr for mye ansvar = mangel
paring kohesjon Kontrolleren har for mange jobber aring gjoslashre Ansvaret og attributtene skulle vaeligrt
distribuert
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 29
Ekspertprinsippet (Information Expert)
Problem Hva er det generelle prinsipp for aring tilordne ansvar til objekter
Loslashsning La det objektet som har kunnskapen (dataene) ogsaring behandle den
Hvordan Begynn med aring formulere ansvarsomraringdet
Hvilket objekt har ansvar for aring vite om det totale antall svar paring undersoslashkelsen
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 30
Skaperprinsippet (Creator)
Problem Hvem er ansvarlig for aring opprette nye objekter
Loslashsning La det objektet som maring vite om de nye objektene lage dem
Hvordan Gi klasse B ansvaret for aring opprette et objekt av klasse A dersom ett av foslashlgende er sant B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet naringr det opprettes
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 31
Finn systemklasse
Vi trenger en rsquoSposlashrreskjemaGeneratorrsquo klasse for aring opprette nye skjemaer
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 32
Mer om Patterns
GOF etchellip
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 33
Gang of Four (GoF)
Erich Gamma Richard Helm Ralph Johnson John Vlissides ndash forfatterne av boka rsquoDesign Patterns Elements of Reusable Object-oriented Softwarersquo ble kjent som Gang of FourNavnet var for langt til aring brukes i e-mail derfor rsquofirerbandenrsquo
Deres moslashnstre er kjent som GoF patterns
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 34
GOF (Gang of Four) 23 Moslashnstre
1048708 Creational Patterns (5) 1048708 Abstract Factory Builder Factory Method Prototype
Singleton 1048708 Structural Patterns (7)
1048708 Adapter Bridge Composite Decorator Faccedilade Flyweight Proxy
1048708 Behavioural Patterns (11) 1048708 Chain of responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template method Visitor
Bok Design Patterns av Erich Gamma (Author) Richard Helm (Author) Ralph Johnson (Author) John Vlissides (Author) Publisher Addison-Wesley Pub Co 1st edition (January 15 1995)
1048708 ISBN 0201633612
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur
Kirsten Ribu HiO 2005 35
GoF Patterns
httpwwwtmlhutfi~pnrGoF-modelshtml
Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur