An MDL class is the definition of an entity encapsulating all the data and functions of a certain algorithm. Data values are stored into one of three different types of MDL class parameters. Interface parameters are used to exchange data values between the MDL class and the simulator or other MDL classes. Local parameters are used for private data values which can be accessed only by methods of the actual MDL class. The values of static parameters are shared between all instances of the same MDL class, whereas every instance of a certain MDL class uses different storage places for local parameters. This ensures that the value of local parameters remain unchanged between two evaluations of methods of that MDL class instance.
MDL supports inheritance (Section 3.2.7) and aggregation (Section 3.2.5) of MDL classes to express relationships between several MDL classes and their concepts.
The definition of a new MDL class is initiated by the keyword NewModel followed by the name of the new MDL class (MDL_Class_Name) and an MDL block containing the definitions of all class members.
NewModel MDL_Class_Name {
MDL_Class_Members
}
The interior of such an MDL class definition summarized as MDL_Class_Members is a sequence consisting of the following constructs: