Specialisatie

Zondag, 12 mei 2002
Martin Fowler martinfowler.com beschrijft dynamische classificatie in zijn boek UML Distilled (Hoofdstuk 6, Multiple and Dynamic Classification). UML Distilled, door Martin Fowler Een citaat: Een dynamische classificatie Dynamische classificatie is nuttig bij conceptueel modelleren

Fowler geeft als voorbeeld:
een persoon kan van job wijzigen.

Hm, in het overgrote deel van Fowler's boek kan ik me vinden, maar ik vind dynamische classificatie klinklare onzin. Het gegeven voorbeeld van job en persoon vind ik bovendien zeer zwak.

Ja, persoon-manager zou als specialisatie gemodelleerd kunnen worden. Maar kunnen is nog geen zullen. Een drietal argumenten tegen dynamische classificatie:

  1. Een conceptueel model moet zo dicht mogelijk bij de werkelijkheid aansluiten, niet bij mogelijke implementaties.
  2. De classe van een object geldt voor de hele levensduur van een object, vanaf constructie tot destructie.
  3. Een specialisatie heeft niets te maken met eigenschappen die tijdens de levenscyclus van waarde kunnen veranderen.

Associatie of Specialisatie?

Goed, geen dynamische classificatie voor mij. Maar wat dan wel? Een associatie of specialisatie? En wat is het onderscheid?

In m'n wekelijkse noot van 15 oktober 2001 was het antwoord: Hebben of zijn? Dat is de vraag.. Onderin die noot vindt u een quiz die u plaagt met verschillende betekenissen van "is".

Fowler wijst ook op deze verwarrende betekenissen van "is" in hoofdstuk 6, subhoofdstuk Classification and Generalization.

Als alternatief biedt hij een vraag als
Is elke instantie van Manager een instantie van Persoon?

Ook die vraag blijft vaag, geeft geen duidelijk onderscheid tussen associatie en specialisatie.

Onderscheidende vraag: Is cardinaliteit zinnig?

Idee: Kijk of cardinaliteit mogelijk zou kunnen zijn. Bijvoorbeeld: Een associatie en een specialisatie
  • Wat zou er gebeuren als de historie van jobs per persoon binnen de scope valt?
  • Wat zou er gebeuren als één persoon op één moment meerdere jobs kan bekleden?
Dit soort denkbeeldige wijzigingen van cardinaliteit is een mooie lakmoesproef voor een specialisatie.
  1. Een specialisatie heeft nooit iets met cardinaliteit te maken. De volgende vraag is onzinnig:
    Hoeveel Jobs is een Manager?
  2. Een associatie heeft altijd cardinaliteit. Die kan één op één zijn, maar is meestal één op veel.

Tot de volgende week,
Henk Jan Nootenboom