Design patterns Startbijeenkomst



Vergelijkbare documenten
Abstracte klassen & Interfaces

IMP Uitwerking week 13

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Tentamen Imperatief Programmeren

Overerving & Polymorfisme

Zelftest Programmeren in Java

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Kleine cursus PHP5. Auteur: Raymond Moesker

Tentamen in2705 Software Engineering

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Wat is het probleem nou eigenlijk? public class CoffeeDrinker { private CoffeeProducer mycoffeeproducer;

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Scala. Korte introductie. Sylvia Stuurman

Ingebouwde klassen & methodes

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

Programmeren in Java 3

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Modelleren en Programmeren

NAAM: Programmeren 1 Examen 21/01/2011

Design patterns.

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Unit testen van EJB's. Koert Zeilstra - iprofs

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Modelleren en Programmeren

Stacks and queues. Hoofdstuk 6

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen.

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Programmeren (1) Examen NAAM:

Noties Informatica. In java fungeren objecten als een model voor de elementen waarin een probleem kan worden opgesplitst

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

Introductie en even voorstellen

Programmeren in C# Interfaces. Hoofdstuk 23

Inleiding C++ Coding Conventions

Een fragment wordt afgeleid van de basis klasse "Fragment".

Turn legacy code into clean code! Jeroen Mengerink David Baak

Modelleren en Programmeren

Javascript oefenblad 1

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Master Software Engineering. Inhoud, begeleiding, tentamen dr. Anda Counotte Docent en mentor

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

Objectgericht programmeren 1.

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN

Deel II: Modelleren en software ontwikkeling. Hoofdstuk 7 Software ontwikkeling - Overzicht. Naïeve benadering

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

TENTAMEN Programmeren 1

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

Modelleren en Programmeren

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Object Oriented Programming

INFITT01 - Internettechnologie WEEK 8

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

VI. Klassen en objecten

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Objectgeoriënteerd programmeren in Java 1

NAAM: Programmeren 1 Examen 29/08/2012

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Programmeren in Java 3

1 Ontwerppatronen. 1.1 Het Command patroon

Veel succes! 1. Gegeven is de volgende klasse:

Derde deeltentamen Gameprogrammeren Vrijdag 8 november 2013, uur

eerste voorbeelden in Java

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur

Java Programma structuur

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

In BlueJ. Doe onderstaande met muis/menu s:

NAAM: Programmeren 1 Examen 31/08/2011

Programmeren in Java 3

Inhoud leereenheid 5. Strategy en Bridge. Introductie 73. Leerkern 73. Terugkoppeling 83. Uitwerking van de opgaven 83

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Academie voor ICT en Media 2013/2014

et Zend Framework bestaat volledig uit objectgeoriënteerde

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Ontwerp van Informatiesystemen

Een gelinkte lijst in C#

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Design principes.

return an ; } private I L i s t l i j s t ;

Modelleren en Programmeren

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Terugkoppeling 12

Stap 1 Eenvoudig tekenprogramma maken In eerste instantie alleen 'freehand' curves Demo in de les

Derde deeltentamen Gameprogrammeren Vrijdag 9 november 2012, uur

Project 2: LOTTO simulatie Programmeren I

Eindtoets XML: Theorie en toepassingen

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Uitwerkingen aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 4 januari 2013, uur

Transcriptie:

Design patterns Startbijeenkomst Harrie Passier

Docenten Sylvia Stuurman (1 e examinator) Sylvia.Stuurman@ou.nl Harrie Passier (2 e examinator) Harrie.Passier@ou.nl Aarzel niet vragen te stellen!

Rooster Activiteiten per week

Heel kort. Twee van de essenties van de cursus Design to an interface (or abstract class) Scheid creatie van een object van het gebruik Pagina 4

Design to an interface (or abstract class) 0..* 1 1 0..* Waarom niet zo? Een object Drawing moet nu precies weten van welke klasse de vorm is die getekend moet worden. Een object Drawing kan nu niet een lijst van figuren bijhouden, maar moet verschillende lijsten bijhouden.

Design to an interface (or abstract class) Drawing weet alleen dat het om een Figure gaat. Drawing heeft één lijst met figuren. Voordeel: gemakkelijk uitbreidbaar zonder Drawing aan te passen

Wat als Drawing moet nu weer weten of iets een Ellips is Mogelijk met een Cast, maar vermijden!!! Is lastig met uitbreiden als er meerdere subklassen komen met eigen methoden

Oplossing: ontwerp naar interfaces Polygon kan eventueel null of negatief getal teruggeven wanneer methode zinloos is Voordeel: Drawing hoeft niets te weten over de exacte klasse

Of ontwerp naar abstracte klasse Drawing (ook in de vorige oplossing): Open voor veranderingen bij Figure Gesloten voor veranderingen van Drawing Het open-closed principe

Open - closed Aan Drawing hoeft niets te veranderen tenzij Drawing de Figure objecten moet creëren! Daarom: Scheid creatie van objecten van gebruik Drawing gebruikt Figures Een FigureFactory creëert Figures

Factory methods public interface Trace { // Zet aan/uit public void setdebug( boolean debug ); // Schrijf debug message public void debug( String message ); // schrijf error message public void error( String message ); Pagina 11

Twee implementaties public class FileTrace implements Trace { public class SystemTrace implements Trace { private java.io.printwriter pw; private boolean debug; public FileTrace() throws { // Implementatie public void setdebug(boolean debug) { // Implementatie public void debug(string message) { // Implementatie public void error(string message) { // Implementatie private boolean debug; public void setdebug(boolean debug) { // Implementatie public void debug(string message) { // Implementatie public void error( String message ) { // Implementatie Pagina 12

Gebruik in code //... SystemTrace log = new SystemTrace(); //... log.debug( Start debugging"); //... Wat als we willen switchen van SystemTrace naar FileTrace? Wat als een nieuwe Trace wordt toegevoegd? Wat als deze code in tientallen/honderden klassen staat? Gaat in tegen het Open-Closed principe Pagina 13

Factory methods public class TraceFactory { public static Trace gettrace() { return new SystemTrace(); //... Trace log = new TraceFactory.getTrace(); //... log.debug("start debugging"); //... Pagina 14

Hoe doe je dit? Design patterns helpen met het bereiken van dit soort oplossingen in allerlei situaties Design patterns helpen om belangrijk principes in de gaten te houden Hoge cohesie, lage koppeling Open closed principe Ontwerp naar interfaces of abstracte klassen Scheid gebruik van objecten van creatie Flexibiliteit met het oog op toekomstige veranderingen hoofddoel van design patterns

Drie opdrachten Opdracht 1 (Individueel) Ontwerpen systeem voor referenties Opdracht 2 (In team van twee) Na inleveren van eerste opdracht teamgenoot zoeken (zie kalender) Team aanmelden, krijgt dan 2e opdracht Refactoring van JabberPoint Opdracht 3 (In zelfde team van twee) Toevoegen functionaliteit aan Jabberpoint Zal door refactoring gemakkelijker gaan dan zonder refactoring!

Academic writing Onderwerp: Schrijven van een wetenschappelijk artikel (plannen, literatuur bestuderen, schrijven, ) Of vervlochten met DP (zie rooster) Of apart na DP Hangt af van studietempo Pagina 17

Veel succes en plezier gewenst!!! Vragen?