Wednesday, April 04, 2007

Object oriented design

Simula 67 was the first object oriented language, and as it's name suggests was created in 1967. Since then many object oriented languages have been created, all with the purpose of easing software development and making it easier to write robust, maintainable, and flexible programs.

In the next few posts I will cover the fundamental principles of programming with objects and how to apply those principles while coding in real life situations. Remember, even though object orientation gives us constructs for writing maintainable programs, if we do not use them properly, the resulting code will probably be more unmaintainable than simple structured programs.

These are some of the topics that I will post about.

A quick refresher of object oriented principles

In this section we will once again refresh the basic concepts of abstraction, encapsulation, inheritance, and polymorphism. 

Translating requirements into system design

In this section we will understand how to identify classes and their relationships from a requirement specification.

Outcome of good design

This section explains good design and what we hope to achieve with well designed software.

Design principles

In this section we will discuss software design principles and best practices such "keep it simple", "do not repeat yourself", "loose coupling", "high cohesion", etc. We will discuss the principles as well as their practical implications. As of now this section covers some basic principles. Other principles like the ''open closed principle', 'Liskov substitution principle', etc, will be added in the next version of this course.


As always I would like to reiterate the importance of reflection and participation in the learning process. As you go ahead, spend a little time reflecting over the concepts, and also participate by asking questions, answering them, and posting your perspectives on the concepts.  I hope you find information useful. Your suggestions are very welcome, please let us know the things we should preserve, and the things we should improve.


Note: This post was originally posted on my blog at

No comments: