Welcome to the course on designing using object oriented principles.
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 this section we will learn 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.
This course covers the following topics:
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 requirments into system design
In this section we will understand how to identify classes and their relationships from a requirment specification.
Outcome of good design
This section explains good design and what we hope to achieve with well designed software.
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.
In this section we will unerstand in steps, how to design a software system from a real world software requirment.
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 every section learned, and also participate by asking questions, answering them, and posting your perpectives on the concepts. I hope you find this module informative. Your suggestions are very welcome, please let us know the things we should preserve, and the things we should improve, in the feedback section.
Note: This post was originally posted on my blog at http://www.adaptivelearningonline.net