Advanced Object Oriented design and Generic Data Types

These pages serve as a tutorial for more advanced Object Oriented Design concepts.   Since I think that studying well commented code is the best way to actually understand what the code is doing, I've included several Java files which can be studied to see examples of inheritance, encapsulation, polymorphism, and "generification".

All the examples are based on the following diagram:

Object Hierarchy Diagram

The Cloud shapes are Interfaces, the rounded boxes are Abstract Classes, and the square boxes are Concrete classes (click here to see a UML version). The shaded area in the middle is the focus this discussion.

The sample is played out as follows:

 

Note: the GenericVectors example set contains a few examples that are conceptually pretty difficult.  The involves "type bounding" issues with adding and removing generic items from a Vector. The following diagram may help you understand "Wildcard Capture":

NOTE: Image Removed due to a typographical error that distorted the intended meaning.  I'll repost once the image has been fixed.