Index Prev Next

Object-Oriented Goals

Abstraction
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".
Encapsulation
Implemented within objects to support abstraction.
Implemented with "classes" of "objects".
Also called "Information hiding".
Supports the separation of interface and implementation.
Modularity
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.
Hierarchy
An ordering of abstractions.
Class structure via inheritance ("is-a" relations)
Object structure via associations ("has-a" and "part-of" relations)
Typing
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.
Concurrency
Implemented with multiple processors or multitasking.
Addresses process abstraction (thread of control) and synchronization at the object level.
Persistence
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