Topic: abstract functions
Topic: abstract data type
Topic: automatic selection of algorithm for abstract data type
Topic: generic operations and polymorphism
Topic: inheritance by delegation
Topic: inheritance of properties
Topic: object-oriented prototypes
Topic: object-oriented templates and containers
Topic: opaque and partially-opaque data types
Topic: problems with type inheritance
Topic: restricted and extended types
Topic: type hierarchy
Topic: type inheritance as reuse
Group: data type
Group: derived data types
Topic: context
Topic: dynamic vs. static data type
Topic: global declarations and variables
Topic: interface type
Topic: names defined by context
Topic: non-exclusive data type
Topic: non-hierarchical classification and multiple classification
Topic: object-oriented classes
Topic: object-oriented data types
Topic: object-oriented databases
Topic: object-oriented fields
Topic: object-oriented methods
Topic: ref_any or Object data type
Topic: taxonomy
Topic: type conversion
Topic: type parameter
Topic: types of object-oriented classes
| |
Summary
Every class is an object. Like all objects, classes belong to a class. This creates a class or type hierarchy. The super class of a class defines common procedures and variables which are inherited by instances of each sub-class. By changing a super-class the behavior of all sub-classes and their instances is automatically changed. In this way, type inheritance aids software maintenance and reuse. A simple implementation is restricted or extended data types. (cbb 1/90)
Subtopic: design for inheritance
Quote: design for inheritance or prohibit it; inheritance commits forever design decisions about usage, protected methods, and other aspects of a class' inner workings [»blocJ_2001]
| Quote: prefer interfaces over inheritance; unless designed for inheritance, avoid using methods that may be overridden [»blocJ_2001]
| Subtopic: family resemblance
Quote: a base class expresses a commonality of representation and calling interface
| Quote: Kevo uses family resemblance instead of explicitly sharing object representations [»taivA11_1997]
| Quote: Kevo creates objects by copying; it incrementally modifies objects with operations over modules
| Subtopic: subclass as prefix
Quote: classes are a remodeling of records; hierarchical tree structure; members are objects; the prefix of a subclass is the higher level class [»dahlOJ_1967]
| Subtopic: isa or concept-oriented inheritance
Quote: use public derivation (with implicit conversions to a base class) when derivation represents an "isa" relationship of a concept [»stroB_1991]
| Quote: the concept-oriented view of inheritance is based on classification in taxonomic systems; models part of the real world [»winkJF8_1992]
| Quote: use inheritance ("D is a kind of B") for well-defined relationships and membership ("D has a B") whenever multiple members are possible [»stroB_1991]
| Quote: inheritance represents conceptual specialization of a model
| Quote: A is a subtype of B if it can be used wherever B is used; A is a subclass of B if it inherits methods and variables [»rodrNR8_1993]
| Quote: single inheritance works well if a derived class is more restrictive than the base class; can reuse unrestricted functions [»waldJ2_1992]
| Quote: is-a inheritance in object-oriented programming has two very different interpretations [»winkJF8_1992]
| Subtopic: inheritance for management of change
Quote: inheritance is important for management of change, especially long-term [»wegnP10_1986]
| Quote: use inheritance to isolate users from changes in the implementations of derived classes; e.g., use 'ival_box' to prompt user for an integer value [»koenA12_1995]
| Quote: late binding and self-reference allow a programmer to change object behavior without access to its representation
| Subtopic: subsumption in Modula's type system
Quote: subsumption is the property that a value of type A is also a value of any supertype B with A<:B [»abadM_1996]
| Quote: the product type is a covariant type operator on pairs of types; i.e., A x B <: A' x B' provided that A <: A' and B <: B' [»abadM_1996]
| Quote: a function type is a contravariant type operator on pairs of types; i.e., A -> B <: A' -> B' provided that A' <: A and B <: B'; extends to multiple arguments [»abadM_1996]
| Quote: methods vary contravariantly from classes to subclasses; despite debate to the contrary
| Quote: an update type is an invariant type operator on pairs of types; i.e., if A * B means A and B may be updated, then A * B <: A' * B' provided A=A' and B=B' [»abadM_1996]
| Quote: Modula-3 uses a simple, restricted subtype rule, if T <: U, then every value of T is a value of U; arrays and procedures must be basically the same [»cardL_1991]
| Quote: allowing the subtype relation to extend to procedures contravariantly interacts badly with subtype rules that require a change of representation [»nelsG_1991]
| Quote: Modula-3 does not extend the subtype relation to procedures, arrays, or sets
| Subtopic: method inheritance
Quote: the program-oriented view of inheritance is based on extension and substitutability; can replace an object with an object of any subclass [»winkJF8_1992]
| Quote: separate inheritance of behavior (behaves-like) from inheritance of representation (subsumes)
| Subtopic: invariant inheritance
Quote: an object is a descendant of a prototype if it satisfies all of the inheritance constraints for fields, methods, and protocols
| Subtopic: object reference
Quote: a reference value refers to an object belonging to a class or its subclasses; the value 'none' is permissible for any reference [»dahlOJ_1967]
| Subtopic: reference to superclass and subclass
Quote: super-reference allows access to redefined properties without code duplication
| Quote: a Smalltalk subclass can override a method in its superclass [»xlrg8_1981]
| Quote: use 'super' to access overridden methods of a Smalltalk class [»xlrg8_1981]
| Quote: Simula uses ';inner;' to show where subclass actions are embedded [»ichbJD_1972, OK]
| Quote: a prefixed procedure embeds its code inside another procedure at 'inner'; like Simula's prefixed classes [»vaucJG10_1975, OK]
|
Group: type inheritance
Topic: abstract functions (11 items)
Topic: abstract data type (64 items)
Topic: automatic selection of algorithm for abstract data type (7 items)
Topic: generic operations and polymorphism (67 items)
Topic: inheritance by delegation (8 items)
Topic: inheritance of properties (24 items)
Topic: object-oriented prototypes (39 items)
Topic: object-oriented templates and containers (27 items)
Topic: opaque and partially-opaque data types (14 items)
Topic: problems with type inheritance (20 items)
Topic: restricted and extended types (35 items)
Topic: type hierarchy (18 items)
Topic: type inheritance as reuse (27 items)
Related Topics
Group: data type (34 topics, 730 quotes)
Group: derived data types (9 topics, 119 quotes)
Topic: context (8 items)
Topic: dynamic vs. static data type (24 items)
Topic: global declarations and variables (33 items)
Topic: interface type (50 items)
Topic: names defined by context (36 items)
Topic: non-exclusive data type (16 items)
Topic: non-hierarchical classification and multiple classification (16 items)
Topic: object-oriented classes (67 items)
Topic: object-oriented data types (29 items)
Topic: object-oriented databases (15 items)
Topic: object-oriented fields (28 items)
Topic: object-oriented methods (42 items)
Topic: ref_any or Object data type (9 items)
Topic: taxonomy (16 items)
Topic: type conversion (33 items)
Topic: type parameter (34 items)
Topic: types of object-oriented classes (18 items)
|