OO Analyse in de praktijk

Slides:



Advertisements
Verwante presentaties
Tevredenheids onderzoek Door Lizanne Jespers HBO-V studente Maart 2014
Advertisements

Auditen op succes waarderend auditen
De zin en onzin van escrow
Informatie & informatiedrager schepping of evolutie ?
Stijn Hoppenbrouwers Software Engineering les 1 Algemene inleiding en Requirements Engineering.
OOS Object geOrienteerd Software-ontwerp
1.Er wordt als groep gereden, dus: Samen uit, samen thuis! 2.Cycletime is een toerfietsvereniging, de tochten zijn geen wedstrijd 3.ledereen houdt zich.
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 14: Eerste echte e-commerce applicatie: Implementatie (vervolg)
1 Demo of Praktijk Over de problematiek bij het ontwerpen van informatiesystemen Mark Dumay Afstudeervoordracht 15 oktober 2004.
Ronde (Sport & Spel) Quiz Night !
Natuurlijke Werkloosheid en de Phillipscurve
Aftersales/Onderhoud Onderzoek | februari 2005 | ©TNS NIPO | 1 Automotive Door Vincent Groen, Steven Boekee De Nederlandse automobilist en zijn werkplaats.
Hoe pas je de interacties in in je analyse van je domein?
Vergaderen Gebruikt materiaal Actie! Office3 bso blz. a Benoem het materiaal in de tweede kolom in je boek op blz b In de derde kolom.
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 5.
Software Engineering les Procesmodellen en Use Cases
Hoofdstuk 6: Controle structuren
HANDLEIDING: REGISTREREN VAN VACCINATIES Q-KOORTS
Visibility-based Probabilistic Roadmaps for Motion Planning Tim Schlechter 13 februari 2003.
Ontwerpen van Informatiesystemen met
Interaction diagrams: Sequence Diagram
Deze les wordt verzorgd door de Kansrekening en statistiekgroep Faculteit W&I TU/e.
IJspakketten Annette Ficker Tim Oosterwijk
INTERACTION DESIGN Week 2. VANDAAG Wat hebben we ook al weer gedaan Usecase vormen Bouwstenen Spelregels Briefing voor werkcolleges Q & A.
Verdieping Programmeren in Java - deel 1 college 6 mei 2001.
Sneeuwschuivers en leren sneeuwschuiven myResearch Portal en het belang van workflow data analyse Richard L. Zijdeman DAI: info:eu-repo/dai/nl/
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Inleidend probleem Data structuur (hiërarchie van classes)
Hoofdstuk 18 Veranderingen in organisaties tot stand brengen
14-1 Copyright © 2005 Prentice-Hall Hoofdstuk 15 Een machtsbasis creëren Managementvaardigheden, 2/e editie door Phillip L. Hunsaker Copyright © 2005 Prentice-Hall.
Hoofdstuk 9 Het ontwerpen van functies
Object Oriented Modeling
Werken aan Intergenerationele Samenwerking en Expertise.
Elektriciteit 1 Basisteksten
Chronologie van maatregelen tegen de joden in het Derde rijk
Informatieanalyse.
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Tweedegraadsfuncties
Informatiesystemen in de Bouw
P. 1 Vakgroep Informatietechnologie Structuur Deel II C++ Classes Namespaces Type casting Reference types Constructors en Destructors Memory Management.
Dia 1 Productencatalogus: Infosessie provinciale en lokale besturen 24/11/11.
C/S varianten s /CSpaginas/
HBO-I Conference Tour RUP| versie 1.0 | 18 maart 2010 RUP toegepast binnen DUO Een korte impressie hoe we binnen DUO RUP ingevoerd hebben (aan het.
Module 7 – Hoofdstuk 3 Unified Modeling Language.
ZijActief Koningslust 10 jaar Truusje Trap
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
OO Analyse in de praktijk OO Analyse in de praktijk IV OO basisregels.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Voorrangsregels bij rekenen (1)
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
Testen Hoofdstuk 22. Visual Basic.NET voor studenten2 Inleiding Testen hebben als doel het ontdekken van bugs Het is echter onmogelijk om met testen te.
De financiële functie: Integrale bedrijfsanalyse©
Programmeerstijl Hoofdstuk 21. Visual Basic.NET voor studenten2 Inleiding Belang van een goede programmeerstijl:  Programma’s worden door meerdere mensen.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
Hoofdstuk 23 Eliminatie en ingooi
April Slide 2"Insert" Date via Date & Time Sales product training Amsterdam, the Netherlands Lennart van Houwelingen Fallbrook Technologies.
Overerving: It’s a kind of magic…. Principes van OO: 1) Overerving 2) Encapsulatie 3) Polymorphisme = (deel van het) OO. paradigma.
Interfaces Hoofdstuk 23 Hoofdstuk 23.
Introductie tot GoF patterns in Java
Iedereen is context driven!
Cegeka & TenForce Ronde tafel 17/06/2014 Doelstellingenmanagement VO.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Polymorphisme en Interfaces: inleiding
Functioneel Ontwerpen
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Analyse 3 INFANL01-3 week 2 CMI Informatica.
UML De Basics en de Use-case Diagrammen. UML Introductie Unified Modeling Language Grafische modelleertaal Waarom UML? - UML wordt gebruikt om de werking.
Gameprogrammeren: Objecten en geheugen
Unified Modeling Language 2.0
Gameprogrammeren: Abstracte klassen
Transcript van de presentatie:

