Design Programmeertechnieken, Tim Cocx.

Slides:



Advertisements
Verwante presentaties
Ontwerpen Klassendiagrammen.
Advertisements

Interrogative sentences
User Centred Development
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Reflections on life Sound on Reflecties op het leven. Geluid aan.
English and IPC How to teach content through English.
Deltion College Engels B1 Lezen [no. 001] can-do : 2 products compared.
Deltion College Engels B1 Schrijven [Edu/003] thema: what have I done wrong…? can-do : kan s/ brieven schrijven over persoonlijke zaken © Anne Beeker.
Deltion College Engels B1 Gesprekken voeren [Edu/006] thema: Look, it says ‘No smoking’… can-do : kan minder routinematige zaken regelen © Anne Beeker.
Deltion College Engels B2 Schrijven [Edu/006] thema: Euromail can-do : kan in persoonlijke s nieuws en standpunten van een ander becommentariëren.
Deltion College Engels C1 Spreken [Edu/002] thema: A book that deserves to be read can-do : kan duidelijke, gedetailleerde samenvatting geven van een gelezen.
Deltion College Engels B2 Gesprekken voeren [Edu/005]/subvaardigheid luisteren thema: ‘Pink pop and air-controllers on strike’ can-do : kan in een telefoongesprek.
Nothing Is As It Seems Introduction Lesson. What are we going to do? - We gaan deze periode spreek, luister, lees en schrijflessen in een thema oefenen.
Deltion College Engels B1 En Spreken/Presentaties [Edu/006] Thema: “The radio station“ can-do : kan een publiek toespreken, kan verzonnen gebeurtenissen.
Deltion College Engels C1 Schrijven [Edu/007] thema: Mind twister or how to write an essay… can-do : kan heldere, goed gestructureerde uiteenzetting schrijven.
Nothing Is As It Seems Lesson 7 What’s the Story?.
Deltion College Engels B2 Lezen [Edu/003] thema: Topical News Lessons: The Onestop Magazine can-do: kan artikelen en rapporten begrijpen die gaan over.
Deltion College Engels B2 Spreken [Edu/001] thema: What’s in the news? can-do : kan verslag doen van een gebeurtenis en daarbij meningen met argumenten.
Deltion College Engels B1 Spreken [Edu/001] thema: song texts can-do : kan een onderwerp dat mij interesseert op een redelijk vlotte manier beschrijven.
Deltion College Engels C1 Gesprekken voeren [Edu/001]/ subvaardigheid lezen thema: What a blooper…. can-do : kan taal flexibel en effectief gebruiken voor.
Deltion College Engels B2 Lezen[Edu/001] /subvaardigheid schrijven korte samenvattingen thema: Exotic news can-do : lezen om informatie op te doen - kan.
Deltion College Engels B2 Schrijven [Edu/005] thema: Writing a hand-out can-do: kan een begrijpelijke samenvatting schrijven © Anne Beeker Alle rechten.
Deltion College Engels B1 En Spreken/Presentaties [Edu/003]/ Subvaardigheid lezen Thema: Once upon a time… can-do : kan een verhaal(tje) vertellen © Anne.
Deltion College Engels B1 Lezen [Edu/002] thema: But I ‘ve read it in… can-do : kan hoofdthema en belangrijkste argumenten begrijpen van eenvoudige teksten.
Deltion College Engels B1 En Spreken/Presentaties [Edu/005]/ Subvaardigheid schrijven Thema: One-Act Play “The Queue” can-do : kan een publiek toespreken,
Deltion College Engels B2 Gesprekken voeren [Edu/007] thema: ‘With this mobile you can…’ can-do : kan op betrouwbare wijze gedetailleerde informatie doorgeven.
Nederlandse Organisatie voor Wetenschappelijk Onderzoek Semantic Web and Library Applications Workshop Presented by Luit Gazendam.
Deltion College Engels B2 (telefoon)gesprekken voeren[Edu/002] /subvaardigheid lezen/schrijven thema: I am so sorry for you… can-do : kan medeleven betuigen.
Kom, ga met ons mee Come, go with us. ‘Wij vertrekken nu naar het land dat de Heer ons beloofd heeft. Ga met ons mee! Je zult het goed hebben bij ons.
Present Simple Tegenwoordige Tijd.  Om aan te geven dat iets nu een gewoonte is. Er zijn een aantal woorden die aangeven dat het om een gewoonte gaat.
The Future Hoe spreek je over toekomstige activiteiten in het Engels?
GegevensAnalyse Les 2: Bouwstenen en bouwen. CUSTOMER: The Entity Class and Two Entity Instances.
Future met will Gebruik je om te zeggen dat iets in de toekomst zal gaan gebeuren. Je gebruikt will als je voorspellingen doet zonder dat je daar bewijs.
2 december 2015, Privacy en de Digital Enterprise Vertrouwen in data.
Mavo 4.  Goal(s)  Letter Puzzle  Write a letter  Check the letters  Do assignments 4A, 5A, 6A & 7 in Student Book page 50  Evaluation.
Lamb to the Slaughter Who or what is ‘the Lamb to the Slaughter’ in this story?
OpleidingsCentrum voor Bowlers Clinic Appingedam KISS.
The Research Process: the first steps to start your reseach project. Graduation Preparation
Grammar – period 2.
de markt voor 2e hands auto’s “Een Experiment”
Key Process Indicator Sonja de Bruin
Welkom in de Top-2000 kerkdienst
KRITISCH DENKEN 11 Co-premissen II © Kritisch Denken.
Salt & Light Zout & Licht
ABILITY = IN STAAT ZIJN.
Simple en continuous tenses
Dictionary Skills!?.
Presentatie titel Measurement education in the junior primary –
SDI from a technological perspective: Architecture
Werkwijze Hoe zullen we als groep docenten te werk gaan?
De taaltaak
Today: Chapter 2 Discuss SO 2 What to study for your test?
Als ik kon zijn waar jij bent If I could be where you are
Als ik kon zijn waar jij bent If I could be where you are
Grammar in a Nutshell Skills 1.
Video and Radio NU Engels unit 5.1.
NEW INTERFACE UNIT 2 : GRAMMAR
English 23 April 2018.
Who knows something about scenarioplanning?
Software Development fundamentals
Dynamic Architecture What about you?
Assignment: calling for a meeting about internet use at work
Presentatie titel Effective Math Lesson Part 1
Empty handed here I come,
Matthew 16 “But who do you say that I am?”  Simon Peter replied, “You are the Christ, the Son of the living God.”  And Jesus answered him, “Blessed are.
Meaning maning by public leaders in times of crisis
Chapter 6 Sounds cool! Grammar Stepping Stones 2 t/hv.
Leerlingen zeiden: “Je MOET hem loslaten
Moving Minds DNA.
Transcript van de presentatie:

