A fundamental human way of dealing with complexity.
Managed with "classes" of "objects".
A focus on the outside view of an object; a simplification.
Use the "Principle of Least Astonishment".
Implemented within objects to support abstraction.
Implemented with "classes" of "objects".
Also called "Information hiding".
Supports the separation of interface and implementation.
Manages a second tier of complexity.
Modules represent a partitioning of software.
Prevents a "big bag of equally significant classes".
Modules are more loosely coupled than classes.
An ordering of abstractions.
Class structure via inheritance ("is-a" relations)
Object structure via associations ("has-a" and "part-of" relations)
Language enforced to prevent erroneous conversions of objects.
Strong (C++) and weak (Smalltalk) typing can be implemented
in the language.
Static binding(Ada) and dynamic binding(C++,Java) possible.
Implemented with multiple processors or multitasking.
Addresses process abstraction (thread of control) and
synchronization at the object level.
Addresses object lifespans.
Objects can be temporary in memory, stored in files,
or managed through O-O databases.
Varying levels of support from different languages.
$Author: rlv $ - $Date: 2004-02-02 13:41:01 $
$Name: not supported by cvs2svn $ - $Revision: 1.7 $
$Source: /h/cm/uml/oo-goals.html,v $
Ralph L. Vinciguerra