Object Oriented Programming (first version -- of three) 

	Programming methodology in which the data elements (objects) in 
	the system form the fundamental unit of program decomposition.  


	Object Oriented Programming  (second version)

	Programming methodology in which the data elements (objects) in 
	the system form the fundamental unit of program decomposition.  
	Objects are described by means of classes.  


	Object Principle

Objects are autonomous actors. They respond to messages by executing methods. The execution of a method may require sending additional messages


	Class Principle

Classes are both collections and descriptions of objects. A class provides a template, or factory, for creation of objects of the same kind.


	Inheritance

Using one class to define another by declaring only the new features. Defines a subclass relationship between the original (parent) class and the new class. All objects in the new class are members of the old class.


	Type Specialization Principle

	In any context in which an object of a given class may be used, any 
	object of a subclass may be substituted.


	Object Oriented Programming  (final version)

Programming methodology in which the data elements (objects) in the system form the fundamental unit of program decomposition. Objects are described by means of classes. Classes are developed by means of successive refinement using inheritance.


	Principle of Abstraction

The processing provided by a class should always be in accord with the nature of the abstraction on which the class is based.

       
       Class Invariant

A statement guaranteed by the implementor to be always true when observed from outside the class.


	Information Hiding Principle

Details of the implementation of a data type should not be accessible to clients of that data type.


	Type Polymorphism

The ability of a name to refer to objects of many different types.


	ISA

	A relationship between a subclass and its superclass.  Other 
	relationships are possible but this is the norm.  An object of a 
	subclass ISA (is a) object of its superclass.  It exhibits all 
	of the properties of a superclass object.  Implies that the 
	subclass is a specialization of the superclass.  


	ISLike

	A relationship between a class and its superclass.  A weaker 
	relationship than ISA.  It is used only for code reuse rather than 
	as an abstraction mechanism.  Implies that the subclass is a 
	modification of its uperclass.  Some item of the semantics has changed.  


	HASA (uses)

	A relationship between classes.  The relationship A HASA B is true 
	if B is used to implement A.  One of A's components is an element 
	in B.  Sometimes we make a choice   between ISA and HASA 
	when designing a new class.  

   
   
	Dynamic Binding Principle

Every virtual message that is sent is interpreted in the context of the object executing the method.