Component User Framework
The following class diagram shows the idea, how the core of Contrexx should look like in the future:
Here are some thoughts which lead to the diagram above:
- All "real-life-things"/models are based on a single class: EntityBase
- Most "real-life-things"/models have a creator or owner, so they are based on 'Component' class
- Most "real-life-things"/models also have a name and belong to a group and are therefore based on 'User'
- Based on Unix, a user belongs to a (primary) group
- A SystemComponent (formerly known as 'module', 'core_module', 'library', 'template' and 'part of core') belongs to a group, has a creator and a name and is therefore a 'User'
The diagram above is just a visualization of an idea. An implementation of these principles will probably need some more classes around and in between (as you can see for example in the version implemented in 3.1).
Since we cannot change everything from one day to another, we decided to implement the user part later, so the class diagram for the core of Contrexx 3.1 looks like this (everything in the namespace \Cx\Core\Component was moved to \Cx\Core\Core):