Ga naar hoofdinhoud

Quiz - Vergelijkingscriteria

Oefenen met 'Lage koppeling'

Dit is de Quiz variant van de pagina over vergelijkingscriteria en de vuistregel over lage koppeling in je code.

Beantwoord onderstaande multiple choice vragen om te oefenen. Dit zijn dezelfde vragen uit de Bioscoop casus over de casus 'genereerKaartje'. Je kunt deze methode in verschillende classes definieren en een werkende oplossing krijgen. Maar we zoeken de beste plek voor meer onderhoudbare en makkelijker uitbreidbare code.

Optie A: CinemaApp genereert Kaartje

cb803c36673ca135c4f231f399785fdc

PlantUML broncode voor "Optie A: CinemaApp genereert kaartje"
@startuml

title Optie A CinemaApp genereert Kaartje

autonumber

actor Bezoeker
participant "app:\nCinemaApp" as app
participant "vertoning:\nVertoning" as vertoning
participant "stoel:\nStoel" as stoel
participant "kaartje:\nKaartje" as kaartje
database Store

Bezoeker -> app : reserveerStoel(\n\
stoelNummer, id)

app -> Store : vertoning = findVertoning(id)
app -> vertoning: reserveerStoel(stoelNummer)
vertoning -> vertoning: stoel = findStoel(stoelNummer)

vertoning -> stoel : reserveer()
stoel -> stoel: isBeschikbaar(false)

app -> vertoning: titel = getTitel()
app -> vertoning: datum = getDatum()
app -> vertoning: startTijd = getStartijd()
app -> vertoning: filmzaal = getFilmzaal()

create kaartje
app -> kaartje : kaartje = new Kaartje(titel, datum, startTijd, filmzaal, stoelNummer)
Bezoeker <-- app : kaartje

@enduml

Sequentiediagram met 6 deelnemers: Bezoeker, app van het type CinemaApp, vertoning van het type Vertoning, stoel van het type Stoel, kaartje van het type Kaartje en Store.

Interacties:

  1. Bezoeker roept app.reserveerStoel(\n\() aan
  2. app roept Store.vertoning = findVertoning(id) aan
  3. app roept vertoning.reserveerStoel(stoelNummer) aan
  4. vertoning roept vertoning.stoel = findStoel(stoelNummer) aan
  5. vertoning roept stoel.reserveer() aan
  6. stoel roept stoel.isBeschikbaar(false) aan
  7. app roept vertoning.titel = getTitel() aan
  8. app roept vertoning.datum = getDatum() aan
  9. app roept vertoning.startTijd = getStartijd() aan
  10. app roept vertoning.filmzaal = getFilmzaal() aan
  11. app roept kaartje.kaartje = new Kaartje(titel, datum, startTijd, filmzaal, stoelNummer) aan

Deze quiz helpt je toetsen of je de bron echt hebt bekeken/gelezen en begrepen. Zo niet: bekijk/lees de bron opnieuw. Gebruik deze quiz niet als 'gaming' voor de toets; de toetsvragen zijn inhoudelijk anders.

1. Welk object (in optie A) weet hoe de methode voor het genereren van een kaartje werkt?

2. Waar komen de parameters vandaan?

3. Met welk(e) object(en) moet er binnen 'genereer kaartje' samengewerkt worden?

Optie B: Vertoning genereert Kaartje

75665edfa3c8ecaf494ff3ccfe6bd268

PlantUML broncode voor "Optie B: Vertoning genereert kaartje"
@startuml Optie B: Vertoning genereert kaartje

title Optie B: Vertoning genereert kaartje

autonumber

actor Bezoeker
participant "app:\nCinemaApp" as app
participant "vertoning:\nVertoning" as vertoning
participant "stoel:\nStoel" as stoel
participant "kaartje:\nKaartje" as kaartje
database Store

Bezoeker -> app : reserveerStoel(\n\
stoelNummer, id)

app -> Store : vertoning = findVertoning(id)
app -> vertoning: reserveerStoel(stoelNummer)
vertoning -> vertoning: stoel = findStoel(stoelNummer)

vertoning -> stoel : reserveer()
stoel -> stoel: isBeschikbaar(false)

app -> vertoning : genereerKaartje(stoelNummer)


create kaartje
vertoning -> kaartje : kaartje = new Kaartje(\n\
titel, datum, startTijd, filmzaal, stoelNummer)
app <-- vertoning: kaartje
Bezoeker <-- app : kaartje

@enduml

Sequentiediagram met 6 deelnemers: Bezoeker, app van het type CinemaApp, vertoning van het type Vertoning, stoel van het type Stoel, kaartje van het type Kaartje en Store.

Interacties:

  1. Bezoeker roept app.reserveerStoel(\n\() aan
  2. app roept Store.vertoning = findVertoning(id) aan
  3. app roept vertoning.reserveerStoel(stoelNummer) aan
  4. vertoning roept vertoning.stoel = findStoel(stoelNummer) aan
  5. vertoning roept stoel.reserveer() aan
  6. stoel roept stoel.isBeschikbaar(false) aan
  7. app roept vertoning.genereerKaartje(stoelNummer) aan
  8. vertoning roept kaartje.kaartje = new Kaartje(\n\() aan

Deze quiz helpt je toetsen of je de bron echt hebt bekeken/gelezen en begrepen. Zo niet: bekijk/lees de bron opnieuw. Gebruik deze quiz niet als 'gaming' voor de toets; de toetsvragen zijn inhoudelijk anders.

1. Welk object (in optie B) weet hoe de methode voor het genereren van een kaartje werkt?

2. Waar komen de parameters vandaan?

3. Met welk(e) object(en) moet er binnen 'genereer kaartje' samengewerkt worden?

Conclusie o.b.v. vuistregel: Welke optie, A of B, heeft de voorkeur voor het genereren van een kaartje?