35
Kirsten Ribu HiO 20 05 1 Ansvarsdrevet design og bruk av design-mønstre 04.11.2005 Kirsten Ribu

Ansvarsdrevet design og bruk av design-mønstre

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

Page 1: Ansvarsdrevet design og bruk av design-mønstre

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

Page 2: Ansvarsdrevet design og bruk av design-mønstre

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

Page 3: Ansvarsdrevet design og bruk av design-mønstre

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

Page 4: Ansvarsdrevet design og bruk av design-mønstre

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

Page 5: Ansvarsdrevet design og bruk av design-mønstre

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

Page 6: Ansvarsdrevet design og bruk av design-mønstre

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

Page 7: Ansvarsdrevet design og bruk av design-mønstre

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

Page 8: Ansvarsdrevet design og bruk av design-mønstre

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

Page 9: Ansvarsdrevet design og bruk av design-mønstre

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

Page 10: Ansvarsdrevet design og bruk av design-mønstre

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

Page 11: Ansvarsdrevet design og bruk av design-mønstre

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

Page 12: Ansvarsdrevet design og bruk av design-mønstre

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

Page 13: Ansvarsdrevet design og bruk av design-mønstre

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

Page 14: Ansvarsdrevet design og bruk av design-mønstre

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

Page 15: Ansvarsdrevet design og bruk av design-mønstre

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

Page 16: Ansvarsdrevet design og bruk av design-mønstre

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

Page 17: Ansvarsdrevet design og bruk av design-mønstre

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

Page 18: Ansvarsdrevet design og bruk av design-mønstre

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

Page 19: Ansvarsdrevet design og bruk av design-mønstre

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

Page 20: Ansvarsdrevet design og bruk av design-mønstre

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

Page 21: Ansvarsdrevet design og bruk av design-mønstre

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

Page 22: Ansvarsdrevet design og bruk av design-mønstre

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

Page 23: Ansvarsdrevet design og bruk av design-mønstre

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

Page 24: Ansvarsdrevet design og bruk av design-mønstre

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

Page 25: Ansvarsdrevet design og bruk av design-mønstre

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

Page 26: Ansvarsdrevet design og bruk av design-mønstre

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

Page 27: Ansvarsdrevet design og bruk av design-mønstre

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

Page 28: Ansvarsdrevet design og bruk av design-mønstre

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

Page 29: Ansvarsdrevet design og bruk av design-mønstre

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

Page 30: Ansvarsdrevet design og bruk av design-mønstre

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

Page 31: Ansvarsdrevet design og bruk av design-mønstre

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

Page 32: Ansvarsdrevet design og bruk av design-mønstre

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

Page 33: Ansvarsdrevet design og bruk av design-mønstre

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

Page 34: Ansvarsdrevet design og bruk av design-mønstre

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

Page 35: Ansvarsdrevet design og bruk av design-mønstre

Kirsten Ribu HiO 2005 35

GoF Patterns

httpwwwtmlhutfi~pnrGoF-modelshtml

Behavioral ndash Oppfoslashrsel Creational ndash Skaper Structural - Struktur