The Image Above shows the first class Diagram I have made for a flexible menu system. My goal was to have it so each menu is built from Canvas areas like unity does for theirs GameObject menus. I wanted it to be flexible enough that if I want a collapsing menu I could, or a scroll menu, or a page menu, ect. Also I wanted different entity types, so for example the user can Bind a new key to a control, or rename a GameObject like a companion, ect. To continue this flexibility each GUI entity will need multiple elements, like a label for control type, then a text field for the key-bind. These probably will change a bit as I build, and they might need some factories for platform specific requirements.
For any new programmers out there, I would highly suggest learning UML. It has made my production time a lot less, and made my program structures cleaner. I honestly don’t know why teachers don’t use UML more. It is easier to understand from a none programmer perspective, and makes programming less complicated.