An Object Oriented Approach to the Pokemon World to demonstrate the OOP concepts and SOLID principles in action.
- represents a real world Pokemon.
- has Name, Ability, Level, Attacks, Maximum and Current Health as its attributes.
- represents an ability that a Pokemon possess.
- has Name and Attack Unlocker as its attributes.
- represents an Attack a Pokemon has in its arsenal.
- has Name, Message and Intensity as its attributes.
- represents a Potion a Pokemon can use to heal itself.
- has Name and Multiplier as its attributes.
- represents a Breeder who collects Pokemons.
- has Name, Pokemons and Potions as its attributes.
- has a repository of Attacks of all abilities.
- uses a singleton pattern.
- returns the appropriate Attack when its name is provided.
- has a repository of Potions of all abilities.
- uses a singleton pattern.
- returns the appropriate Potion when its name is provided.
- unlocks attacks for a given Pokemon based on its levels.
- has a mapping of Pokemon Level to Attacks.
- has a set of child attack unlockers based on the Pokemon Ability.
- follows a singleton pattern.
- has a mapping of Ability and its advantage over other Abilities.
- used to determine the attack effect on a given Pokemon.