OMT Object Model
10. Formalisation
In this chapter we will describe the Object Model is first order predicate calculus. First we define the basic concepts of the model, and after that we will define the relations between these concepts and the rules that must hold.
We made two assumptions:
We only consider here the relations at object class level;
We left out the n-ary relationship.
The reason why we left out the n-ary relationship is that it would really complicate because we would have to change a lot of the predicates concerning relations. Besides, you have to try to avoid making ternary or higher relation, because they are difficult to comprehend.
Below you can find the predicates and axioms. Below every definition (or set of definitions) you will find the explanation.
10.1 Basic concepts
The basic concepts of the Object Model are the following:
Some remarks:
The set of Relations consists of aGgregation, aSsociation and inHeritance.
The sets B and Q only contain two items. These are used to state wether an association is ordered or classified.
10.2 Properties of classes

Every object class can have several attributes and operations.

Every object can have several instantiations.
10.3 Different kinds of relations

A relation is a connection between two classes.




A relation can be an association, an aggregation or an inheritance. With this knowledge we can form the association, aggregation and inheritance classes.
10.4 Properties of relations

One relation between two classes only denotes one association, one aggregation or one inheritance, never two at a time. (you should read the '\/' symbols as 'exclusive or')

There can exist several associations between two classes. But when there exists an aggregation or an inheritance relation, there can not be another relation


There exist some extra rules for an inheritance relation. It is not possible for a subclass, to be a super class for his own super class (directly or indirectly). This is stated in the above definitions.
In the first predicate we state that you can not inherit from your own class, and that there can not exist a cycle of inheritances between a superclass and a subclass.
This cycle is defined as follows: when A is the superclass of B, then B is the superclass of A, or there exists a class C, which is a subclass of B and a superclass (directly or indirectly) of A. With this recursive definition, you will always find a cycle when there is one present.

An association can have a so called 'link attribute'.

Every association is assigned a number for each side of the association, called the multiplicity or cardinality. This number denotes how many instances of a class, can be linked to an instance of the other class.


An association can be ordered at one side, or qualified.
10.5 Rules for completeness



There can not exist any operations, attributes or relations that are not assigned to other entities, the can not exit by themselves.
10.6 Little things
There are still a few things that we have not stated above:
You can not have an aggregate where the aggregate object is the same as the element object
We have not explicitly stated anything about multiple inheritance, but we have not ruled it out either!
We know that this formalisation is not totally complete, but we feel that we addressed the most important aspects.