Mermaid Klassendiagrammen
Deze pagina test Mermaid klassendiagrammen gerenderd via Kroki, met automatisch gegenereerde Nederlandstalige natuurlijke taal beschrijvingen.
Strategy Pattern (Mermaid via Kroki)
Hetzelfde Strategy Pattern voorbeeld als PlantUML, maar geschreven in Mermaid syntax:
Mermaid broncode voor "Strategy Pattern (Mermaid)"
classDiagram
class Woordenlijst {
-String[] woorden
+sorteer() void
+setSorteerStrategie(strategie) void
}
class SorteerStrategie {
<<interface>>
+sorteer(woorden) void
}
class MergeSort {
+sorteer(woorden) void
}
class ShellSort {
+sorteer(woorden) void
}
class QuickSort {
+sorteer(woorden) void
}
Woordenlijst --> SorteerStrategie : huidigeStrategie
SorteerStrategie <|.. MergeSort
SorteerStrategie <|.. ShellSort
SorteerStrategie <|.. QuickSort
Klassendiagram met 5 klasse(n) en 4 relatie(s).
Klassen:
- Klasse Woordenlijst
met:
- publieke methode 'sorteer', zonder parameters, return type void
- publieke methode 'setSorteerStrategie', met parameter(s) 'strategie', return type void
- private attribuut 'String[]' van type woorden
- Interface SorteerStrategie
met:
- publieke methode 'sorteer', met parameter(s) 'woorden', return type void
- geen attributen
- Klasse MergeSort
met:
- publieke methode 'sorteer', met parameter(s) 'woorden', return type void
- geen attributen
- Klasse ShellSort
met:
- publieke methode 'sorteer', met parameter(s) 'woorden', return type void
- geen attributen
- Klasse QuickSort
met:
- publieke methode 'sorteer', met parameter(s) 'woorden', return type void
- geen attributen
Relaties:
- Woordenlijst heeft een associatie-relatie met naam 'huidigeStrategie' met SorteerStrategie
- MergeSort implementeert interface SorteerStrategie
- ShellSort implementeert interface SorteerStrategie
- QuickSort implementeert interface SorteerStrategie
Eenvoudige dierenhiërarchie
Een eenvoudig overervingsvoorbeeld:
Mermaid broncode voor "Dierenhiërarchie"
classDiagram
class Dier {
+String naam
+int leeftijd
+maakGeluid() void
}
class Hond {
+String ras
+blaf() void
}
class Kat {
+String kleur
+miauw() void
}
Dier <|-- Hond
Dier <|-- Kat
Klassendiagram met 3 klasse(n) en 2 relatie(s).
Klassen:
- Klasse Dier
met:
- publieke methode 'maakGeluid', zonder parameters, return type void
- publieke attribuut 'String' van type naam
- publieke attribuut 'int' van type leeftijd
- Klasse Hond
met:
- publieke methode 'blaf', zonder parameters, return type void
- publieke attribuut 'String' van type ras
- Klasse Kat
met:
- publieke methode 'miauw', zonder parameters, return type void
- publieke attribuut 'String' van type kleur
Relaties:
- Hond erft over van Dier
- Kat erft over van Dier
E-commerce Domeinmodel
Een complexer domeinmodel:
Mermaid broncode voor "E-commerce Domein"
classDiagram
class Klant {
-String id
-String naam
-String email
+plaatsBestelling(items) Bestelling
}
class Bestelling {
-String bestellingId
-Date bestellingDatum
-BestellingStatus status
+berekenTotaal() Geld
+verzend() void
}
class Bestelregel {
-int aantal
-Geld stukprijs
+getSubtotaal() Geld
}
class Product {
-String sku
-String naam
-Geld prijs
-int voorraad
}
Klant "1" --> "*" Bestelling : plaatst
Bestelling "1" --> "*" Bestelregel : bevat
Bestelregel "*" --> "1" Product : verwijst naar
Klassendiagram met 4 klasse(n) en 3 relatie(s).
Klassen:
- Klasse Klant
met:
- publieke methode 'plaatsBestelling', met parameter(s) 'items', return type Bestelling
- private attribuut 'String' van type id
- private attribuut 'String' van type naam
- private attribuut 'String' van type email
- Klasse Bestelling
met:
- publieke methode 'berekenTotaal', zonder parameters, return type Geld
- publieke methode 'verzend', zonder parameters, return type void
- private attribuut 'String' van type bestellingId
- private attribuut 'Date' van type bestellingDatum
- private attribuut 'BestellingStatus' van type status
- Klasse Bestelregel
met:
- publieke methode 'getSubtotaal', zonder parameters, return type Geld
- private attribuut 'int' van type aantal
- private attribuut 'Geld' van type stukprijs
- Klasse Product
met:
- private attribuut 'String' van type sku
- private attribuut 'String' van type naam
- private attribuut 'Geld' van type prijs
- private attribuut 'int' van type voorraad
- geen methoden
Relaties:
- Klant heeft een associatie-relatie met naam 'plaatst' met Bestelling, multipliciteit 1 naar *
- Bestelling heeft een associatie-relatie met naam 'bevat' met Bestelregel, multipliciteit 1 naar *
- Bestelregel heeft een associatie-relatie met naam 'verwijst naar' met Product, multipliciteit * naar 1
Over Mermaid via Kroki
Deze diagrammen worden server-side gerenderd door Kroki. De remark-kroki-a11y plugin parset de Mermaid syntax en genereert Nederlandstalige natuurlijke taal beschrijvingen.
Voor client-side Mermaid rendering (met @docusaurus/theme-mermaid), zie Mermaid: Kroki vs Theme.