DML is structured around an object model, where each DML program describes a single device class (being a subclass of the built-in generic device class), which can contain a number of member objects. Each member object can in its turn have a number of members of its own, and so on in a nested fashion.
Every object (including the device itself) can also have methods, which implement the functionality of the object, and parameters, which are constant-valued members that exist only during compilation.
Each object is an instance of a class, often simply called the "object type"; the built-in object types are described in Section 3.2. There is no way of adding user-defined classes in DML 1.0. However, each object is in general locally modified by adding (or overriding) members, methods and parameters - this can be viewed as creating a local one-shot subclass for each instance.
Many parts of the DML object model are automatically mapped onto the Simics "configuration object" model; most importantly, the device class itself, its attributes and interface methods. (See the Simics User Guide and the Simics Programming Guide for details.)