Principles of OO Design

7 August 2012 | 17:57 | Galina Slavova

Not longer than a month ago I was asked by a very kind colleague-freelancer, whom I met at a project, to give him a crash course of object orientation.

The ones of you who had sweated years of developing complex business software applicaitons would know the concepts of object oriented programming, considering the fact, that we use object oriented languages to design and implement those systems.

Therefore a decent developer should have, at least, heard of OO principles. And know a number of them by heart.

As for me, learning object orientation to the bone didn't elude me as the college lecturer back in the time was an enthousisatic fan of it.

So, back to the crash course proposal: I was really pleased to be asked such a thing. This colleague and I shared every day the same lunch at work, but not the same discipline, so he was really willing to learn. He can do serious heavy-lifting in the world of Business Intelligence, Data Integration, Data Risk and Finance, in other words: stuff you shouldn't ask me about.

We set a date, I prepared a custom one-day course for him, made him lunch, kept him busy by telling him stories about the OO world and let him finish the small program we were developing between the theory hours.

I admit, it gives me the kick to play teacher and see the sparkle in the eye of the student who understands from my explanations, visualisations and vocalizations. It's definitely a pleasurable thing to do!

In the end he asked me to issue a certificate for achievement. He certainly deserved it!

What we covered was:

  • Encapsulation
  • Data abstraction
  • Inheritance
  • Polymorphism
  • Message passing
  • Extensibility
  • Persistence
  • Delegation
  • Genericity
  • Multiple Inheritance

So now I'm sharing the document that I made to support the OO teaching. I've written it in Dutch, which could be unfortunate for some readers, but don't hesitate to ask me for a translation if you feel the need of it.
Here is my email address:galina@crafity.com

Interfacing classes (or encapsulating objects) was a compulsory exercise.

  • OO principles