@startuml class ShadowApplication <> { -ModuleManager module_manager ~void packagePrivateMethod() #{abstract} char protectedMethod(int param) } class ModuleManager <> { -vector moduels --- +void AddModule(Module* mo) } abstract class Module { +string domain --- +void Init() +void Update() +void ShutDown() } @enduml