OOS Object geOrienteerd Software-ontwerp - 5

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

OOS Object geOrienteerd Software-ontwerp
OOS Object geOrienteerd Software-ontwerp - 3
Van domeinklasse tot implementatie
Het ontwerpen van een klasse
Het type int Tekenen met Java operatoren
OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
Klassen en objecten.
Greenfoot Workshop Bobby - Snake.
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.
Hoofdstuk 6: Controle structuren
Hoofdstuk 4: Klassen definiëren
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
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
Algoritmiek Object-georiënteerd Programmeren
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Arrays.
OOS Object geOrienteerd Software-ontwerp - 2
Deel XIII Eerste echte e-commerce applicatie (iteraties + impl ) 1 Internetapplicaties Deel 13: Eerste echte e-commerce applicatie: Enkele iteraties met.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 15: Herhaling Java-programmatie en geautomatiseerd testen.
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Datacommunicatie en netwerken
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
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,
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Scope. Scope van variaben/methoden Een variabele is te gebruiken binnen de { en } waarbinnen hij is aangemaakt. Hetzelfde geld voor een methode { int.
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Java C++ nVeilig nMachine- onafhankelijk nVeel libraries, ook voor Internet-I/O Snel Native executables Libraries optimaal voor specifiek OS.
Programma zonder window commandline interface. Commandline programma public static void main (String [ ] params) { System. out. println (“Hoi allemaal!”);
Hoofdstuk 12 Ontwerp van programma’s. Ontwerp van de GUI nStandaard in Applets: alle met add toegevoegde componenten komen naast elkaar (totdat de regel.
OOS Object geOrienteerd Software-ontwerp
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.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
INFITT01 - Internettechnologie WEEK 3. Programma Sessies JSP.
Java & het Web Programma: Databases (jdbc, JNDI, ORM, JPA)
Eerste deeltentamen nNagekeken werk ligt voor in de zaal nNeem je eigen werk mee: in het college wordt het besproken nVragen over de beoordeling: in de.
Herhaling: He who does not learn from history, is doomed to repeat it.
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)
Game Object Structuren
Objectgeoriënteerd Programmeren (2)
…is eigenlijk overbodig!
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Lists en interfaces
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Tinpro015b-les4 Klassen.
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Gameprogrammeren: Tiles en File I/O in Tick Tick
Unified Modeling Language
Gameprogrammeren: Klassen en objecten
‘Inleiding objectgeoriënteerd programmeren met PHP’ ‘Inleiding’
Digitale beeldverwerking
Implementatie Zoekboom
Object Communication (Jewel Jam)
Software Development fundamentals
Transcript van de presentatie:

OOS Object geOrienteerd Software-ontwerp - 5 PackageDiagram Scheiding GUI en Domein

Package diagram UI Framework gui domein + facade test legacy netwerk persistentie

Een model in lagen Application Facade PanelUseCase ViewDomainObject case::gui case::domain Application Facade 1 * PanelUseCase ViewDomainObject DomainObject * * * 1

Application package casus.gui; public class Application extends JFrame { private PanelUseCase1 panel1; private PanelUseCase2 panel2; … public Application() { ..jbInit().. initialisatie en toevoeging van de panels } public static void main(String[] arg) { (new Application()).setVisible(true);

Panel met views package casus.gui; class PanelUseCase1 extends JPanel { private ViewDomainObject view; public PanelUseCase1() { initialisatie en toevoeging view(s); registratie eventlisteners; }

View package casus.gui; import casus.domein.DomainObject; class ViewDomainObject extends JPanel { … public ViewDomainObject() { creatie en toevoeging visuele componenten; evt registratie eventlisteners; } public ViewDomainObject(DomainObject obj) { this(); invulling gegevens a.h.v. obj; // voor sommige extern te wijzigen eigenschappen public String getProperty() {

<<singleton>> Mediatheek voorbeeld <<singleton>> Mediatheek -Mediatheek( ) +Mediatheek getSingleton( ) +Collection getKlant(String) +Klant getKlant(int) +Item getItem(String) +boolean leenUit(Item, Klant) … Klanten Collection getKlant(String) void addKlant(KlantInfo) … Klant 1 * id : int naw : String … 1 1 * Materiaal Item getItem(String) void addItem(ItemInfo) … Item Uitlening id : String vanaf, tot : Datum * 0,1 void leenUit(Klant) … …

Package diagram test gui domein +Applicatie PanelUitlenen PanelRegKlant ViewKlant … +Mediatheek +Klant Klanten +Item +Uitlening …

Nogmaals Observerpatroon

Observer + Facade DomainObject Observer ViewDomainObject Facade <<interface>> Observer void update(Object) state : Type DomainObject( ) Type getState( ) void setState(Type) void attach(Observer) void detach(Observer) void inform( ) observers * ViewDomainObject <<singleton>> Facade addDomainObject( … ) change(DomainObject, …) remove(DomainObject) … searchForDomainObject( … ) attach(Observer,DomainObject) detach(Observer,DomainObject) PanelUseCase

Observer-interface package casus.util; public interface Observer { void update(Object obj); }

Observer-implementatie class ViewDomainObject extends JPanel implements casus.util.Observer { … public void update(Object obj) { DomainObject domainObj = (DomainObject) obj; ophalen en tonen relevante eigenschappen; }

Domeinklasse geschikt maken voor observers package mediatheek.domein; import casus.util.*; import java.util.*; public abstract class Item { private Uitlening uitlening; private ArrayList observers; … public void leenUitAan(Klant k) { if (uitlening != null) return; uitlening = new Uitlening(this, k); inform(); } public void attach(Observer obs){ observers.add(obs); public void inform() { Iterator it = observers.iterator(); while (it.hasNext()) { ((Observer)it.next()).update(this);

Uitlening package mediatheek.domein; public class Uitlening { private Item item; private Klant klant; … //constructor is niet-publiek: Uitlening(Item i, Klant k) { item = i; klant = k; klant.leent(i); }

Klant package mediatheek.domein; import java.util.*; public class Klant { private ArrayList uitleningen; private ArrayList observers; … // niet-publieke methode: void leent(Item item) { if (uitleningen.size()==MAX_TE_LEEN) uitleningen.add(item); inform(); }

To do domeinklassen aanpassen i.v.m. Observer-patroon werken met packages 1 groepslid is verantwoordelijk voor facade elk groepslid kiest in overleg use case uit opsomming benodigde viewklassen taakverdeling viewklassen elk groepslid ontwerpt, codeert en test panelklasse