OO SupportA OO language for modelling systems on a particular abstract level has to support the OO fundamentals and possibly even enforce the fundamentals. Support can be provided in the following forms.
TypesAn object type is a container in which the state and the behaviour(s) for an object are defined.
In a programming language where you define a variable of type integer you implicitly have the operations on integer. You do not have to care how such an integer looks like and how the operations are performed on this variable. A similar thing can be done for a type of object.
In an object-oriented programming language this is usally a class. A class contains some data and a set of methods that operate on the data. Class in this sense is a misnomer, it is more in place in a system for building hierarchies of object types and control over objects and their types. Such a system actually is not part of object orientation, but an environment in which a model is executed.
Message PassingThe way messages are passed between objects can be supported in more than one form.
In an object-oriented programming language the most used form of message passing is the method call, where the object handling the method call also passes back a message to return a value.
EncapsulationEncapsulation prevents objects from relating to each other in other ways than the provided forms of message passing.
Information HidingHiding of information about an object can be done by deliberately making this information inaccessible.
In an object-oriented programming language this is usually encomplished by annotating items with keywords as public and private.