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

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Tekst starter uden punktopstilling For at få punkt- opstilling på teksten, brug forøg indrykning For at få venstre- stillet tekst uden punktopstilling,
Objektorienteret programmering
08 – Mere OO Indkapsling Arv og polymorfi (OOP’s 3 hovedprincipper)
Hvordan man skriver koden.
Tietgen Skolen Trick med facadeklasse og serialisering ”Trick” – model ”samles” til eet overordnet objekt Alle klasser i model skal have attriutten [Serializable]
Larman, 2. udgave kap. 11 Grundlæggende Systemudvikling zHvad er systemudvikling ? zHvad er UML ? zHvad er analyse og design ? zHvad er UP ?
Programklasser for bladhus Den efterfølgende beskrivelse er ikke komplet. Der er ikke taget afsæt i use cases, sekvensdiagrammer og operationsbeskrivelser.
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Eksempel på realisering af domænemodel
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
Repetition: Introduktion til OOP med C# og .NET
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
FEN NOEA - Nordjyllands Erhvervsakademi1 Objektorienteret programmering Indkapsling Arv og polymorfi (OOP’s 3 hovedprincipper)
Unified Modeling Language
3. time Her beskæftiger vi os med John F. Sowas forklaring af erfaringsviden. John F. Sowa.
DB analyse og modellering Jesper Tørresø DAB1 F Februar 2008.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
Systemudvikling – Fra idé til kode.  Jens Bennedsen 2001Multimedie programmering9.2 Begrebsmodellering Problemspecifikke begreber Problem/vision vedrørende.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2002Objektorienteret systemudvikling To syn på verden Aristotelisk vs. prototypisk syn.
 Jens Bennedsen 2002Objektorienteret systemudvikling Persistens.
Checklister Comparable og Comparator. dIntProg, E08Checklister.2 Checkliste for Comparable Antagelse –vi har en liste med elementer af typen T: List lst;
Technology as material in design Johan Redström 2005, Design Philosophy Collection Two.
 Jens Bennedsen 2002Objektorienteret systemudvikling Interaktionsdiagrammer Hvordan beskrives objektinteraktion? Sekvensdiagrammer Collaborationsdiagrammer.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2002Objektorienteret systemudvikling Ideér til klasser Analysemønstre.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
 Jens Bennedsen 2002Objektorienteret systemudvikling Arkitektur.
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
 Jens Bennedsen 2001Multimedie programmering13.1 Lingo Objectorienteret Lingo.
 Jens Bennedsen 2001Multimedie programmering11.1 Lingo Basis.
 Jens Bennedsen 2002Objektorienteret systemudvikling Modelleringsperspektiver Hvad betyder en klassemodel egentlig?
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2002Objektorienteret systemudvikling1.1 Objektorienteret design Persistens - introduktion.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
 Jens Bennedsen 2002Objektorienteret systemudvikling Begrebsmodellering Hvordan får vi opbygget en domænemodel/begrebsmodel?
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering MVC Et mønster for grænseflader.
Hvad er en inkrementel og iterativ process?
Omsætning af en model til en RDB Jesper Tørresø DAB1 F Marts 2008.
Solution Makers A/S – Gruppe 4 Lars Wolter Nils Martinsen Rasmus Seye Tobias Kjeldsen 1.
WebApi service part 2 Routning og Action Simpel test-client (javascript) Session og Application data.
DB analyse og modellering
Compositional Design Principles “SemiCiv”
Programklasser for bladhus
Software Testing Software testing.
Simpel test-client (javascript) Session og Application data
Parametrisering En kort introduktion.
Præsentationens transcript:

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

 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

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

 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; }

 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

 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

 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

 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!

 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

 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

 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