Ga naar hoofdinhoud

Quiz Regels Aggregate

Deze quiz hoort bij het voorbeeld op de Regels-pagina over de Open dag casus met Bezoekers, Workshops en Aanmeldingen.

Hieronder staat het diagram van Optie C: AanmeldingsManager (de 'Best of Both worlds'-opzet) nog eens weergegeven:

fe19b5c667c15b0038bd1a531c5b92a1

PlantUML broncode voor "Optie C: Apart Object AanmeldingsManager"
@startuml
hide circle

skinparam linetype ortho

rectangle "Aanmelding \n Aggregate" {

class AanmeldingsManager <<Aggregate Root>> {
aanmelden(workshopId, bezoekerId)
afmelden(workshopId, bezoekerId)
printKaartje(workshopId, bezoekerId)
}
class Aanmelding <<Value Object>> {
printKaartje()
}
}

note top of AanmeldingsManager

AanmeldingsManager kun
je ook OpenDag noemen

end note

rectangle "Workshop\n Aggregate" {
class Workshop <<AR>>{
titel
duur
start()
stop()
}
}

rectangle "Bezoeker \nAggregate" {
class Bezoeker <<Entity>>{
naam
leeftijd
}
}

AanmeldingsManager "1 " -- "\t*" Aanmelding
Aanmelding "1" -l-> "1" Bezoeker
Aanmelding "*" <-l-> "1 " Workshop

note as N1

Best of Both worlds? Je kunt checks doen bij aanmelden
en afmelden, maar je kunt ook zien voor welke workshops.

Maar je mag via Bezoeker of Workshop niet bij Aanmelding,
alles moet via AanmeldingsManager.

Vind de overtreding van de regels...

end note

@enduml

Klassendiagram met 6 klasse(n) en 4 relatie(s).

Klassen:

  • Klasse AanmeldingsManager met stereotype Aggregate Root met:
    • publieke methode 'aanmelden', met parameter(s) 'workshopId', 'bezoekerId', return type void
    • publieke methode 'afmelden', met parameter(s) 'workshopId', 'bezoekerId', return type void
    • publieke methode 'printKaartje', met parameter(s) 'workshopId', 'bezoekerId', return type void
    • geen attributen
  • Klasse Aanmelding met stereotype Value Object met:
    • publieke methode 'printKaartje', zonder parameters, return type void
    • geen attributen
  • Klasse Workshop met stereotype AR met:
    • publieke methode 'start', zonder parameters, return type void
    • publieke methode 'stop', zonder parameters, return type void
    • publieke attribuut 'titel'
    • publieke attribuut 'duur'
  • Klasse Bezoeker met stereotype Entity met:
    • publieke attribuut 'naam'
    • publieke attribuut 'leeftijd'
    • geen methoden
  • Klasse Vind de overtreding van de regels zonder methoden en attributen
  • Klasse . zonder methoden en attributen

Relaties:

  • AanmeldingsManager heeft een associatie-relatie met naam '\t*' met Aanmelding
  • Aanmelding heeft een associatie-relatie met Bezoeker, multipliciteit 1 naar 1
  • Aanmelding heeft een associatie-relatie met Workshop, multipliciteit * naar 1
  • Vind de overtreding van de regels heeft een afhankelijkheid naar .

Het voorbeeld hoef je niet kapot te analyseren, want dan is er een duidelijk domein en opdrachtbeschrijving nodig. En een opdrachtgever die aangeeft wat belangrijke/waardevolle regels zijn. Dit kan namelijk varieren met allerlei acties die je wilt kunnen doen met de applicatie:

  • Snel overzicht van alle bezoekers en populaire workshops (workshops met meer dan 30 aanmeldingen)
  • Zorgen dat je nooit kan aanmelden voor een workshop die al loopt of zelfs gestopt is
  • Mogelijkheid geven weer af te melden voor een workshop (en dan ook weer een kaartje te printen)
  • Etc.

❓ Maak deze quiz om te kijken of je de regels van een Aggregate begrijpt en kan herkennen in een voorbeeld.

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.

Wat is de overtreding in de 'Best of Both worlds' opzet?

Wat is waar?

Kun je van de Aanmelding ook een Aggregate root maken?