Object Oriented

I had reread a book by Grady Booch and recalled some topics about object oriented analysis and design that I had learned a while ago. And I thought I would share and discuss some of these ideas here. The first topic is that of complex systems.

Complex systems have a number of shared traits. They have a lot of subsystems. There is often an arbitrary choice of components in the system. There are dependencies between these components. The subsystems are combined in different ways. They often have evolved from a simple working prototype system.

There are a number of approaches that can be taken to design complex systems. There is a top down structured design. There is also a data driven design approach. And finally there is the object oriented design approach. When we use the word object, we are referring to a tangible entity that has a well defined behavior.

Object oriented analysis is an examination of the requirements in terms of classes and objects. Object oriented design has multiple facets. There is an object oriented decomposition of the problem. There is notational symbols for both the logical and physical design models. And there is also notation for both static and dynamic models.

Likewise, object oriented programming has multiple parts to it. Programs are made up of cooperating objects. The objects themselves are instances of classes which are the blueprints. Classes are arranged in a hierarchical structure. The classes in the structure are related by a term called inheritance.

There is a lot more to object orientation that what I discussed here. This is merely a review if you are already somewhat familiar with object oriented analysis and design. Normally I would point newcomers to the actual text of Grady Booch himself. However given enough time, I might be able to start a number of articles here that teaches this in more detail.