Skip to main content

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:

Strategy Pattern (Mermaid)

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 klassen en 4 relaties.

Klassen:

  • Klasse Woordenlijst met:
    • publieke methode 'sorteer', zonder parameters, return type void
    • publieke methode 'setSorteerStrategie', met parameter 'strategie', return type void
    • private attribuut 'String[]' van type woorden
  • Interface SorteerStrategie met:
    • publieke methode 'sorteer', met parameter 'woorden', return type void
    • geen attributen
  • Klasse MergeSort met:
    • publieke methode 'sorteer', met parameter 'woorden', return type void
    • geen attributen
  • Klasse ShellSort met:
    • publieke methode 'sorteer', met parameter 'woorden', return type void
    • geen attributen
  • Klasse QuickSort met:
    • publieke methode 'sorteer', met parameter '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:

Dierenhiërarchie

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 klassen en 2 relaties.

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:

E-commerce Domein

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 klassen en 3 relaties.

Klassen:

  • Klasse Klant met:
    • publieke methode 'plaatsBestelling', met parameter '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.