10.2 Metaclasses/Metaobject Protocol

how extensible is the class system? can new semantics be added?

OODBTG Reference Model

Not addressed.


CORBA does not define a meta-object or meta-class protocol.


Not specified.


EXPRESS currently has no notion of metaclass. It is likely that futureversions of EXPRESS will support at least two, if not n, meta-levels.

Open Distributed Processing

Considered a property of the model generated for the Information Language.Meta - whatever are considered second order constraints in the InformationLanguage.

Management Information Model

Not applicable.


SQL3 has no notion of metaclass and its semantics are not extensible.


Matisse supports the concepts of metaclass and metaobject protocol.[7]


C++ has no built-in concept of metaclasses or a metaobject protocol.An example of an extended C++ providing metaobject protocol capabilitiesis described in [CM93].


All classes are represented as an instance of a metaclass.


Not applicable.


Some of the basic behavior defined for all objects (e.g., how to cloneand how to print) is defined in explicit objects to which other objectsdelegate messages to obtain this behavior. As a result, it is possibleto imagine creating new versions of these basic objects, with variantsof these sorts of basic behavior. It is possible that such things as theprocess of delegation, or how message sends are handled, could themselvesbe defined in explicit objects and hence be changeable. However, it isnot clear from the references whether this is actually possible in SELF.

System Object Model (SOM)

In SOM all classes are real objects. SOM supports a class object whichrepresents the metaclass for the creation of all SOM classes. The SOM metaclassdefines the behavior common to all class objects. S ince it inherits fromthe root SOM object it exists at run time and contains the methods formanufacturing object instances. It also has the methods used to dynamicallyobtain information about a class and its methods at run time.

Analysis and Design Methods

SA: No such concept.

CA: No such concept.

RA: No such concept.

JA: No such concept.

WD: No such concept.

MD: No such concept.

EA: No such concept.

FA: No such concept.

FD: No such concept.

OA: Implementing metamodels is discussedbriefly in terms of the possibilities provided by the implementation language.

BD: In the context of Smalltalk and C++,'metaclass' is used to refer to the place where features of the class (asopposed to those of instances) are found (e.g. Smalltalk 'class variables'and 'class methods' and C++ 'static members.') In the context of CLOS,'metaclass' is used to refer to the place where the semantics of the classmay be dynamically changed (e.g. dynamic redefinition of methods or dispatchingalgorithms).



features matrixintro page