Objects are organized by Object Classes (called Types in the main Viewer). The Object's Class determines which Fields, Statuses, and Connections apply to an object. Object Classes become the core of your database’s custom configuration.
Sub-Classes, Super-Classes, and Top-Level Classes
When Object Classes are designed, most Object Classes will be defined “under” other Object Classes in a hierarchy. Whatever is true for a Class is true for its Sub-Classes. In technical terms, the Sub-Class inherits from the Super-Class. For example, if the Special Project Object Class is under the Project Object Class, then everything that’s true for Projects will be true for Special Projects. If a Project can have a “managed by” Connection, then a Special Project can also have a “managed by” Connection. The phrase "is a" is important here. If the Class hierarchy is designed correctly then every individual noun can be said that it "is a" for every Class going up the hierarchy.
Selecting a Class from the Filter will also select all Objects that belong to that Class, as well as all Sub-Classes and their Objects.
A Class at the top of the hierarchy, without a Super-Class, is called a Top-Level Class. GroverDB databases may have multiple Top-Level Classes. A hierarchy tree with multiple Top-Level Nodes is sometimes referred to as a Forest-Style Hierarchy.
Multiple Classes - Object Multi-Class
An Object must belong to at least one Class, but GroverDB allows an Object to belong to several Classes. A person could easily be a board member, customer, and founder all at the same time. A part can be a component and a finished product. A company can be both a customer and a vendor. Grover DB handles reality by allowing any Object to belong to multiple Classes - called Object Multi-Class.
Every aspect of every Class for the Object is aggregated together and it all applies to the Class. If the Object belongs to multiple Classes, it can use all the features - all the States, State Flows, Attributes, and Connections - for every Class it belongs to.
By default, Classes may not be mixed if one Class has IsPerson = true, and the other Class has IsPerson = false. This can be overridden if either Class has MultiClassCompatiable set to true.
Object Multi-Class is not configured by the designer. The users will select multiple Classes for the Object as needed. However, understanding how Object Multi-Class works gives the database designer more freedom when designing the Class structure.
It's easy to add a new Class to an Object once that new Class applies in reality.
Types of Classes
Inside GroverDB there are several types of Classes. To differentiate Classes that hold Objects from other types of Classes, this type of Class is sometimes referred to as an Object Class. Note: As a rule within GroverDB, for clarity sake,
- Properties are design options that define the behavior of the database. e.g. Classes have properties.
- Attributes are optional data (Fields) that are added to data. e.g. Objects have Attributes.