Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.

Lignende præsentationer


Præsentationer af emnet: " Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler."— Præsentationens transcript:

1  Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler

2  Jens Bennedsen 2002Objektorienteret systemudvikling GRASP Patterns (Larman) What are the GRASP patterns? –The GRASP patterns describe fundamental principles of assigning responsibilities to objects, expressed as patterns –Patterns are named problem/solution pairs that codify good advice and principles The patterns –Expert –Creator –Low coupling –High cohesion –Controller –Polymorphism –Pure Fabrication –Indirection –Protected variations

3  Jens Bennedsen 2002Objektorienteret systemudvikling Goals Two types of patterns High Cohesion Low Coupling Information Expert CreatorControler Polymorphism

4  Jens Bennedsen 2002Objektorienteret systemudvikling Polymorphism Undgå test af et objekts type –Når alternative udførsler udvælges beseret på typen af objekt, bør man bruge en polymorf metode istedet for en if statement på typen public class Vare { public double prisMedMoms() { if (momsType==1) return 1.25*prisUdenMoms; else if (momsType==2) retrun 1.50*prisUdenMoms+10.00; else return -1.00; } … private int momsType; }

5  Jens Bennedsen 2002Objektorienteret systemudvikling Anvendelse af polymorphism Opnået: –Modificerbarhed vedr. nye typer af moms –Anvender afhænger ikke af den konkrete type men blot af begrebet

6  Jens Bennedsen 2002Objektorienteret systemudvikling Pure Fabrication ”Det er ikke alt ansvar der kan placeres på domæneklasser” –OO er en naturlig måde at anskue verden på, derfor skal der begreberne kunne genfindes ude i verden –Vi har andre kvalitetskriterier: Kobling og binding/samhørighed –Typisk når der skal placeres ”teknisk ansvar” Persistens Kommunikation Middelware

7  Jens Bennedsen 2002Objektorienteret systemudvikling Indirection Hvordan skal man placere ansvar mellem to (eller flere) ting, så de ikke bliver direkte afhængige af hinanden Indfør en ”mellem objekt” –”Add just another level of indirection” Brug interfaces til at udtrykke roller som en klasse kan spille

8  Jens Bennedsen 2002Objektorienteret systemudvikling Eksempel Alle ændringer i Vare påvirker OrdreLinie Der kan kun være varer i en ordreLinie Hvad skal OrdreLinie egentlig vide om Vare? –Se på interaktionen mellem objekterne!

9  Jens Bennedsen 2002Objektorienteret systemudvikling interfaces Definer et interface der kan det anvenderen kræver Lad anvenderen være associeret til interfacet Rollebaseret software udvikling Applikationsframeworks

10  Jens Bennedsen 2002Objektorienteret systemudvikling Protected Variations Hvordan skal man designe klasser, subsystemer og systemer så ændringer ikke påvirker andre elementer Identificer ændringepunkterne, placer ansvar og lav et stabilt interface til dem Eksempel –Moms –Salgbar Et bagvedliggende mønster i forhold til data indkapsling, polymrophism, indirection og mange design mønstre

11  Jens Bennedsen 2002Objektorienteret systemudvikling Protected Variations (2) Don’t talk to strangers (Law of Demeter) –Et objekt må kun kalde: this En parameter En attribut Et objekt i en collection der er en attribut Et selvskabt objekt Information hiding –”…one begins with a list of difficult design desicions or design desicions that are likely to change. Each module is designed to hide such a desicion from the others” Open-closed principle


Download ppt " Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler."

Lignende præsentationer


Annoncer fra Google