Eric Lippert demonstrates a very basic OOP explores the problem “a player can use a weapon, a wizard is a kind of player, a staff is a kind of weapon, but a wizard can only use a staff””.
Seems easy enough? Let’s see…
- Wizards and warriors, part one
- Wizards and warriors, part two
- Wizards and warriors, part three
- Wizards and warriors, part four
- Wizards and warriors, part five
Note: this is not about swords and sorcery, it’s just an example. Organizing classes, and more than one way to violate the Liskov Substitution Principle.