1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.

Slides:



Advertisements
Verwante presentaties
1.larmoire. 2. lescalier 3. La grand-mere 4. Le canapé
Advertisements

Objectgeoriënteerd Programmeren in C++
Edushock leerfestival
Doublet deel 1 – de basis.
Klimaatrobuustere modellering van evapotranspiratie
Evaluatie van MS Exchange 2000 en opzetten van een server voor wereldwijde uitwisseling van projectinformatie Bertels David 3ICT1 Stageplaats: Acros Organics.
De fundamenten van de organisatiestructuur
Downloaden: Ad-aware. Downloaden bestaat uit 3 delen: •1. Zoeken naar de plek waar je het bestand kan vinden op het internet •2. Het nemen van een kopie.
Sociaal emotionele ontwikkeling en groepsgedrag
Rijksgebouwendienst schrijft BIM voor
Personalisatie van de Archis website Naam: Sing Hsu Student nr: Datum: 24 Juni 2004.
Figuur 5.1 Organisatieschema Figuur 5.2 Steile en platte organisatie.
Electronic Resource Management (ERM) Els Schaerlaekens Anet Gebruikersdag 15 juni 2011.
Ronde (Sport & Spel) Quiz Night !
HOOFDSTUK 12 Media.
prNBN D addendum 1 Deel 2: PLT
Diagnosticeer uw schouder Dit is een interactieve gids om u te helpen vinden relevante patiënten informatie over uw schouderprobleem. Het is bedoeld als.
Klassieke AO Leseenheid1
Het ontwerpen van een klasse
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.
Excursie Röntgenafdeling Vie Curi Venlo 15 september 2009 ZijActief Koningslust ZijActief Koningslust Excursie Rontgenafdeling Vie Curie Venlo.
Gezonde Relaties
© GfK 2012 | Title of presentation | DD. Month
WISKUNDIGE FORMULES.
Ondergrondse Geo-Informatie GIS bij tunnel-engineering
MEDIALANDSCHAP We onderscheiden: Visuele media Auditieve media
Ontwerpen van Informatiesystemen met
Interaction diagrams: Sequence Diagram
TUDelft Knowledge Based Systems Group Zuidplantsoen BZ Delft, The Netherlands Caspar Treijtel Multi-agent Stratego.
Java patterns Introductie tot GoF patterns in Java.
1 Uit ons domein: Verzameling programmatuur voor het toewijzen van afstudeerders aan examinatoren. Invoer van voorkeuren Toewijzen Overzichten Practicum.
Designing Knowledge Systems b Hoofdstuk 11 van Knowledge Engineering and Management. The CommonKADS Methodology. b A.Th. Schreiber, J.M. Akkermans, A.A.Anjewierder,
1.Rom.3:22vanin 2.Rom.3:26vanin 3.Gal.2:16 (2x)vanin 4.Gal.2:20vanin 5.Gal.3:22vanin 6.Ef.3:12 aanin 7.Filp.3:9vanin St.Vert.NBG “geloof VAN” Christus.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Werken aan Intergenerationele Samenwerking en Expertise.
Breuken-Vereenvoudigen
Geometrie en topologie Rob Kromwijk, 26 juli 2012.
1 Kwaliteitscultuur Bolognaseminarie Vlaamse Bologna-expertenteam 13 en 19 maart 2009.
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
PLAYBOY Kalender 2006 Dit is wat mannen boeit!.
Professioneel Kritische Instelling
Dia 1 Productencatalogus: technische sessie Samen beter informeren.
Het Aralmeer Telkens op de linkermuis klikken voor vooruit.
A H M F K EB C x 85 Korte zijde bij C 2 e secties volte 14 m en op afstand komen ( 0,5 rijbaan)
ZijActief Koningslust 10 jaar Truusje Trap
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Ontwikkeld door CWB3. Opbouw Presentatie 1.Wat is GeoSport? 2.Ontwerp 1.Gebruikte ontwerpmethodieken 2.Ervaring 3.Implementatie 1.Gebruikte technologieën.
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
1 Duurzaam ondernemen werkt ! Milieu en werkgelegenheid Peter Van Humbeeck SERV.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 3.
S.V.T.B. Curius 2 3 Vorige bijeenkomst S.V.T.B. Curius 4 Vorige bijeenkomst Voorstelrondje Wie ben je, wat doe je en wat ga je doen?
Leren lezen op de Wijngaard : kern 2 door juf Martine
De financiële functie: Integrale bedrijfsanalyse©
Oefeningen Workshop RIE Gemeenten
Logistics: a driver for innovation Low costs High value Flexibility now and later Superior technology Timwood - T > No transport - I > No Inventory - M.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
Strijd tegen de zonde?.
ZijActief Koningslust
1 Jeroen de Vries Topologie. 2  Historische basis  Belangrijkste concepten  Topologie in de praktijk Inhoud:
Introductie tot GoF patterns in Java
Cegeka & TenForce Ronde tafel 17/06/2014 Doelstellingenmanagement VO.
Java & het Web Programma: Databases (jdbc, JNDI, ORM, JPA)
Java & het Web Programma: Contexts Listeners Scope/Attributes Thread safety.
OOS Object geOrienteerd Software-ontwerp - 5
Unified Modeling Language
Transcript van de presentatie:

