De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

OOS Object geOrienteerd Software-ontwerp - 5

Verwante presentaties


Presentatie over: "OOS Object geOrienteerd Software-ontwerp - 5"— Transcript van de presentatie:

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

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

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

4 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);

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

6 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() {

7 <<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)

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

9 Nogmaals Observerpatroon

10 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

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

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

13 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);

14 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); }

15 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(); }

16 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


Download ppt "OOS Object geOrienteerd Software-ontwerp - 5"

Verwante presentaties


Ads door Google