Group: data structures
Group: data type
Group: type inheritance
Topic: abstract data type
Topic: data type as a set of operations
Topic: data type as a set of values and a set of operations
Topic: data type as a set of variables
Topic: data type by access rights
Topic: data type by name or tags
Topic: data types in Thesa
Topic: data types are not needed
Topic: dynamic vs. static data type
Topic: function signature
Topic: interface type
Topic: non-exclusive data type
Topic: object-oriented classes
Topic: object-oriented databases
Topic: object-oriented fields
Topic: object-oriented methods
Topic: opaque and partially-opaque data types
Topic: restricted use of global variables
Topic: taxonomy
Topic: type hierarchy
Topic: types of object-oriented classes
Topic: user-defined data type
| |
Summary
The data type of an object is its class. The class (with its superclasses) defines the object's variables and its operations. The only type checking is whether or not the class has a method for the current message. In Smalltalk, type checking is dynamic, while in C++ it is usually static. See the cross-references for related quotes.
In the traditional view, variables and parameters are assigned data types. A variable's data type determines its storage allocation and generic operations. A parameter's data type determines what variables or expressions can appear as arguments. Here, an object's class determines its storage allocation and all operations. Procedures do not play a role.
There is a move towards multiple inheritance and non-exclusive data types so that an object can be in more than one class. (cbb 1/90)
Subtopic: what is a type?
Quote: what properties must types have to be an acceptable type system for object-oriented programming [»wegnP10_1986]
| Quote: a class is a type: it specifies how objects behave and how they are created, used, and destroyed. A class also specifies a representation [»stroB_1991]
| Quote: a data type provides information about the intended use of data, restricting its meaningful operations [»parnDL3_1976]
| Quote: defining general-purpose or application-specific types is the most fundamental programming activity in C++ [»stroB_1991]
| Subtopic: type as specification
Quote: objects should be known via formally specified operations rather than by implementation; i.e., by abstract data type [»meyeB9_1990]
| Quote: object-orientation treats types as behavior specifications that can be composed, modified, and inherited [»wegnP10_1986]
| Quote: a spec-type either branches on the actual mode or its variables carry its procedures [»parnDL3_1976]
| Subtopic: object-oriented type
Quote: a well designed user-defined type in C++ is used the same as a built-in type
| Quote: object-oriented classes are really types that describe particular objects rather than abstract concepts; shouldn't use "class" [»winkJF8_1992]
| Quote: a class extends the notion of an abstract data type; it is a compile-time template for creating object instances; no state or operations [»chinRS3_1991]
| Quote: Amoeba objects are abstract data types managed by server processes
| Quote: Smalltalk objects are typed by their class [»shocJF9_1979]
| Quote: an Eiffel class is a data type; includes basic types such as integers [»meyeB9_1990]
| Quote: Java separates data and implementation; data contains type tags that identify appropriate implementations, e.g., for downloading [»goslJ6_1997]
| Quote: the message/object model explicitly maintains the type of an object and the operators for a class; no need for memorization [»coxBJ7_1983]
| Quote: Pegasus types have unique names and represent collections of objects that share characteristics; interrelated by a DAG (multiple inheritance) [»ahmeR12_1991]
| Subtopic: type as behavior -- messages
Quote: the interpretation of a Smalltalk message is intrinsic to the class [»shocJF9_1979]
| Quote: in Smalltalk, classes define the meaning of messages
| Quote: an abstract data type is a class of modes that specifies the permissible operands for its operators; can use any member of the mode class [»parnDL3_1976]
| Quote: the external view of an object is its protocol, i.e., the set of messages that it responds to [»robsD8_1981]
| Quote: methods can only send messages to objects, they can not call methods directly; implements strong typing [»robsD8_1981]
| Quote: a Pegasus type can be characterized by the roles it plays in arguments and results of various functions
| Quote: constructing a new type in Sketchpad is a finite, well-defined task; construct a generic block of 20 registers and the corresponding subroutines
| Quote: the meaning of a plex depends on its use, i.e., the algorithms applied to its components [»rossDT5_1964]
| Subtopic: type as objects
Quote: a Sketchpad type is a ring of objects under a generic heading; the generic heading defines the type and its subroutines [»suthIE5_1963]
| Quote: data structures built from nodes (programmer-defined types); components may be nodes or elements of a small number of types [»straC8_1967]
| Subtopic: subtype
Quote: subtype testing via PQ-trees; small footprint, constant time; originally used in constraint ordering [»zibiY10_2001]
| Quote: incremental algorithm for constant-time subtyping tests for multiple inheritance
| Subtopic: problems with object-oriented types
Quote: be careful of over-constraining database types; allow new unforeseen uses; object-orientation is too restrictive [»coddEF_1990]
|
Related Topics
Group: data structures (12 topics, 278 quotes)
Group: data type (34 topics, 730 quotes)
Group: type inheritance (13 topics, 394 quotes)
Topic: abstract data type (64 items)
Topic: data type as a set of operations (38 items)
Topic: data type as a set of values and a set of operations (16 items)
Topic: data type as a set of variables (11 items)
Topic: data type by access rights (20 items)
Topic: data type by name or tags (29 items)
Topic: data types in Thesa (92 items)
Topic: data types are not needed (8 items)
Topic: dynamic vs. static data type (24 items)
Topic: function signature (21 items)
Topic: interface type (50 items)
Topic: non-exclusive data type (16 items)
Topic: object-oriented classes (67 items)
Topic: object-oriented databases (15 items)
Topic: object-oriented fields (28 items)
Topic: object-oriented methods (42 items)
Topic: opaque and partially-opaque data types (14 items)
Topic: restricted use of global variables (22 items)
Topic: taxonomy (16 items)
Topic: type hierarchy (18 items)
Topic: types of object-oriented classes (18 items)
Topic: user-defined data type (13 items)
|