OO Analyse in de praktijk III Use Cases & OOD-principes OO Analyse, III Use Cases & OOD-principes

OO Analyse, III Use Cases & OOD-principes Boeken/tutorials: UML for JAVA Programmers (Robert C. Martin © Copyright 2003.) Vooral hoofdstuk 5 & 6 UML distilled Martin Fowler OO Analyse, III Use Cases & OOD-principes

OO Analyse, III Use Cases & OOD-principes Inhoudstafel Use Cases OOD-principes OO Analyse, III Use Cases & OOD-principes OO Analyse, III Use Cases & OOD-principes

OO Analyse, III Use Cases & OOD-principes Use Cases: Het Idee Martin: Beschrijft de voor de gebruiker merkbare gebeurtenissen, als gevolg van één gebruikersstimulus Fowler: =Voor de gebruiker merkbare functie Bereikt 1 welbepaald doel voor de gebruiker OO Analyse, III Use Cases & OOD-principes

OO Analyse, III Use Cases & OOD-principes Use Cases - Algemeen Beginfase van requirements analyse. Gaat de andere technieken vooraf. =Beschrijving van gedrag (evt in ovaaltjes). Eenvoudige techniek. Weinig precies. Klant kan meedoen. Helpt om klassen en relaties te vinden. De diagrammen worden voortdurend bijgewerkt. Gedetailleerde diagrammen bestaan maar zijn nutteloos. OO Analyse, III Use Cases & OOD-principes

Use Cases: Voorbeeld primary course Context: de producten van een winkelbezoeker passeren langs de kassierster. Een ‘normale piste‘ =‘primary course’=‘normal use case’ zou kunnen zijn: Registreer produkt (= 1 use case) 1. Kassierster beweegt product over de barcodescanner (de ene stimulus !!) 2. Systeem geeft ‘piep‘-signaal om aan te geven dat de barcode werd begrepen. (hoorbaar !!) 3. Prijs en subtotaal verschijnen op het scherm. (zichtbaar !!) 4. Productbeschrijving en prijs worden gedrukt. (zichtbaar !!) OO Analyse, III Use Cases & OOD-principes

Use Cases: Voorbeeld alternate course Context: de producten van een winkelbezoeker passeren langs de kassierster. Een ‘alternate course’ geeft een use case in geval van ‘problemen’: Barcode niet gekend i.p.v. 2: Systeem geeft signaal om opnieuw te scannen. Als het na 3 pogingen niet lukt, geeft de kassierster het product manueel in. OO Analyse, III Use Cases & OOD-principes

Use Case/System Boundary Diagram <<uses>> Registreer produkt <<uses>> <<extends>> Barcode niet gekend OO Analyse, III Use Cases & OOD-principes

OO Analyse, III Use Cases & OOD-principes Opmerkingen Het figuurtje (stick figure) stelt de ‘actor’ voor. Dit is de externe figuur die de externe stimulus geeft. Actors kunnen ook machines zijn, bvb een klok. Actors kunnen meerdere use cases opstarten. De <<extends>>-pijl vertrekt van uit de alternate course. De <<uses>>-pijl wijst naar een gemeenschappelijk gedeelte van een use case. De rechthoek geeft de systeemgrenzen (system boundaries) weer. Zo hoort de ‘actor’ niet tot het systeem. Strict genomen is het diagram een mix van een use case diagram en een system boundary diagram. OO Analyse, III Use Cases & OOD-principes

Extra toeters en bellen In principe kan het diagram verrijkt worden met precondities en postcondities. In het vroege stadium waarin use cases gebruikt worden, hebben die dingen nog weinig zin. Pre- en postcondities zijn wel nodig voor de uitvoerbare code. Ze hangen samen met het testen OO Analyse, III Use Cases & OOD-principes

OO Analyse, III Use Cases & OOD-principes Single Responsibility Liskov Substitutie Dependency Inversion OO Analyse, III Use Cases & OOD-principes

