Hi Kirby,

You may be interested in Dijkstra's take on teaching via metaphor: https://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html
I am not sure exactly how it applies to your case.

It seems to me that OO tends to get taught in terms of the mechanisms present in OO languages and how that is implemented. Things like the notion of inheritance, polymorphism and the idea of putting behaviour and data together.

When I learnt OO we were taught about concepts, how they're defined by intention/extension and how they can be reasoned about in terms of set theory. We were taught about how to produce OO analysis models. That shows you how to think about a problem.

Language features and how they work are—out of necessity—a very limited shadow of such models. Language features are not even necessary for implementing an OO model - you can happily reap OO benefits writing C code.

My feeling is teaching OO by language features is like giving people a physical tool without giving them the mental tool that gives direction on how to and why and where use it (or not).

One nice book that does explain the fundamentals really well IMHO is "Object-Oriented Methods: A Foundation" by James Martin/James Odell. http://www.amazon.com/Object-Oriented-Methods-Foundation-UML-2nd/dp/0139055975

Regards
- Iwan

--
Reahl, the Python only web framework: http://www.reahl.org

_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
https://mail.python.org/mailman/listinfo/edu-sig

Reply via email to