This blog is for everyone who knows what is object oriented programming or wants to know.
TLDR: Check out this educational application where you can learn OOP and having fun at the same time
Object oriented programming (OOP) is very important concept for every software engineer. I am not going to write in this blog what OOP is (I want to save that for another blog or video series)
Problem with OOP is that it is not trivial to understand. When someone wants to learn OOP, first he or she will usually read some long and hard to understand text with some pictures about basic fundamentals of OOP. That is fine of course, but we learn best by doing though. We may never understand OOP until we have programmed a few projects using ‘it’.
In my final thesis at Slovak Technical University I found that basics concepts like abstraction, inheritance and polymorphism are the hardest to understand. Here comes this educational game which I believe can help to understand these concepts from looking at it from different perspective. You can learn basic concepts and practice them in this application. It is definitely not same as programming, which I encourage you to do the most of the time. However it provides another way to learn and practice OOP concepts. Together with standard learning and programming this application creates a great way how you can better understand abstraction or inheritance.
This educational application has 4 levels
Each level has 3 phases
Intro represents necessary minimum information to explain the concept. It is basically a preparation for the game part. Intro consists of text and images and has usually 4-6 pages (like you can see in the examples).
The fun part is a drag and drop game field. On the left we can see Level Challenge instructions. We can drag anything from the top to the mid area. On the right we can see an Inspector which shows an active construct (property, class, interface etc.) with every information available on the construct.
The goal is to follow the instructions and create objects you need, name them correctly etc.
Let’s see more examples.
In the last phase we have a quiz. This is a validation phase where we test what we have learned. Test consist of a questions and answers (sometimes more than one answer is correct). In this phase we can recapitulate what we have read in intro and practiced in the second phase.
When I’ll play this game, will I understand OOP? Of course not. But will it help me to understand and see those abstract concepts from different perspective? Definitely!
To quote myself, This game is for everyone who is learning OOP and wants to see so many abstract concepts in a different perspective. It is also beneficial for those, who use OOP in their daily work, as an exercise to deepen their knowledge.
Hopefully this educational application can help as an addition to the traditional teaching/learning methods. However this game is not intended to be a main source of learning OOP. As with everything else, you learn by doing. I therefore encourage everyone, who are struggling to grasp OOP concepts, to practice these concepts with programming.
You can play this game here.