![Page 1: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/1.jpg)
OOSObject geOrienteerdSoftware-ontwerp - 3
Data van een object
Data van een klasse
Scenario
Sequence Diagram
![Page 2: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/2.jpg)
Data van een object
![Page 3: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/3.jpg)
Enkelvoudige data
Datum
dag: intmaand: intjaar: int
Datum(int, int, int)getDag() : intgetMaand() : intgetJaar() : intisEerderDan(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<d.jaar;
if (maand != d.maand)
return maand<d.maand;
return dag<d.dag;
}
}
![Page 4: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/4.jpg)
Keuzevrijheid in objectdata
Datum
dag: int
Datum(int, int, int)getDag() : intgetMaand() : intgetJaar() : intisEerderDan(Datum): boolean
public class Datum
{ private int dag;// dag=0 is 1-1-1900
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<d.dag; }
}
![Page 5: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/5.jpg)
meervoudige multipliciteit
Lokatie
{abstract}
Lokatie(String)
String getLand()
landsnaam: String
Wegdeel
wegcode: Stringlengte: double
Wegdeel(Lokatie, Lokatie, String, double)Lokatie getBeginpunt()Lokatie getEindpunt()double getLengte()String getWegcode()
1 beginpunt
naam: String
Plaats(String,String)String getNaam()
wegcode: Stringint: nr
Afslag(String, String, int)String getWeg()int getNrAfslag()
wegcode1: Stringwegcode2: String
Kruispunt(String, String, String)String getWeg1()String getWeg2()
Route
/ lengte: double
1eindpunt
1..*
Route(Wegdeel)double getLengte()Lokatie getBeginpunt()Lokatie getEindpunt()Iterator getWegdelen()Wegdeel getWegdeel(int)voegAchteraanToe(Wegdeel)boolean rijdtVia(Lokatie)
Plaats Afslag Kruispunt
doorloopt
![Page 6: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/6.jpg)
meervoudig type
public class Route{ private ArrayList wegdelen;
public Route(Wegdeel beginweg){
wegdelen = new ArrayList();wegdelen.add(beginweg);
}…
}
![Page 7: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/7.jpg)
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 …
![Page 8: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/8.jpg)
java.util.Vector
verbeterde opzet m.b.t. collecties
sinds JDK 1.2 ArrayList is opvolger Vector compatibiliteit
Vector-API bevat redundante methodes
![Page 9: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/9.jpg)
casting
public class Route{ private ArrayList wegdelen;
public Lokatie getBeginpunt(){
Wegdeel w; w = (Wegdeel)wegdelen.get(0);return w.getBeginpt();
}…
}
![Page 10: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/10.jpg)
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();
}…
}
![Page 11: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/11.jpg)
Iteratorpublic 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;
}…
}
![Page 12: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/12.jpg)
Data van een klasse
![Page 13: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/13.jpg)
Klasse-attribuut
Spaarrekening
nr: longsaldo: Euro laatsteMutatie: Datumrentetegoed: doublerenteperc: double
Rekeninghouder
naam: String adres: String
![Page 14: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/14.jpg)
Klassemethode
klasseattribuut klassemethode
Spaarrekening.setRentepercentage(3.4);
static void setRentepercentage(double r)
Klasse.klassemethode( .. );
object.klassemethode( .. );
![Page 15: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/15.jpg)
Op meer niveaus
Spaar
rekening
Rekening
houder
Rekeningnr: long
saldo: Euro
next: long
mutatie: Datum
rentetegoed: Euro
renteperc : double
naam: String
adres: String
![Page 16: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/16.jpg)
Scenario’s
![Page 17: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/17.jpg)
Scenario’s
use case is verzameling scenario’s met gemeenschappelijk doel scenario bevat meestal concrete waarden nuttig bij
invulling acceptatietest analyse dynamiek (sequentiediagram)
![Page 18: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/18.jpg)
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
![Page 19: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/19.jpg)
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 12976
1. Medewerker voert F.A.I. Peeters, Boromir 12, Geldrop in
2. Systeem toont J.B.C. PeetersI.T.M.A. Goldsmid
3. Medewerker bevestigt registratie4. Systeem geeft klantnummer 12977
![Page 20: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/20.jpg)
Sequence diagramVolgordediagram
![Page 21: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/21.jpg)
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
![Page 22: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/22.jpg)
Sequence diagram
Hoe a.h.v. concreet of algemeen scenario levenslijn objecten events processen terugkeer(waarde) condities
![Page 23: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/23.jpg)
Order
ordernr : Getalnext : Getal
Order(Klant)getTotaal( ): Bedragbestel(Artikel)
*
Orderregel
aantal : Getal
Orderregel (Getal,Artikel)getKosten( ): Bedrag
1
Klant* 1
Artikelartnr: Getalnaam: Tekstvoorraad: Getalprijs: BedragArtikel (Getal,Tekst,Bedrag)getVoorraad(): GetalgetPrijs(): BedragsetPrijs(Bedrag)
* 1
![Page 24: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/24.jpg)
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
![Page 25: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/25.jpg)
:GUI
voer artnr en aant in
o :Order
bestel(art,aant)
art:Artikel :Assortiment
getArt(artnr)
art
getVoorraad()
v
:Orderregel[v≥aant]
<<constructor(aant,art)>>
scenario: toevoegen artikel
toon(o)
![Page 26: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/26.jpg)
Order
ordernr : Getalnext : Getal
Order(Klant)getTotaal( ): Bedragbestel(Artikel, int)
*
Orderregel
aantal : Getal
Orderregel (Getal,Artikel)getKosten( ): Bedrag
1
Klant* 1
Artikel
artnr: Getalnaam: Tekstvoorraad: Getalprijs: BedragArtikel (Getal,Tekst,Bedrag)getVoorraad(): GetalgetPrijs(): BedragsetPrijs(Bedrag)
* 1*
Assortiment
getArt(artnr):Artikel
aanpassingen klassendiagram
![Page 27: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/27.jpg)
:GUI
totaalbedrag?
:Order :Orderregel :Artikel
getTotaal()
totaal
* getKosten()getPrijs()
prijs
prijs*aantal
scenario: totaalbedrag bestelling
![Page 28: OOS Object geOrienteerd Software-ontwerp - 3 Data van een object Data van een klasse Scenario Sequence Diagram](https://reader033.vdocuments.site/reader033/viewer/2022052523/5551a0ef4979591f3c8b8f04/html5/thumbnails/28.jpg)
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