OOD principe: Single Responsibility Een klasse mag maar één reden hebben om te veranderen Waarom: Eenvoud. Stel een klasse verenigt verschillende functionaliteiten: Clients die maar in een beperkt aantal methoden geïnteresseerd zijn worden overweldigd door nutteloze methoden. Als een publieke methode veranderd, moet de client hercompileren, zich zorgen maken of hij zijn code moet aanpassen,… OO Analyse, III Use Cases & OOD-principes

Single Responsibility: Tegenvoorbeeld Zo moet het NIET: Probleem: Een client van Werknemer die geen persistentie nodig heeft wordt overladen met nutteloze details <<interface>> Persistent Werknemer Bedrijf OO Analyse, III Use Cases & OOD-principes

Single Responsibility: Oplossing Zo moet het: Oplossing: Code ivm persistentie staat nu apart. Een client die denkt met een Werknemer te werken, kan een PersistenteWerknemer krijgen zonder dat hij last heeft van de extra persistentie-methoden. <<interface>> Persistent Werknemer PersistenteWerknemer OO Analyse, III Use Cases & OOD-principes

OOD principe: Liskov’s Substitutie Binnen client code moet een klasse steeds kunnen vervangen worden door en subklasse, zonder dat de functionaliteit verandert. Waarom: Vermijden van onvoorziene bugs. Stel dat hierop gezondigd wordt, doordat zonet een subklasse is ontworpen met uitzonderlijk gedrag. De clientcode moet aangepast worden om te voorzien in het speciaal geval. Er moet getest worden van welk type de gebruikte klasse is. OO Analyse, III Use Cases & OOD-principes

Liskov’s Substitutie: Tegenvoorbeeld Zo moet het NIET: <<abstract>> Werknemer +berekenSalaris {A} Vrijwilliger BetaaldeWerknemer OO Analyse, III Use Cases & OOD-principes

Liskov’s Substitutie: Tegenvoorbeeld (vervolg) Binnen BetaaldeWerknemer hebben we: public double berekenSalaris(){ … return … ;// echt salaris > 0 } Binnen Vrijwilliger hebben we: return 0; // fake salaris = 0 OO Analyse, III Use Cases & OOD-principes

Liskov’s Substitutie: Tegenvoorbeeld (vervolg) Wat is het probleem met dit tegenvoorbeeld: Uitbetalen van een nulsalaris is niet hetzelfde als niet uitbetalen van een salaris. Vb: genante situatie van een vrijwilliger die een salarisstrook met een dikke 0 krijgt. De client van een Werknemer moet dus nagaan van welk dynamisch type de concrete Werknemer is. Oproepen van berekenSalaris mogen gewoon niet gebeuren op objecten van het type Vrijwilliger. Vandaar de oplossing op de volgende slide: OO Analyse, III Use Cases & OOD-principes

Liskov’s Substitutie: Oplossing Zo moet het: <<abstract>> Werknemer Vrijwilliger BetaaldeWerknemer +berekenSalaris {A} OO Analyse, III Use Cases & OOD-principes

OO Analyse, III Use Cases & OOD-principes Dependency Inversion De term was beter geweest: ‘Depend on Abstract’ De naam komt van de volgende regel Je concrete klassen moeten afhangen van abstracte klassen en niet omgekeerd. Waarom: Concrete klassen veranderen vaak. Die veranderingen beïnvloeden jouw code. N.B: Het is misschien wel oké om concrete klassen te gebruiken die waarschijnlijk niet gaan veranderen, vb Date, HashMap, etc…. Maar je weet maar nooit. Zie VB6 -> VB.net OO Analyse, III Use Cases & OOD-principes

Dependency Inversion: Tegenvoorbeeld Zo moet het NIET: Probleem: Indien de proprietary MicroToolForm zijn default properties wijzigt dan moet ik die ook accepteren of op verschillende plaatsen veranderen * MicroToolForm MijnBoekhoudApplicatie OO Analyse, III Use Cases & OOD-principes

Dependency Inversion: Eerste Verbetering MicroToolForm * MijnBoekhoudApplicatie MijnForm Verbetering: Indien de proprietary MicroToolForm van (zeg maar) kleur verandert, dan kan ik dit nog wijzigen in MijnForm. OO Analyse, III Use Cases & OOD-principes

Dependency Inversion: Tweede Verbetering <<interface>> MicroToolForm MijnForm MijnBoekhoudApplicatie * MijnConcreteForm Verbetering: Indien nu de MicroToolForm verandert, hoeft MijnBoekhoudApplicatie zelfs niet te weten dat dit is gebeurd. Hij werkt met MijnForm abstracte klasse of interface. OO Analyse, III Use Cases & OOD-principes