*Use [[Polymorphism]] and [[inheritance]] at its bestStart your object model with the definition of “Metaclasses”, which derive from UBIK’s internal classes and can hold own and inherited “Metaproperties” and attributes. These Metaproperties specify the features of your classes and have various configuration options. They are always strongly typed, can be formatted, checked against rules, multilingual or generally indexed, and can, of course, also hold dimension units and calculate with them in real time. After the definition you will be able to derive content objects from your Metaclasses, which will inherit all those specifications and hold their distinctive values. *Define arbitrary [[relations]] between objectsUBIK objects can be set in relation to each other in different ways. While it is possible to define 1:n relations (“References”), UBIK also allows the creation of n:n relations. As any other Metaclass, relations can possess Metaproperties and have their own inheritance hierarchy.
*Program runtime behavior of your objects in native code
As your custom Metaclasses derive from UBIK’s internal classes, you can simply use the powerful code editing tools of UBIK, to customize their built-in events and incorporate your own runtime behavior. No need to learn a special scripting language or to abdicate any functionality, just use pure C# and leverage everything .NET offers. *Configure [[Views]] to control in views how users see the objectsYour Metaclasses can be part of as many views as you want, and those views are the key to present the object model to the users. So you can present the very same classes in completely different ways and hierarchies, to support the user and meet his expectations as good as possible.
[[Category:UBIK]]