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
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?