Design Programmeertechnieken, Tim Cocx

Analysis Klassendiagram Een eerste schets van de opbouw van het systeem Alle gebruikte termen komen uit de bedrijfspraktijk Beperkt Model Operaties (alleen uit bedrijfspraktijk, geen interne methoden) Overerving (alleen als hiërarchie bestaat in bedrijfspraktijk) Doel: gebruik bij correct krijgen van precieze Requirements Output: gebruikt bij een design klassendiagram en / of database klassendiagram

Analysis vs. Design Klassendiagram Alle Klassen zijn voor de business (klant / gebruiker) herkenbaar. De overerving is ook intuïtief

Kwaliteit van ontwerp Een systeemontwerp Is onderdeel van een ontwikkelingscyclus (WS 1) Dient als input bij het maken van ‘code’ Het is belangrijk dat al bij het ontwerp kwalitatief goede keuzes worden gemaakt. Ontwerp

Kwaliteitsdoelen Software wordt niet 1 keer geschreven en daarna nooit meer veranderd (zoals een boek) Software wordt uitgebreid, aangepast, geupdate, onderhouden, gecorrigeerd, geport. Dit wordt gedaan door verschillende mensen gedaan op verschillende momenten Vaak veel mensen Vaak over een lange tijd Dit gegeven moet worden ondersteund.

Kwaliteitsdoelen Begrijpelijkheid Uitbreidbaarheid Doelen Aanpasbaarheid Doelen Begrijpelijkheid (understandability): Iedere vakman moet binnen afzienbare tijd begrijpen hoe het systeem in elkaar zit Uitbreidbaarheid (Expandability): Het systeem moet makkelijk voorzien kunnen worden van nieuwe functionaliteit Aanpasbaarheid (adaptability): Het systeem moet makkelijk aangepast kunnen worden aan veranderde omstandigheden

