I intend to teach some OOP methodology but everywhere I look, there are only syntethic examples and elaborations of various concepts of the OOP world (for example: what is inheritance, how to use interfaces).

Like this or this.

What I'm looking for is a tutorial of how to solve a "real-world" problem (can be fictious) but with all (or most of) the steps of these:

  • How to analyze the problem?
  • What are the objects?
  • What should be taken care of?
  • What classes should be created?
  • What pattern is recommended?

I found a good book online but it is way too detailed to be a quick guidance - though not a bad start. Nevertheless, I'm looking for a shorter and more practice-oriented approach.

As you can see, I'd like to have a tutorial that teaches OOP as a whole and not its parts.

The students are mostly beginners but trying to use a wide range of OOP concepts - they have a few months of experience.

Do you know any example that has this kind of tutorial structure?

  • $\begingroup$ What level are your students? What do they already know? How much experience do they have with programming? What is their dominant programming paradigm? There would be different answers for novices and for experienced programmers. $\endgroup$
    – Buffy
    Commented Dec 8, 2017 at 12:00
  • $\begingroup$ @Buffy I edited the initial post about the experience level of the students. $\endgroup$
    – Nestor
    Commented Dec 8, 2017 at 17:40

5 Answers 5


I'm currently teaching OOP using Python 3 Object-oriented Programming by Dusty Philips. Find it on Packt or Amazon.

It's a practitioners book, it covers a bit more than just OOP including some unnecessary bits if you ask me (like concurrency). I've found it works out well when combined with a few other sources like Effective Python and some online materials on design patterns. If you follow it page by page I find it a bit too much focussed on Python details and not as much on the general OOP principles.

I think that in most cases you'll have to make up your own curriculum and fill it with bits and pieces from books you like :) There is rarely a perfect fit.

  • $\begingroup$ Welcome to Computer Science Educators. We're always glad to get more educators. I hope we hear more from you in the future! $\endgroup$
    – Ben I.
    Commented Apr 12, 2018 at 12:43

The best book I know that follows fairly closely to this format is Polymorphism: As It Is Played, which observes two students slowly build out a calculator. True to form, the book takes the reader deeply into the mindset and core philosophy of OO. It's a quick read with very short pages; it took me a few hours.

The book also explores some important areas of the software development process. Paired programming, which runs through the entire book, works well in the classroom (there are many questions about it here on this site), and aspects of Agile development are also explored.


There is “A touch of class” by Bertrand Myers. It is a very good book, at least a semester worth of learning in it.

I did not get OO, until I read it. I had previously done C++, java, C#, and some python. But when I read this book, I started to program OO properly.

The book uses a language called Eiffel. It is a good teaching language, and also used in large systems, safety and mission critical systems. It is probably quicker to learn Eiffel then another language (or two), than try to learn other OO languages from scratch. (This is the authors clame, and my experience as a learner)


I found a book online (Object Oriented Programming using C# by Simon Kendal), and it has an example of designing a simple administration system using OOP principles (Chapter 6: Object Oriented Software Analysis and Design).

It is not deep enough but could be used as a starting point.

I leave the question open for the time being as it can have more suggestions. Please feel free to add more and more resources.


Introduction to Programming with Greenfoot by Michael Kölling might be what you want. Michael has a great grasp of OO and has built a great tool (Greenfoot) for beginners to explore it. The book has a number of simulations that are used to develop Java programming with OO principles integrated.

The first four chapters (especially) of Karel J Robot by Bergin, Stehlik, Roberts, and Pattis also present OO principles in a simulation context, but also using a few simple design patterns. The Karel book has analogues for Python and Ruby also. Karel can be used within Greenfoot if desired or in other IDEs.

There is a teacher resource for Greenfoot (https://greenroom.greenfoot.org) that has many projects for use within the greenfoot system. These are also simulations and show interesting objects moving and interacting on the screen (the World). New worlds can be created (inheritance) and new Actors as well.

It is easy to integrate design patterns into the curriculum with these tools since the supplied software infrastructure means that the student isn't starting with an empty screen but with a well defined framework in which to develop the ideas. So, the student starts at a higher level of abstraction than the language primitives. Classes, methods, interactions, composition, delegation, etc. are natural topics that can be explored early in the student's learning.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.