Introductie tot GoF patterns in Java

Slides:



Advertisements
Verwante presentaties

Advertisements

Inleiding in de statistiek voor de gedragswetenschappen Met ondersteuning van SPSS Guido Valkeneers.
Ingave via het scherm Algemene beschrijving van de toepassing De toepassing is opgebouwd uit drie niveaus : Niveau 1 : verzending en afzender Niveau 2.
Door: Marvin Peters & Frank van Esch
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
Instructie Programmeren Task 8 5JJ70. PAGE 2 Task 8: Double Linked List Het doel van deze opdracht is: Het opbouwen van een tweetal klassen, die samen.
Van domeinklasse tot implementatie
Klassen en objecten.
Hoofdstuk 5: Bestanden.
Hoofdstuk 6: Controle structuren
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
De koektrommel of de grabbelton
Assenstelsels en het plotten van Functies in LOGO
Tegengestelden / Synoniemen
Normalisatie Relationeel databaseontwerp:
Java patterns Introductie tot GoF patterns in Java.
Het verbeteren van een modulaire verificatie techniek voor aspect georiënteerd programmeren Alfons Laarman.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Inleidend probleem Data structuur (hiërarchie van classes)
Designing Knowledge Systems b Hoofdstuk 11 van Knowledge Engineering and Management. The CommonKADS Methodology. b A.Th. Schreiber, J.M. Akkermans, A.A.Anjewierder,
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Oefeningen Hoofdstuk 3.
Consoletoepassing Variabelen Klassen
Sprint 3 SuperPC JEF 02 Corbin van Amelsfoort Geoffrey Hofstede
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Overerving Toepassingen. Overerving: toepassingen zoefening 1 : eenvoudige overerving.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Eenvoudig voorbeeld: Steden in Belgie
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Visual Basic 2005/2008 OOP in praktijk André Obelink - MCSD, MVP Web: Web: -
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.
Overloading My name is overloading, cause we are many.
Inleiding in de statistiek voor de gedragswetenschappen
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Functioneel programmeren Een snelle herhaling…. Functie-definitie static int kwad (int x) { return x*x ; } kwad x = x * x Haskell kwad :: Int  Int.
Encapsulatie: Every man is an island upon himself.
Polymorphisme en Interfaces: inleiding
Programma zonder window commandline interface. Commandline programma public static void main (String [ ] params) { System. out. println (“Hoi allemaal!”);
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Prototyping Humane en Sociale Aspecten van de Informatica
Java & het Web Programma: 3rd party libraries Standard actions (E)xpression (L)anguage.
Eigen klassen maken A new way of thinking.. Wat? Zie voorbeeld. Zie voorbeeld.
Na de praktijk, de theorie.. Zoals een gehaktmolen 1.Je stopt er iets in. 2.Je hoeft niet te weten wat er binnenin gebeurt. 3.Het resultaat verschijnt.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
GUI & classes Een Gui in een class steken en het object gebruiken.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Bespreking testpracticum.  Javaconventies! ◦ KlasseNamen beginnen met Hoofdletter ◦ objectNamen/methodeNamen met kleine letter  Aanspreken GUI ◦ Zie.
Gameprogrammeren: Objecten en geheugen
Algemene beschrijving van de toepassing
Gameprogrammeren: Lists en interfaces
OOS Object geOrienteerd Software-ontwerp - 5
Tinpro015b-les4 Klassen.
Het postkantoor van windows
Het virtuele punt Stel je voor, je bent een hele grote kaart;
Unified Modeling Language
‘Inleiding objectgeoriënteerd programmeren met PHP’ ‘Inleiding’
COINS Navigator 2.
COINS Navigator 2.
SQL Les February 2019.
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Python – For loop + strings
Transcript van de presentatie:

Introductie tot GoF patterns in Java Java patterns Introductie tot GoF patterns in Java

Lectuur GoF boek James Cooper Bruce Eckel

Wat ? Een design pattern is een standaard oplossing voor een veel voorkomend design probleem Drie types (GoF) Creational : patterns om objecten te creeren Structural : patterns om objecten samen te stellen Behavioral : patterns om onderling gedrag van objecten te regelen, alle andere dus…

Creational Factory Abstract Factory Singleton Builder Prototype objecten creeren via factory interface Abstract Factory factory creeren via factory-factory interface Singleton klasse waarvan slechts 1 object bestaat Builder scheiding van object constructie en voorstelling Prototype objecten creeren door basisobject te klonen

Factory pattern Wat ? Wanneer ? Objecten creeren via ander object (factory) i.p.v. rechtstreeks via constructor Wanneer ? Klasse van object nog niet gekend at compile-time Creatie van object overlaten aan subklasse Creatie = complex proces (bv. pool)

Factory pattern Opgave (Cooper) Eenvoudige Namer klasse : splitst volledige naam op in voornaam en achternaam Twee mogelijke inputs : Piet Hein Hein,Piet Factory selecteert een correcte Namer klasse afhankelijk van input (FirstFirst of LastFirst)

Abstract Factory Pattern Wat ? Niveau van indirectie bovenop Factory, d.w.z de factory zelf is abstract en wordt pas concreet na aanroepen van een creatiemethode Wanneer ? Meerdere families van objecten GUI widgets voor meerdere look-and-feels data access voor meerdere database types

Abstract Factory pattern Oefening: Creeer abstracte factory om een String en een int-waarde op te halen Maak concrete factories die respectievelijk via de console en via een properties file werken

Singleton pattern Wat ? Wanneer ? Aantal instantiaties van een klasse beperken tot 1 (of enkele) Wanneer ? Meestal opgelegd door het model zelf Dure objecten

Singleton pattern Opgave( Eckel ) Creeer singleton klasse Singleton Methoden : getInstance() geeft singleton object terug int getValue() geeft waarde void setValue( int value ) zet waarde Schrijf test waarin je singleton opvraagt, waarde checkt, verandert, opnieuw singleton opvraagt,…

Singleton pattern Opgave( Eckel ) Creer pool van connecties Connection interface ConnectionPool : singleton, gebruikt PoolManager PoolManager : managet pool van objecten ConnectionImplementation

Builder pattern Wat ? Wanneer ? Scheiding van object creatie (gelijk) en representatie (verschillend) Wanneer ? Creatie van meerdere objecten Creatieproces bestaat uit meerdere stappen die echter gelijk zijn voor elk object

Opgave Creeer twee builder klassen die een string opsplitsen in woorden en in resp. een Map en een SortedSet opslaan Klasse : BaseBuilder : basisklasse die build proces definieert SetBuilder MapBuilder

Prototype pattern Wat ? Creatie van object door klonen Wanneer ? Object moet gecopieerd worden zonder dat men het type kent Java : Speciale interface hiervoor : Cloneable Opgelet : default implementatie (Object) maakt geen diepe kopie !

Prototype pattern Oefening : Implementeer een clone() methode die een diepe kopie maakt door het object te serializeren/deserializeren

Structural Adapter Bridge Composite Decorator Interface aanpassen aan andere interface Bridge Interface en implementatie kunnen onafhankelijk evolueren Composite Boomstructuur van objecten, zelfde interface voor tak/blad Decorator Functionaliteit toevoegen door te wrappen

Adapter Wat ? Klasse die een bestaande interface converteert naar een andere (door delegatie) Wanneer ? Bestaande klasse moet aangepast worden aan een nieuwe interface

Adapter Oefening : Adaptee klasse stelt lijst van autos voor met naam + prijs Adapter moet Adaptee aanpassen aan Swing table model

Bridge Wat ? Abstracte klasse met meerdere concrete implementaties via delegatie Wanneer ? Als men interfaces en concrete implementaties apart wil laten evolueren

Bridge Voorbeeld : Abstraction Implementor RefinedAbstraction ConcreteImplementorA ConcreteImplementorB

Composite Wat ? gemeenschappelijke abstracte klasse voor geheel/deel Wanneer ? boomstructuren

Composite Oefening : Stel klassen om een logische expressie te evalueren en uit te printen Evaluatie en uitprinten gebeurt door de boomstructuur te doorwandelen via recursie

Decorator Wat ? Dynamisch toevoegen van functionaliteit door te wrappen Wanneer ? Alternatief voor subklassen indien meerdere orthogonale toevoegingen mogelijk

Decorator java.io.BufferedReader is een voorbeeld van een decorator van de java.io.Reader klasse Maak een decorator van java.io.Reader die lijn per lijn leest en waarbij men eerst kan vragen of er nog lijnen zijn