Within Avanade we are asked to maintain skills self-assessments. This allows Avanade to identify appropriate individuals for a particular job. One area we are asked to evaluate is OOP techniques. This led a co-worker to ask me “What does it take to be considered advanced in OOP techniques?” Here was my initial reply:
I think to be considered advanced in OOP techniques you need to first understand and be able to talk about the three primary principals of OO, inheritance, encapsulation, and polymorphism. Secondly you should be able to apply the principals using an object oriented programming language like C# or VB.NET. I also believe to be considered advanced you should understand and know how to design object models.
The key point really is the second one, knowing how to apply the principals using an OOP. For example, when should you create a base class? When should that base class be an abstract base class? How to derive from a base class and the advantages? What are the differences between single inheritance and multiple inheritance, pros and cons of each? How to use interfaces to reap the advantages of multiple inheritance when only single inheritance is supported by the OOP? Advantages of interfaces, how and when to use them? Overloading methods, how and when is it appropriate? Abstract and virtual methods, what are they and when to use them? And levels of isolation, public verses protected verses private verses friend/internal (or the favor of the month based on the language of choice).
Talking about OO concepts is one thing. Apply them is another. When you can talk about the concepts and apply them that is when you become advanced, imho.
Posted in uncategorized. Tagged in .