1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion

2 Modularity Modularity is the property of a system that has been decomposed into a set of cohesive and loosely coupled modules [Booch] (blz. 235)

3 Low coupling Koppeling is een maat voor de mate waarin een element verbonden is met kennis heeft van vertrouwd op andere elementen. (blz. 229)

4 High/strong coupling verandering in de interface heeft gevolgen voor vele classes moeilijk te begrijpen slecht herbruikbaar

5 High cohesion Cohesion is een maat voor de mate waarin de verantwoordelijkheden van een element gerelateerd zijn. (blz. 233)

6 Low cohesion moeilijk te begrijpen moeilijk herbruikbaar moeilijk onderhoudbaar wordt vaak gewijzigd

7 Voorbeeld cohesion/coupling Onderscheid functionele en relationele cohesion

8 Relationele cohesion Maatstaf voor een package: aantal interne relaties / aantal types(classes) (blz. 477) Interne relatie omvat attribuut en parameter relaties overerving interface implemenaties

9 Practicum: Cohesion/Coupling

10 Categorieën patterns Structural Behavioural Creational Architectuur Client/Server Design Adapter Indirection/Mediator Factory Composite Iterator Singleton Controller Observer Decorator Polymorfisme Facade Strategy MVC Proxy Idioms Singleton

11 Client - Server

12 Client - Server

13 Model View Control

14 Controller Probleem: Welke class is verantwoordelijk voor de verwerking van een system event. Oplossing:Een controller class die hoofdzakelijk delegeert. Vaak kent een systeem diverse controllers Anders is er wellicht sprake van een bloated controller.

15 Adapter Probleem: De classes A, B, … die onderling verschillende interfaces hebben, maar met één interface moeten communiceren met class Z. Oplossing: Gebruik een Adapter class die de interface converteert.

16 Decorator Probleem: Soms moet een object van extra functionaliteit kunnen worden voorzien. Oplossing: Voeg het runtime object toe aan een ander object dat deze functionaliteit bezit.

17 Facade: probleem

18 Facade: oplossing

19 Proxy Proxy is een plaatsvervanger gevolgmachtigde Probleem: Het creëren van een object is “duur” en wellicht overbodig. Oplossing: Gebruik een proxy die indien nodig het benodigde object creëert.

20 Proxy voorbeeld

21 Indirection/Mediator Probleem: Een groep objecten communiceert onderling veel. De classes zijn door sterke coupling moeilijk herbruikbaar. Oplossing: Gebruik een Indirection class die de onderlinge communicatie verzorgt.

22 Indirection nodig

23 Indirection toegepast

24 Iterator / cursor Probleem: Hoe verkrijgt men van een aggregaat de individuele objecten zonder de interne structuur te tonen. Oplossing: Gebruik een Iterator object. Java: Enumeration, Iterator, List interface; LinkList class

25 Observer Probleem: Verschillende objecten zijn geïnteresseerd in specifieke veranderingen van object X. Oplossing: Definieer een subscriber of listener interface. Java: implements ActionListener; Observer interface en class Observable.

26 Polymorfisme Probleem: Hoe om te gaan met verschillende classes met gedeeltelijke overeen- komstige functionaliteit. Oplossing: Definieer een interface met de overeenkomstige functionaliteit.

27 Polymorfisme voorbeeld class Hoofd { A a; // heeft interface Algemeen B b; // heeft interface Algemeen public Hoofd() { a = new A("test"); b = new B(23); }

28 Polymorfisme voorbeeld public static void main(String[] args) { Hoofd hoofd1 = new Hoofd(); hoofd1.demo(); } void demo() { doeIets(a); doeIets(b); } void doeIets(Algemeen x) { x.drukaf(); }