9.2 attributes

OODBTG Reference Model

In some object models, object interfaces only contain explicitly definedoperations. In other models, interfaces include operations which are implicitlydefined in terms of logical "attributes" ("properties","instance variables", "data members") or other structuralconstructs (independent of implementation). Typically, defining an attributeA implicitly defines the inclusion of operations such as Get A and/or SetA in the interface of an object.

Attribute values are defined by a class which constrains possible values.Attribute values may be single- or multi-valued. Attributes are sometimesused to represent binary relationships.

OMG Core Object Model

See entry under 9. Noteworthy Objects.


An interface may have attributes. An attribute is logically equivalentto declaring a pair of accessor functions: one to retrieve the value ofthe attribute and one to set the value of the attribute. An attribute maybe read-only, in which case only the retrieval accessor function is defined[CORBA Specification 2.2.7 Attributes].


Attributes are a kind of property defined on a single object type. Attributestake literals as their values. Attributes are accessed by get_value andset_value operations; they are defined as part of the type interface -there are no implications about the implementation of the object type.Attributes are not first class objects (they cannot have properties orbe subtyped), however the built-in get_ and set_value operations can beoverridden. (Note that because attributes take literals as their values,defining, for example, a Department "attribute" of a Person objecthaving a Department object as its value requires the use of an ODMG relationshipinstead. See 9.1 relationships. )


An attribute represents a property of an entity which can be representedby a value of some type. There are three kinds of attributes in EXPRESS:an explicit attribute is one whose value must be given by external means;a derived attribute can be computed from the values of other attributes;and an inverse attribute establishes a name for the inverse direction ofthe relationship established by an explicit attribute.

Open Distributed Processing

Technically, treated as a relationship

Management Information Model

Managed objects have attributes. An attribute has an associated value,which can exhibit structure, i.e., it can consist of a set or sequenceof elements... The value of an attribute may be observable (at the managedobject boundary). The value of an attribute can determine or reflect thebehavior of the managed object. ...Operations on attributes are definedto be performed upon the managed object that contains the attributes andnot directly upon the attributes. The managed object is able to enforceconstraints on attribute values to ensure internal consistency. The definitionof a managed object class can specify constraints between the values ofthe individual attributes. The operations that can be performed on a particularattribute are specified in the definition of the managed object class.[Part 1]... A management operation that is performed on one or more attributesof a managed object can result in other observable changes; these are calledindirect effects. Indirect effects are the result of the relationshipsin the underlying resource. The following indirect effects can occur:

- a modification of an attribute value within the same managed object;

- a change in behavior of the managed object;

- a modification of an attribute in a related managed object;

- a change in the behavior of a related managed object caused by themodification of one or more attributes in the target managed object. [Part1]

Attributes are properties of an object class and characterizesome aspect of it. For the operations interface, attributes represent informationthat is essential to the management of the network. An attribute is notnecessarily a record field (i.e., actual stored value) in a system and,for example, may be computed or derived from one or more stored values.An object instance may differ from another instance of the same objectclass in its attribute values and, because of conditional packages, inthe actual set of attributes that it contains.

An attribute is defined in terms of its behavior, the possible valuesit may exhibit, the valid tests (matching rules) that may be performedon its value, and any specific errors that may cause a processing failureas a result of performing attribute-oriented management operations. Theattribute syntax defines the possible values an attribute may exhibit andis defined using ASN.1 notation. An attribute definition may also be derivedfrom another attribute definition. In this case, the derived attributehas the same syntax as the attribute from which it is derived, but mayadd additional behavior , matching rules or specific errors.

The attribute syntax identifies the common properties of the collectionof values that an attribute may have and is defined using ASN.1 [CCITTX.208, ASN.1]. Examples of attribute syntax that may appear in an ASN.1notation are INTEGER and BOOLEAN. In addition, the attribute may be definedto assume either only one value (single-valued) or multiple values (set-valued).

An attribute group defines a collection of attributes on whicha single operation may be applied to affect the member attributes of thegroup. Allowable operations on an attribute group are retrieving attributevalues and replacing the attribute values with their default values. Theattribute group defines the minimum set of attributes of the group andmay be extended by adding new attributes in a managed object class definition.However, an attribute group may also be defined as FIXED, in which casethe attribute group is not extendible.


There are two types of ADT attributes, stored attributes andvirtual attributes. A stored attribute is specified by givingan attribute name and a data type. The data type of a stored attributecan be any known data type, including another ADT. Each stored attributeimplicitly declares a pair of functions to get (observer function) andset (mutator function) the attribute value. A virtual attributehas a value that is derived or computed by a user-defined observer function.Because ADTs are encapsulated, and because the syntax for function invocationis the same for any attribute, only the type owner and subtype definerswould ever be aware of this distinction.

