What are the most important concepts in Object Oriented Programming

The Wicked Teacher of the West is looking for the most important concepts in Object Oriented Programming as she develops a new course. It's a tough question because teachers only have so much time to present material to students. That time has to be used wisely. 

My list is more or less:

  • Encapsulation - students need to know that in a class you include all of the data and methods.

  • Constructors - Making sure everything has an initial vale and what does instantiation really mean?

  • Overloading - Not strictly OOP but very important in OOP especially with constructors and overloaded methods with inheritance and polymorphism.

  • Inheritance - How else does one understand moving from general to specific solutions in OO Design?

  • Polymorphism - a good think to know before thinking about generics as well as useful for dealing with things that are close but not the same.

I feel like I am leaving something out. I need more time on this. What do you think I am leaving out? Is anything on my list not among the "most important" concepts of OOP?

Of course the basic building blogs of "regular" programming are also important.

  • Data types

  • Variables and arrays

  • Discussion structures

  • Loops

  • Recursion

It all has to be build around understanding problem solving and good design thinking. Without problem solving skills its all just wasted. Of course I'm just stating the obvious - right?



Comments (3)

  1. theCoach says:

    The most important thing to understand in Object Oriented design is that it is attempting to bridge the problem domain and the solution domain, and that the public interfaces should closely model the problem domain and that solution specifics should be encapsulated.

  2. James Curran says:

    I largely agree with your list and your ordering (although I’m not sure if you intended it to be "in order").

    Encapsulation is the most important, along with it’s companion "Data hiding".  I like the second term because it stresses it’s importance of the concept — a class which exposes all it’s private data as public properties is helping no one.  Along with that is the importance of encapsulating methods.  The concept that seems hardest for new OO programer to break free of is the paradigm of "get the data from the object; manipulate it by the client; set the data back to the object" rather than "have the object manipulate itself".

    Inheritence, on the other hand, I’d put very low, almost to the point of dismissing it as an implementation detail.

  3. SEOGuru says:

    The list seems to be complete and in order as I see it.  I would agree with James above that it is hard to break from the thinking mode of manually manipulating data but the better I get and more time I spend, I find that setting the object to manipulate itself is crucially important to clean programmming and time conservation.

Skip to main content