Kwaliteitscriteria: Compleetheid Begrijpelijkheid Uitbreidbaarheid Aanpasbaarheid Doelen Een Klasse verricht alle taken die de naam doet vermoeden Naamgeving is dus belangrijk! Dit heet compleetheid (Completeness). Doel: hoog Compleetheid Criteria Bankrekening tegoed opnemen storten Bankrekening tegoed opnemen

Kwaliteitscriteria: Uitsluitendheid Begrijpelijkheid Uitbreidbaarheid Aanpasbaarheid Doelen Een klasse verricht alleen de taken die de naam doet vermoeden. Naamgeving is dus belangrijk Dit heet uitsluitendheid (sufficiency) Doel hoog Compleetheid Uitsluitendheid Criteria Bankrekening tegoed opnemen storten CreditCard check credit Verzekering bedrag check() Bankrekening tegoed verzekeringsBedrag credit opnemen storten checkVerzekering checkCreditCard

Kwaliteitscriteria: Primitiefheid Begrijpelijkheid Uitbreidbaarheid Aanpasbaarheid Doelen Een klasse biedt slechts een enkele manier om iets te doen Dit heet primitiefheid (primitiveness). Doel: hoog Compleetheid Uitsluitendheid Primitiefheid Criteria Bankrekening tegoed opnemen storten Bankrekening tegoed opnemen storten stortGrootBedrag meerStortingen X

Kwaliteitscriteria: Cohesie Begrijpelijkheid Uitbreidbaarheid Aanpasbaarheid Doelen Een Klasse modelleert slechts 1 logische taak en alle methoden ondersteunen dat doel. Zo’n klasse is makkelijk te begrijpen en hergebruiken Dit heet cohesie (cohesion) Doel: hoog Ook bij operaties kan je spreken van cohesie Compleetheid Uitsluitendheid Primitiefheid Cohesie Criteria

Kwaliteitscriteria: cohesie Begrijpelijkheid Uitbreidbaarheid Aanpasbaarheid Doelen Ultiem voorbeeld van lage cohesie: Een klasse regelt feitelijk alles, alle andere klassen hebben weinig verantwoordelijkheid ‘god-class’ Compleetheid Uitsluitendheid Primitiefheid Cohesie Spel score status nieuwPunt pauze hervat stopVijanden startVijanden beweegMario checkMarioLevend maakYoshiWild vulMysterieBlokken spuugUitMushroom Indicatie van lage cohesie: Grote classes Het diagram is een ‘ster’ Veel public methoden Er moet toch gecommuniceerd worden… Acties en namen van andere klassen in operatie-namen Criteria

Kwaliteitscriteria: Koppeling Begrijpelijkheid Uitbreidbaarheid Aanpasbaarheid Doelen Een klasse heeft zo weinig mogelijk ‘kennis’ nodig van andere klassen Dit is gebruik van methoden Als klassen veel van elkaar weten (en dus gebruiken) moeten bij aanpassing van 1 klasse veel andere ook worden aangepast. Dit heet koppeling (coupling) Doel laag Compleetheid Uitsluitendheid Primitiefheid Cohesie Koppeling Criteria

Kwaliteitscriteria: Koppeling Begrijpelijkheid Uitbreidbaarheid Aanpasbaarheid Doelen Indicaties van koppeling: Veel associaties Kennelijk gebruiken de klassen elkaar Operaties als: get<AndereKlasse>() Kennelijk geeft deze klasse kennis van een klasse door naar een andere klasse Compleetheid Uitsluitendheid Primitiefheid Cohesie Koppeling Criteria

Kwaliteitscriteria Begrijpelijkheid Uitbreidbaarheid Doelen Aanpasbaarheid Doelen Bij een eenvoudig systeem zijn de kwaliteitscriteria relatief makkelijk te behalen. Bij complexere systemen wordt dit lastiger Bij een grafische interface: Hier gebeurt input (knoppen) Hier gebeurt output (bv. PopUp) Koppeling naar andere klassen ligt op de loer Bij een spel: Een spel kan pauzeren Een spel moet resultaten verwerken (gewonnen / verloren) ‘God-class’ lig op de loer (=lage cohesie) Compleetheid Uitsluitendheid Primitiefheid Cohesie Koppeling Criteria

Kwaliteitsmethodiek Begrijpelijkheid Uitbreidbaarheid Doelen Aanpasbaarheid Doelen Aan de criteria kan je het beste voldoen door je steeds af te vragen: Heb ik de verantwoordelijkheden goed verdeeld? Is dit inderdaad de verantwoordelijkheid van deze klasse? Dit heet Responsibility Driven Design (RDD). Compleetheid Uitsluitendheid Primitiefheid Cohesie Koppeling Criteria Methodiek RDD

