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