Lessons In Object Oriented Programming With Pokemon

Kudzayi Bamhare
3 min readSep 8, 2023

--

A Screenshot From Pokemon Legends: Arceus For The Nintendo Switch

Object-Oriented Programming (OOP) can be a daunting topic for newcomers. When I first delved into OOP, it felt complex and hard to grasp. But an unexpected source, Pokémon, helped me understand it all. In this blog post, I’ll simplify some OOP principles using the Pokémon universe as an example, specifically focusing on how a developer might implement the battle system in code. This is also an oversimplified example of the battle system so Pokemon purists, please don’t cancel me!

Everything is an Object

It might sound perplexing when you hear “everything is an object” in OOP. However, let’s run with it. In the Pokémon world, nearly everything, including Pokémon themselves, can be encapsulated into objects with attributes and functions. To illustrate, I’ll begin by creating a Pokémon class with a single attribute, a string variable called “name.” We can initialize it with a constructor, and voilà, a new Pokémon is born!

Constructor And Methods For The Pokemon Class

What Does a Pokémon Do?

Objects have functions, just like humans walk, dogs bark, and cats.., cats commit sacrilege. In our Pokémon example, a Pokémon will have two methods: attack and take damage. By adding these methods, we end up with a fully functional Pokémon ready for battle. Executing this code in the main file reveals our Pokémon in action.

Intializing Pokemon Class And Using Its Features

Super and Subclasses

Now, let’s delve into the concept of inheritance and method overriding. Pokémon are type-specific, with various strengths and weaknesses. For instance, fire Pokémon are weak against water but strong against fairy types. To represent this, we create a Fire Pokémon class and set its attributes accordingly. These attributes are private, adhering to the principle of data hiding in OOP.

By using the “extends” keyword, we establish inheritance. The Fire Pokémon class inherits properties and behaviors from the generic Pokémon class, eliminating the need to rewrite common code. Since Pokémon attack and take damage universally, we want our Fire Pokémon to inherit these behaviors.

Pokemon Type Explanation From Pokemon Legends: Arceus

Overriding

With elemental types, we must consider how type strengths, weaknesses, and resistances affect our methods. We introduce an element attack method unique to our Fire Pokémon class. This method checks the Pokémon’s types to determine the effectiveness of an attack. Additionally, we override the takeDamage() method to account for type-specific damage calculations.

Fire Pokemon Class

Method overriding, a key concept in polymorphism, allows objects of different classes to be treated as objects of a common superclass. It empowers us to create multiple Pokémon type subclasses and customize inherited methods to meet unique requirements.

By connecting OOP principles to Pokémon battles, we’ve made these concepts more relatable and easier to understand. Whether you’re a coding novice or a seasoned developer, bridging real-world examples with programming concepts can be a powerful learning tool.

Initializing Fire Pokemon And Testing It’s Features
It’s super Effective!

--

--

Kudzayi Bamhare

Habitual code and words writer! Sharing my experiences with tech and other things I enjoy