De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram.

Verwante presentaties


Presentatie over: "OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram."— Transcript van de presentatie:

1 OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram

2 Data van een object

3 Enkelvoudige data Datum dag: int maand: int jaar: int Datum(int, int, int) getDag() : int getMaand() : int getJaar() : int isEerderDan(Datum): boolean public class Datum { private int dag, maand, jaar; public Datum(int d, int m, int j) { dag=d; maand=m; jaar=j; } public int getDag() { return dag; } … public boolean isEerderDan(Datum d) { if (jaar != d.jaar) return jaar

4 Keuzevrijheid in objectdata Datum dag: int Datum(int, int, int) getDag() : int getMaand() : int getJaar() : int isEerderDan(Datum): boolean public class Datum { private int dag;// dag=0 is public Datum(int d, int m, int j) { dag=d+30*m+365*(j-1900); } public int getDag() { return dag-30*m-365*(j-1900); } … public boolean isEerderDan(Datum d) { return dag

5 meervoudige multipliciteit Lokatie {abstract} Lokatie(String) String getLand() landsnaam: String Wegdeel wegcode: String lengte: double Wegdeel(Lokatie, Lokatie, String, double) Lokatie getBeginpunt() Lokatie getEindpunt() double getLengte() String getWegcode() 1 beginpunt naam: String Plaats(String,String) String getNaam() wegcode: String int: nr Afslag(String, String, int) String getWeg() int getNrAfslag() wegcode1: String wegcode2: String Kruispunt(String, String, String) String getWeg1() String getWeg2() Route / lengte: double 1 eindpunt 1..* Route(Wegdeel) double getLengte() Lokatie getBeginpunt() Lokatie getEindpunt() Iterator getWegdelen() Wegdeel getWegdeel(int) voegAchteraanToe(Wegdeel) boolean rijdtVia(Lokatie) PlaatsAfslagKruispunt doorloopt

6 meervoudig type public class Route {private ArrayList wegdelen; public Route(Wegdeel beginweg) { wegdelen = new ArrayList(); wegdelen.add(beginweg); } … }

7 API –java.util.ArrayList int size() Object get(int) boolean add(Object) // returnwaarde is nu onbelangrijk Object remove(int) Object set(int, Object) void add(int, Object) Iterator iterator() en nog vele andere methoden …

8 java.util.Vector verbeterde opzet m.b.t. collecties sinds JDK 1.2 ArrayList is opvolger Vector compatibiliteit  Vector-API bevat redundante methodes

9 casting public class Route {private ArrayList wegdelen; public Lokatie getBeginpunt() { Wegdeel w; w = (Wegdeel)wegdelen.get(0); return w.getBeginpt(); } … }

10 getEindpunt public class Route {private ArrayList wegdelen; public Lokatie getEindpunt() { int laatste = wegdelen.size()-1; Wegdeel w; w = (Wegdeel)wegdelen.get(laatste); return w.getEindpunt(); } … }

11 Iterator public class Route {…{… public boolean rijdtVia(Lokatie lok) {// is lok toevallig het beginpunt van deze route? if (lok.equals(getBeginpt())) return true; Iterator it = wegdelen.iterator(); while (it.hasNext()) { w = (Wegdeel)it.next(i); if (lok.equals(w.getEindpt())) return true; } // lok is niet gevonden! return false; } … }

12 Data van een klasse

13 Klasse-attribuut Spaarrekening nr: long saldo: Euro laatsteMutatie: Datum rentetegoed: double renteperc: double Rekeninghouder naam: String adres: String

14 Klassemethode klasseattribuut  klassemethode Spaarrekening.setRentepercentage(3.4); static void setRentepercentage(double r) Klasse.klassemethode(.. ); object.klassemethode(.. );

15 Op meer niveaus Spaar rekening Rekening houder Rekening nr: long saldo : Euro next: long mutatie: Datum rentetegoed: Euro renteperc : double naam: String adres : String

16 Scenario’s

17 use case is verzameling scenario’s met gemeenschappelijk doel scenario bevat meestal concrete waarden nuttig bij invulling acceptatietest analyse dynamiek (sequentiediagram)

18 Use case (voorbeeld) name Registreer klant actors Baliemedewerker pre normal flow 1. Medewerker voert klantgegevens in 2. Systeem toont klanten met hetzelfde adres 3. Medewerker bevestigt registratie 4. Systeem toont klantnummer results Klant is geregistreerd met klantnummer alternate flow Klant was al geregistreerd [3]  Medewerker annuleert registratie

19 Scenario (voorbeeld normal flow) Vooronderstellingen: – Systeem kent onder meer: J.B.C. Peeters, I.T.M.A. Goldsmid wonende op Boromir 12 te Geldrop; – Laatst toegewezen klantnummer is Medewerker voert F.A.I. Peeters, Boromir 12, Geldrop in 2.Systeem toont J.B.C. Peeters I.T.M.A. Goldsmid 3.Medewerker bevestigt registratie 4.Systeem geeft klantnummer 12977

20 Sequence diagram Volgordediagram

21 Nut van Sequence diagram Waarvoor inzicht in (on)mogelijke communicatie tussen objecten aanpassing klassendiagram toevoegen gedragscomponent wijzigen gedragscomponent toevoegen associatierichting toevoegen associatie toevoegen nieuwe klasse

22 Sequence diagram Hoe a.h.v. concreet of algemeen scenario levenslijn objecten events processen terugkeer(waarde) condities

23 Order ordernr : Getal next : Getal Order(Klant) getTotaal( ): Bedrag bestel(Artikel) * Orderregel aantal : Getal Orderregel (Getal,Artikel) getKosten( ): Bedrag 1 Klant *1 Artikel artnr: Getal naam: Tekst voorraad: Getal prijs: Bedrag Artikel (Getal,Tekst,Bedrag) getVoorraad(): Getal getPrijs(): Bedrag setPrijs(Bedrag) *1

24 Normal flow scenario pre: Order o voor betreffende klant k is momenteel ‘actief’ Medewerker voert artnr A342 in Medewerker voert aantal 2 in Systeem voegt 2 artikels van artikel A342 toe Systeem toont overzicht van actieve order post: Order is met een bestelling van 2 artikels van A342 uitgebreid; nieuwe status van order wordt getoond

25 :GUI voer artnr en aant in o :Order bestel(art,aant) art:Artikel:Assortiment getArt(artnr) art getVoorraad() v :Orderregel [v≥aant] > scenario: toevoegen artikel toon(o)

26 Order ordernr : Getal next : Getal Order(Klant) getTotaal( ): Bedrag bestel(Artikel, int) * Orderregel aantal : Getal Orderregel (Getal,Artikel) getKosten( ): Bedrag 1 Klant *1 Artikel artnr: Getal naam: Tekst voorraad: Getal prijs: Bedrag Artikel (Getal,Tekst,Bedrag) getVoorraad(): Getal getPrijs(): Bedrag setPrijs(Bedrag) *1 * Assortiment getArt(artnr):Artikel aanpassingen klassendiagram

27 :GUI totaalbedrag? :Order:Orderregel:Artikel getTotaal() totaal * getKosten() getPrijs() prijs prijs*aantal scenario: totaalbedrag bestelling

28 Deze week Standaardgedrag aanvullen dmv sequencediagrammen Elk groepslid 1 scenario beschrijven Elk groepslid zijn scenario uitwerken mbv sequencediagram Elk groepslid doet verbeteringsvoorstellen voor klassendiagram Coderen van alle domeinklassen Inleveren A4-tje met stand van zaken m.b.t. alle doelen van OOS subdoel bereikt subdoel is duidelijk doch nog niet bereikt planning acties ivm bereiken subdoel


Download ppt "OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram."

Verwante presentaties


Ads door Google