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?

 

 

Technorati tags: OOP, Teaching, Computer Science Concepts