10.3 Introspection

definitional aspects of instances; access to definitions (e.g., type/classobjects) at run time)

OODBTG Reference Model

Not addressed except implicitly as a requirement for schema or instanceevolution to occur.

OMG Core Object Model

4.2.3 Object Types


Although the Core defines types and operations as concepts, systemsthat comply to the model need not provide objects that correspond to theseconcepts. Types and operations as objects will be considered for inclusionin the Meta_data component of the OMG OM Components Guide.

Editor's note: the OMG OM Components Guide exists in draft form only.


Type "Type" is a subtype and an instance of type Atomic_object.The meta-data can be accessed using the interface for type instances, andcan be queried using the standard query language.


This is essentially not considered by EXPRESS, although some of thebuiltin functions provide string-based representations of some meta-levelinformation on an ad-hoc basis. It is likely that future versions of EXPRESSwill address the issue more fully.

Open Distributed Processing

Not a concept required or considered for ODP due the strong generalnotions of encapsulation.

But, every object instance is associated with an object type which inturn has a predicate.

Editor's note: I believe there is some misunderstanding here, sincethe ODP Trader function appears to involve providing some form of accessto descriptive information at run time in order to match client servicerequirements with service offerings. Perhaps the Trader is not requiredto actually allow the client to read the descriptions of service offerings.

Management Information Model

Scoping allows multiple managed objects to be selected so that multipleidentical operations can be performed on all of them. Scoping allows asubset of the objects in a Management Information Tree of an open systemto be selected for the application of a specified operation.

Filters allow for the specification of criteria that managed objectsmust meet in order to have a management operation performed. A filter isan assertion about the presence or value of an attribute in a managed objectand is satisfied if, and only if, the assertion evaluates to TRUE. Theselection criteria is a set of one or more assertions about the presenceof attributes, or the values of attributes in a managed object.

Also, [ISO/IEC CD 10164-16, MKMF] defines managed object classes forrepresenting schema information (e.g., managed object classes supported,managed object class definitions and their associated characteristics).


Some metadata is maintained in SQL3 tables (this is a requirement ofSQL92) and can be read by the user.


All objects in Matisse have a unique immutable identifier and know whattype they are. This includes metaclasses, class schemas, and object instances.


A C++ class is a compile-time entity which defines the form of all objects(instances) of the class. Classes have no explicit representation as objectsat run time. A run time type information (RTTI) facility recently addedto the C++ standard provides some support for introspection. This facilitydefines a typeid operatorwhich, given an expression as an argument, returns a reference to a system-maintainedobject of type Type_infocorresponding to the type of the argument. A Type_infoobject can be compared with another Type_infoobject to determine type equality or inequality, and its namemember function can be called to access the type's name. However, thereare limitations on the use of Type_infoobjects (e.g., they cannot be passed as function arguments), so they arenot fully equivalent to run time class objects.


Typically Smalltalk implementations offer complete introspection.


Limited introspection is available through class operations. Class ANYintroduces a small number of operations to find the base class of an objectand other similar information.

Most vendors supply one or more library classes to provide further facilitiesfor object introspection such as finding the number and types of fieldswithin an object and also manipulating those fields.


Each Emerald abstract type is an object, and can thus be manipulatedby the ordinary facilities of the language, such as assignment, constantbinding, and parameter passing. Type objects may be passed as parametersto implement polymorphism or inspected at run-time to implement run-timetype checking.

Any object that exports a getSignatureoperation that returns a Signatureis an abstract type. Objects of type Signatureare created by the type constructor syntax (typex ... end x). A Signatureis a built-in implementation of an AbstractTypethat can be generated only the compiler. A signature object exports a getSignatureoperation (returning itself) so it conforms to AbstractType.It also exports several secret operations that enable the Emerald implementationto determine the operations provided by the type, and the signatures ofthose operations. Because the names of these operations are secret, noprogrammer-defined objects will ever have types that conform to Signature;all signature objects must stem from a type constructor expression in someEmerald program. Consequently, the type checker is guaranteed to be ableto get adequate and consistent information about a type. [RTLB+91]


SELF has no type or class objects. It might be possible to infer descriptioninformation from access to instances, but it is not clear from the referenceswhether this can be done in SELF.

System Object Model (SOM)

See entry under 10.2 Metaclasses/Metaobject Protocol.

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: See the matrix entries for Eiffel.

EA: No such concept.

FA: No such concept.

FD: No such concept.

OA: No such concept.

BD: "[R]untime type identification"is determined in accordance with the possibilities provided by the implementationlanguage.



features matrixintro page