Types: UML syntax Katachtige Geen void!! aantalKids : int In de meeste programmeertalen hebben attributen, parameters (variabelen), en operaties een bepaald type. Deze leg je bij het ontwerp vaak al vast… … en zie je dus al in het klassendiagram De syntax is (operatie/ variabele)naam : type Katachtige aantalKids : int geefMelk (minuten: int) : int bewegen (afstand : double) Geen void!!

Encapsulatie Mag Mario deze aanpassen? Mag Spel deze aanpassen?? Als klassen met elkaar een associatie hebben kunnen ze elkaars attributen aanpassen en elkaars operaties gebruiken. Het proces van toegang reguleren heet encapsulatie Mag Mario deze aanpassen? Mario levens : int spring() gaDood() pakItem(deze: Item) Spel score : int nieuwPunt(punt: int) 1 1 Mag Spel deze aanpassen?? Is deelnemer bij Mag Spel deze operatie gebruiken??

Encapsulatie: UML syntax Een attribuut of operatie is public: Het element kan door elke geassocieerde klasse aangeroepen of aangepast worden Syntax ‘+’ Een attribuut of operatie is private: Het element kan alleen door operaties van de eigen klasse aangeroepen of aangepast worden Syntax ‘-’ Een attribuut of operatie is protected: Het element kan door operaties van de eigen klasse, de kind-klassen (en klassen in het package) aangeroepen of aangepast worden Syntax: ‘#’ Regel: zoveel mogelijk private In ieder geval alle attributen Een klasse zonder ‘public’s’ is onnuttig.

Encapsulatie: UML syntax Mario levens : int spring() gaDood() pakItem(deze: Item) Spel score : int nieuwPunt(punt: int) 1 1 Is deelnemer bij

Bewaren van modellen? Strategie Gevolgen Analysis model verandert in Design model Je hoeft maar 1 model te onderhouden Je raakt de oorspronkelijk business communicatie kwijt Analysis model verandert in Design model en gebruikt een tool om analyse model terug te krijgen Het analyse model is mogelijk van lage kwaliteit Maak een kopie van het analyse model en verfijn dat naar een design model Analysis model is mogelijk out-of-date Beide diagrammen zijn aanwezig en van goede kwaliteit Start en onderhoud 2 losse modellen Je moet beide modellen onderhouden

Constraints Coin MysteryBlock 1 * contains A MysteryBlock contains multiple Coins A Coin is contained by 1 MysteryBlock But… Is the Coin interested in who contains it?? Is the MysteryBlock interested in what it contains?

Navigability: UML syntax An association has a direction, which we call navigability. Which class has knowledge of the other class in an association. If you ‘know’ the other class you can call methods of the other class. This is different from reading direction! Denoted by: arrowheads and crosses. Coin MysteryBlock contains 1 * The MysteryBlock has knowledge of the Coin The Coin has no knowledge of the MysteryBlock

Navigability: UML syntax There are multiple options: Bidirectional Unidirectional Undefined But that one is not allowed Rules At least one side is navigable (otherwise, why the association?) As less navigability as possible (lecture 4) Bidirectional A B Unidirectional One side A B Unidirectional other side A B Left ‘Undefined’ A B

Case 1: Mario Mushroom Mushroom Yoshi Player Yoshi Player MysteryBlock Provide the navigability: MysteryBlock Mushroom Is in 0..1 1 MysteryBlock Mushroom Is in 0..1 1 Yoshi Player rides 0..1 Yoshi Player rides 0..1

Navigability unary association X What is the navigability of ‘friend of’ You’re always mutual friends So bidirectional? Student code study doExam 2..* Friend of Answer: NO, Unidirectional Otherwise ‘store 2 times’ ‘I have you as friend’ ‘you have me as friend’ Rule: In unary associations based on equality (friends, neighbors, brother-sister, etc.) always unidirectional

Navigability unary association What is the navigability of ‘is boss of’? Unequal relationship So unidirectional? Employee name salary dateOfBirth work spaceOut complain 0..1 * Is boss of Answer: NO, both can happen If you know your boss and your boss knows its subordinates: bidirectional If 1 of you doesn’t know: unidirectional Rulein an unequal relationship: both are possible

