Vergelijkingscriteria
Het is handig om twee sequentiediagrammen te vergelijken aan de hand van een specifieke procedure, meestal is dit een methode uit een klasse (maar niet altijd).
Neem een specifieke procedure uit twee sequentiediagrammen die voor dezelfde domain story verschillende oplossingen weergeven.
Beantwoord voor elk sequentiediagram de volgende drie vragen:
- Welk object weet hoe een functie/methode werkt?
- Van welke object(en), of actor(en) krijgt het object bij vraag 1 informatie om het werk te kunnen doen? (anders gezegd: Waar komen de parameters vandaan?)
- Welke objecten moeten binnen de procedure samenwerken om het werk te kunnen doen? (NB: Nieuwe objecten maken, doorgeven of retourneren telt niet als samenwerken, alleen methoden aanroepen van andere eerder gemaakte objecten telt als samenwerken).
Je probeert de hoeveelheid informatie en de hoeveelheid samenwerking uit criterium 2 en 3 zo laag mogelijk te houden. (loose coupling = lage koppeling)
Voorbeeld: genereren van een kaartje
We bekijken het genereren van een kaartje van de bioscoop-casus uit de voorbereiding. Hieronder zie je twee sequentiediagrammen die twee verschillende oplossingen weergeven voor het genereren van een kaartje. We beantwoorden bovenstaande drie vragen voor elk sequentiediagram.
Klassendiagram
Dit is het klassendiagram met de vraag die we willen beantwoorden met de sequentiediagrammen.
Optie A: CinemaApp genereert Kaartje
- Welk object weet hoe de functie/methode voor het genereren van een kaartje werkt?
Het object
app. De klasseCinemaAppheeft (nog) geen definitie van de methodegenereerKaartjemaar de code om dit te doen is er wel.
- Waar komen de parameters vandaan?
Het object
appkrijgt van actorBezoekerde informatie overstoelNummeren van objectvertoningde informatie overtitel,datum,startTijdenfilmzaal.
- Met welk(e) object(en) moet er binnen genereer kaartje samengewerkt worden?
Geen (een nieuw
kaartje-object maken telt niet).
Optie B: Vertoning genereert Kaartje
Doe voor optie B nu zelf de analyse aan de hand van de criteria net als bij A is gedaan, en schrijf de antwoorden voor jezelf op.
(Zet hieronder onder de vragen een blok met je muis om antwoorden te zien, maar doe eerst zelf een poging!)
❓ Of maak deze quiz met deze vragen in multiple choice format om te oefenen.
- Welk object weet hoe de functie/methode voor het genereren van een kaartje werkt?
De klasse
Vertoningheeft een definitie van de methodegenereerKaartje.
- Waar komen de parameters vandaan?
Het object
vertoningkrijgt van objectappde informatie overstoelNummer
- Met welk(e) object(en) moet er binnen genereer kaartje samengewerkt worden?
Geen (een nieuw
kaartje-object maken telt niet).
Analyse en conclusie
Welke ontwerpbeslissing is het beste voor de functionaliteit 'genereren van een kaartje' van de bioscoop casus? Welke participant kun je het best deze verantwoordelijkheid geven?
Aan de hand van de vuistregel om hoeveelheid data heeft optie B de voorkeur voor het genereren van een kaartje. Want deze heeft van minder objecten informatie nodig (criterium 2;
vertoningheeft alle informatie overtitel,datumenstartTijdenfilmzaalal).