An example class diagram from another of my projects (Glok - a GUI Toolkit similar to JavaFX).
I've taken some liberties with the UML class diagram syntax :
* As italics aren't possible, I've use /ClassName/ instead (to represent an interface).
I've also used different line styles for interfaces, abstract classes and concrete classes.
* For compactness, I've not included the dividing lines, and instead used indentation to distinguish
attributes from the class's name.
/**
## Class Diagram
There is a very similar class-hierarchy of buttons. See [ButtonBase].
*
* ╭╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ ┌─────────────┐ ╭╌╌╌╌╌╌╌╌╌╌╌╌╌╮
* ┆/Actionable/ ┆ │MenuItemBase │ ┆/WithContent/┆
* ┆ performAction()┆ │ onAction │ ┆ content ┆
* ┆ ┆ │ │ ┆ ┆
* ╰╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ └─────────────┘ ╰╌╌╌╌╌╌╌╌╌╌╌╌╌╯
* △ △ △
* └─────────┐ ┌───┴──────────────┐ │
* ┌──┴──────┴──────┐ │ │
* │LabelledMenuItem│ ┌────┴─────┴───┐
* │ text │ │CustomMenuItem│
* │ graphic │ │ │
* │ ... │ │ │
* └────────────────┘ └──────────────┘
* △
* ┌────────────────┬──────────────┴───────┐ ╭╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮
* ┏━━━━━┷━━━━━┓ ┏━━━━┷━━━━━━┓ ┌───────┴──────────┐ ┆/Toggle/ ┆ ┏━━━━━━━━━━━━━━━┓
* ┃SubMenu ┃ ┃MenuItem ┃ │SelectMenuItemBase│ ┆ selected ┆ ┃ToggleGroup ┃
* ┃ items ┃ ┃ ┃ │ selected │ ┆ toggleGroup ├─────◇┃ selectedToggle┃
* ┃ ┃ ┃ ┃ │ │ ┆ userData ┆ ┃ userData() ┃
* ┗━━━━━━━━━━━┛ ┗━━━━━━━━━━━┛ └──────────────────┘ ╰╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ ┗━━━━━━━━━━━━━━━┛
* △ △
* ┌───────────────────────────┬──────┴────────────┐ ┌──────┴─────────────┐
* ┏━━━━━━━━━━┷━━━━━━━━━━━┓ ┏━━━━━━━━━━━┷━━━━━━━━━┓ ┌────┴───┴─────────┐ ╵
* ┃PropertyToggleMenuItem┃ ┃PropertyRadioMenuItem┃ │ToggleMenuItemBase│ ToggleButtonBase
* ┃ property ┃ ┃ property ┃ │ │
* ┃ value ┃ ┃ value ┃ │ │
* ┗━━━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━━┛ └──────────────────┘
* △
* ┌─────────┴──────────┐
* ┏━━━━━━┷━━━━━━━┓ ┏━━━━━━━━┷━━━━┓
* ┃ToggleMenuItem┃ ┃RadioMenuItem┃
* ┃ ┃ ┃ ┃
* ┗━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━┛
*
*
Created with [Blokart](https://gitlab.com/nickthecoder/blokart).
*/