Case 5: Animal Kingdom All animals are able to move and breath. Animals are either feline or reptiles. All reptiles have a number of scales, lay eggs, all felines have a number of offspring and provide milk. Reptiles are either a snake, a lizard or a dinosaur. The feline family consists of tigers and domesticated cats

Case 5: Animal Kingdom Dinosaur Animal Feline Reptile Cat Tiger Snake breath move Feline numberOfOffspring provideMilk Reptile numberOfScales layEggs Cat Tiger Snake Lizard

Case 5: Animal Kingdom Feline ?

Abstract Class: UML Syntax Some classes are not meant to make objects of They are just a convenient tool to model similarity This is an abstract class In UML: class name in italics You cannot create an object of an abstract class Feline numberOfOffspring provideMilk

Case 5: Animal Kingdom (extension) Different animals move completely different. Reptiles usually move ‘close to the ground’, except snakes that crawl. Felines move ‘light on their feet’.

Implementation of methods We already saw an example where analysis text provides context for the possible contents of an attribute. This also happens for methods where a description is proided how the method should be implemented (think chess moves) In super class: inheritance In super class: abstract method Also in child class: polymorphism

Abstract Method: UML Syntax “Different animals move completely different” The superclass ‘knows’ all animals can move The super class has no idea hoe the implementation is. Since all sub classes have a ‘completely different’ implementation. This is an Abstract Method. Every sub class should contain this method Implented, ór Pass it on to its own sub classes (again abstract) Can only exist in an abstract class UML: method name in italics Both Abstract!! Animal breath move

Polymorphism “Reptiles usually move ‘close to the ground’, except snakes that crawl.” If the majority of sub classes have the same implementation of a certain method, you place that implementation in the super class. Divergent sub classes overwrite that method with an own variant This is called polymorphism UML: just have a method with the same name in the sub class

Polymorphism Standard Method Polymorphism!! Divergence Dinosaur Snake move Lizard Reptile numerOfScales layEggs Dinosaur Standard Method Polymorphism!! Divergence

Case 5: Animal Kingdom Dinosaur Animal Feline Reptile Cat Tiger Snake breath move Feline NumberOfOffspring provideMilk move Reptile numberOfScales layEggs move Cat Tiger Snake move Lizard

Analysis vs. Design Klassendiagram Nieuwe Klasse Belegging van verantwoordelijkheden Interne operatie / attribuut Navigabiliteit & composities Interne overerving Interface Klasse

Abstraction Sometimes you want to With less methods Offer a simple interface to other ‘components’ With less methods This is good for understandability Handout a task, but don’t care what class performs that task Possible solution: abstract class

Abstraction But! Sometimes you want And… Solution: interface Explicitly forbid other ‘components’ to see some functionality To have different implementations And… Sometimes there is no ‘natural’ inheritance. Solution: interface

Interface An interface is collection of methods ‘to be implemented’ by other classes These classes can be sub classes of another class An interface has no method implementation An interface has no attributes One cannot make an object of an interface A class that implements an interface must provide implementation for each method in it (or pass it on to sub classes) An interface offers functionality to other classes without specifying which classes will fulfill the role An interface can be seen as a diploma; you don’t care who exactly does the job, as long as he / she is qualified.

Interface: UML Syntax Interface Dotted line CoffeeGetter getCoffee Director manage uses * 1 Interface Dotted line Director doesn’t know (or cares) who exactly delivers the coffee AS LONG as it is being done. Having a connection to the interface quarantees this. Run-time a Student can perform the task Student code getCoffee study doExam Student implements the mandatory method

Example application for interface Users of our database library can only access this functionality. The internal mechanics are (deliberately) unknown to them

Example application for interface: Observer pattern Het interesseert Account niet OF, HOEVEEL & WELKE Klassen luisteren naar events. Hiervoor is een interface erg geschikt. Later kunnen nu nog onbekende klassen ook luisteraar worden als ze de methode maar implementeren Bij elke gebeurtenis roept het account notify aan. Hierin wordt van elke luisteraar (in listeners) de methode faceBookEvent aangeroepen. Deze bestaat, want al deze klassen implementeren de interface Een Facebook account genereert verschillende ‘gebeurtenissen’ (events). Verschillende klassen kunnen zich aanmelden om hierop te reageren. These are all possible events Classes can enlist or remove themselves as ‘listener’ NB: in reality this system doesn’t exist; its component would run on different devices. It is just an illustration

Next up… Continue with assignment 3