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 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:

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 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:

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 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.