OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.

Slides:



Advertisements
Verwante presentaties
The stock market will go up De beurswaarden zullen stijgen YESNO JA NEEN Is Jefken a good person ? Is Jefken een goed mens ? YES NO JA NEEN Is Lonny a.
Advertisements

Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
Requirements -People are able to make their own memorial page, called a memori -The website will be build first in Dutch for extension.nl, then copied.
Een alternatief voorstel Naar aanleiding van bestudering van de IAASB voorstellen denkt de NBA na over een alternatief. Dit alternatief zal 26 september.
JQuery en ASP.NET Bart De Meyer.
OOS Object geOrienteerd Software-ontwerp - 3
Programmeren in Java met BlueJ
Lucene/SOLR 1: inleiding + indexering
Van domeinklasse tot implementatie
OOP met Java Sessie 1.
© 2004 IBM Corporation Guts Wissema, OpenSource & Linux Sales, IBM Open Document Format.
Klassen en objecten.
Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.
SQL injections en meer... PERU. web application vulnerabilities Cross Site Scripting (21.5%) SQL Injection (14%) PHP includes (9.5%) Buffer overflows.
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Programming for Linguists An Introduction to Python 29/11/2012.
Hoofdstuk 2 Hallo, C# !.
Server side scripting 1 Webtechnologie Lennart Herlaar.
Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet.
ERIC Combine search terms with Boolean operators Next = click.
Opgave 1a: afronden int n=5; double a, b, c, d; a = n * 1.5; b = n * 3 / 2; c = n / 2 * 3; d = 3 / 2 * n; a b c d
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Hoorcollege 8 Game object structuren. Arrays in games Grid-gebaseerd speelveld (zoals Tetris) Lijst van spelers Lijst van inventory items Lijst van alle.
Hoorcollege 14 Vijanden, excepties. Wat zit allemaal in een level? Startpositie van de speler Waterdruppels Tiles Vijanden Einde van het level Achtergronden.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
CONTROLESTRUCTUREN (DEEL 2)
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Methods of Development #3: Objecten. * Staat op USAT weblog.
#3Objecten. Schrijf in LOGO de pseudocode voor een figuur naar keuze (met iig een lus of conditie). Maak tevens een screenshot van het resultaat.
Hibernate Object relational mapping
zondag 3 augustus 2014 Click Klik Sunday, 03 August 2014.
Algoritmiek Strings & Stringmanipulaties; Controle Structuren; Floating-point notation. Hoorcollege 4 - Ma. 25 sept L.M. Bosveld-de Smet.
Algoritmiek Java GUIs, AWT en Swing API Overzicht te bestuderen stof, voorbeeldtentamen Hoorcollege 15 - Ma. 11 dec L.M. Bosveld-de Smet.
Tussentoets Digitale Techniek. 1 november 2001, 11:00 tot 13:00 uur. Opmerkingen: 1. Als u een gemiddeld huiswerkcijfer hebt gehaald van zes (6) of hoger,
H21. en H22. COLLECTIONS FRAMEWORK. 1. INLEIDING.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
1 Hoofdstuk 11: Strings en karakters Inleiding In dit hoofdstuk bespreken we de mogelijkheden van de klassen : String StringBuffer Character StringTokenizer.
1 HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1. INTRODUCTIE  Vervolg discussie omtrent gestructureerd programmeren  Introductie van de overblijvende controlestructuren.
Visual Basic.Net - Overzicht
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
In Cyberspace VR meer performance minder theater (representatie, acteren) Hoe VR benaderen? Hoe werkt het? –VR draait om modulatie van modulatie (ook.
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
Hoofdstuk 9 Objecten en klassen.
Hoorcollege 9 Jewel Jam The revenge. Hierarchie van game objecten Game object (lijst) Game object (grid) Game object (lijst) Game object.
Internetapplicaties - IV Collecties 1 Internetapplicaties Deel 4: Java hulpklassen: Collecties.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Deltion College Engels C1 Spreken/Presentaties [Edu/006] thema ‘I hope to convince you of… ‘ can-do : kan een standpunt uiteenzetten voor een publiek van.
Deltion College Engels B1 Schrijven [Edu/004]/ subvaardigheid lezen thema: reporting a theft can-do : kan formulieren waarin meer informatie gevraagd wordt,
Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline.
Ted Nelson (1937- ) A file structure for the Complex, the changing, and the Interdeterminate.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Hoorcollege 5 Herhaling, game object interactie. Ball class class Ball { Texture2D colorRed, colorGreen, colorBlue; Texture2D currentColor; Vector2 position,
In samenwerking met HowITsDone Spring as legacy Hoe innovatie legacy kan worden.
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
The beast has been released! 4 arcade-style games Interviews with famous people in the game industry Develop browsers games for any device (phone, tablet,
Het geheim van Linked Data Marcel ReuversGeonovum CB-NL 20 november 2014.
1 OMI Modelleren van content. 2 Vocabulary Content “gevangen” in begrippenapparaat: Vocabulary: lijst met termen nauwelijks semantiek Ontology:
Inleiding tot programmeren
1 Introductie next MCT - Programmeren 2 © S. Walcarius Waarom java? programma machinetaal (.exe) compilen platformspecifiek Een exe programma.
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Herhaling: He who does not learn from history, is doomed to repeat it.
Objectgeoriënteerd Programmeren (2)
OOS Object geOrienteerd Software-ontwerp - 5
Gameprogrammeren: Klassen en objecten
Implementatie Zoekboom
Member functions.
Transcript van de presentatie:

OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade

Codeerperikelen

KlasB KlasA 1 0,1 class KlasA { private KlasB b; public KlasA() {} public void setB(KlasC c) { this.b = new KlasB(this,c); } class KlasB { private KlasA a; private KlasC c; KlasB(KlasA a, KlasC c) { this.a = a; this.c = c; } 2-richtingsnavigatie KlasC 1

KlasB KlasA 1 1 class KlasA { private KlasB b; public KlasA(KlasC c) { b = new KlasB(this, c); } } class KlasB { private KlasA a; private KlasC c; KlasB(KlasA a, KlasC c) { this.a = a; this.c = c; } } 2-richtingsnavigatie KlasC 1

Onderdeel Container  class Container { private Collection onderdelen; public Container() { onderdelen = new ArrayList(); } public void addOnderdeel(Object o) { onderdelen.add( new Onderdeel(o) ); } class Onderdeel { private Object o; Onderdeel(Object o) { this.o = o; } mogelijke implementatie Object 1

class Verzameling { private Collection elementen; public Verzameling() { elementen = new ArrayList(); } public void addElement(int i) { elementen.add(new Element(i)); } class Element { private int _x; Element(int x) { _x = x; } int getInt() { return _x; } } } Element Verzameling  x : int

Singleton Patroon

Singleton-patroon een klasse waarvan we maar 1 enkel object kunnen maken/krijgen. verschillende gebruikers willen met hetzelfde object communiceren. bijvoorbeeld: registratieklasse klasse voor database-toegang

Voorbeeld van Singleton let op onderstreping public class RegistratieVanX { private Collection xjes; private static RegistratieVanX singleton = new RegistratieVanX(); private RegistratieVanX() { xjes = new ArrayList(); } public static RegistratieVanX getSingleton() { return singleton; }... }

Specificeren

Specificatie van methoden Tussen header en body /* pre: dat wat geldt voor aanroep post: dat wat geldt na aanroep */ Contract: gebruiker van methode: let op pre-conditie implementator: houdt zich strikt aan pre- en post condities.

Voorbeeld van contract class Klantenregistratie { private Collection klanten; /* pre: naam is niet de lege string post: terugkeerwaarde is de collectie klanten waarvan de klantnaam begint met naam ongeacht hoofd/kleine letters; elke klant die voldoet komt hierin eenmaal voor. */ public Collection zoekKlant(String naam){ String nm = naam.toLowerCase(); ArrayList lijst = new ArrayList(); Iterator it = klanten.iterator(); while (it.hasNext()) { Klant klant = (Klant)it.next(); if ( klant.getNaam().toLowerCase().startsWith(nm)) lijst.add(klant); } return lijst; } }

javadoc /** pre: wanneer is aanroep toegestaan post: wat is er gewijzigd uitzonderingen: wanneer ontstaan welke excepties */ voorafgaand aan declaratie methode Zie:

Example (Sun) /** * Returns an Image object that can then be painted on the screen. * The url argument must specify an absolute URL}. The URL} * argument is a specifier that is relative to the url argument. * * This method always returns immediately, whether or not the * image exists. When this applet attempts to draw the image on * the screen, the data will be loaded. The graphics primitives * that draw the image will incrementally paint on the screen. url an absolute URL giving the base location of the * name the location of the image, relative to the url argument the image at the specified */ public Image getImage(URL url, String name) { try { return getImage(new URL(url, name)); } catch (MalformedURLException e) { return null;} }

getImage public Image getImage(URL url,ImageURL String name)String Returns an Image object that can then be painted on the screen. The url argument must specify an absolute URL.URL The name argument is a specifier that is relative to the url argument. This method always returns immediately, whether or not the image exists. When this applet attempts to draw the image on the screen, the data will be loaded. The graphics primitives that draw the image will incrementally paint on the screen. Parameters: url - an absolute URL giving the base location of the image name - the location of the image, relative to the url argument Returns: the image at the specified URL See Also: Image

Scheiding GUI en Model

klasse  object  view Dobbelsteen int ogen Dobbelsteen( ) int getOgen( ) void gooi( ) : Dobbelsteen ogen = 5 ogen 5 Microsoft Windows XP [versie ] (c) copyright Microsoft Corp. c:\>aantal ogen is 5 user interface 1 modelobject 4 UI-objecten

scheiding model en view Dobbelsteen int ogen Dobbelsteen( ) int getOgen( ) void gooi( ) ViewOpDobb 1 * *

Observerpatroon Dobbelsteen int ogen Dobbelsteen( ) int getOgen( ) void gooi( ) void attach(ViewOpDobb) void detach(ViewOpDobb) void inform( ) ViewOpDobb void update( ) 1 * *

Facadepatroon

Facade ontwerppatroon

To do ontwerp facade pas het singleton-patroon toe voor de facade voor de meer ingewikkelde methoden: pre/post condities schrijven; conform javadoc in de code aanbrengen. codeer alle domeinklassen incl facade