Columns of tables can also be used to represent attributes, as in SQL92.


At the metaclass level, Attribute is an object that is part of the metaclass.Its attributes are external name, default value, constraint function, indexfunction, pre-modification trigger, and post-modification trigger. Thevalues of attributes of Attribute are stored as part of the binary objectwhich represents an instance of Attribute.

An instance of Attribute can be associated with an instance of the metaclassClass. The instance of Class, (i.e. a class, like Person or Company) isstored as a binary object with links to a binary instance of Attribute(i.e. Name or Address).

An instance of Person is stored as a binary object. Attribute valuesare embedded in the binary object at this level.


Attributes correspond to data members in C++. C++ data members may bepublic, and therefore visible at object interfaces.


Objects are accessed through interfaces consisting of sets of methods.Data cannot be defined as PUBLIC, and therefore cannot be visible at anobject interface.


Attributes are known as class and instance variables in Smalltalk. ASmalltalk object's instantiated variables are stored in its private memoryand called instance data. Instance variables can be "named" (accessibleby name from the methods within the object instance) or "indexed"(accessed by pointer reference). Smalltalk does not support public attributes.


Attributes in Eiffel can become part of the public interface if exported.They represent the state of the object in question. When exported, theyare exported in read-only form. Only the class itself can change the valuesof its attributes.

System Object Model (SOM)

SOM classes support attributes. An attribute can be thought of as aninstance variable that has accompanying "get" and "set"methods. The get and set methods are invoked the same way as other methods.

OLE Component Object Model

As described in the entry under 2. Objects, Windows Objects areaccessed through interfaces consisting of sets of functions. Windows Objectsthat include "data" to be made available to users can be definedwith a special interface for accessing that data. Specifically, a dataobject is a Windows Object that provides a standard data transfer interfacecalled IDataObject. IDataObject includes, among other things,functions for getting and setting data (GetData, SetData,GetDataHere), for querying the ability of the object to providedata in specific formats (QueryGetData), and for notifying clientsof the data when the data changes in various ways(DAdvise, DUnadvise).

Analysis and Design Methods

SA: "An attribute is an abstractionof a single characteristic possessed by all entities that were themselvesabstracted as an object." They are atomic in the sense of RDB firstnormal form. These attributes are not objects.

CA: "An attribute is some data (stateinformation) for which each Object in a Class has its own value."Normalization, in the RDB sense, is deferred to design. These attributesare not objects.

RA: "An attribute is a data valueheld by the objects [instances] in a class. ... An attribute should bea pure data value, not an object. Unlike objects, pure data values do nothave identity."

JA: "To store information, objects[instances] use attributes. To each entity object we can thus tie severalattributes. Each attribute has a type, which can be of a primitive datatype, ... but it can also be of a composite data type which is more complexand that is especially defined." The attributes of an object are modeledby an association with a name, a cardinality, and a type. These attributesare not objects.

WD: Attributes are not modeled duringdesign, instead the model is in terms of "the responsibilities ofan object to maintain information..."

MD: "[A]n attribute is a componentin a class that will give a field in each object of the class. These attributesare not objects.

EA: None.

FA: "In addition to being able tobe identified, an object can have one or more values associated with it.... The attribute values of an object can be changed, but the number andname of the attributes are fixed. ... [D]uring the analysis phase, thevalues of attributes are not allowed to be objects. Attributes assume valuesfrom types such as integers, booleans, text, and enumerations." "Relationshipsas well as objects can have attributes." During design "... somedata attributes and object-valued attributes are established."

OA: An attribute is "[a]n identifiableassociation that an object has with some other object or set of objectsthat is represented within an object type." The term, attribute, isalso used in discussion of entity-relationship-attribute modeling.

BD: "...[A]n attribute denotes partof an aggregate object ... used... to express a singular property of theclass. To be precise, an attribute is equivalent to an aggregation associationwith physical containment, whose label is the attribute name and whosecardinality is one."

HA: "Properties are services (responsibilities)of a class that involve information being disclosed about the state ofan object. Properties may be viewed as queries on the state of an objectand hence should not have side effects on state (Meyer, 1988a). Propertiesthat return objects are viewed no differently from properties that return'values'." "... [T] is no conceptual distinction between 'values'and 'objects' (Beeri, 1990).

Properties that return 'values' are oftentermed 'attributes' although this does not necessarily imply a physicalpiece of stored data." "The word attribute is reserved for thosedata stored privately (private services) - the decision to define the internaldata structure may be taken at almost any stage of the lifecycle althoughpreferably left until late in the design process."

NA: "Attribute[:] A property ofan object manifested as a function returning a value."

features matrixintro page