Lesson 9
No Object is an Island
Chapter 2: Object interaction
Using other objects
In object-oriented terms, hero.attack(enemy) is an example of a dependency relationship between two object instances.
In this example, hero.attack() takes another object (enemy) as an input argument, and can use any of the second object’s attributes/methods as necessary. Basically, hero is dependent on enemy because hero uses enemy, and can ask enemy to perform an action on its behalf (e.g. enemy.reduce_health()).
Here is a more concrete example of how the attack() method might be implemented for the Hero class.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
The beauty is that the Hero instance does not need to know how an Enemy will reduce its own health. All it knows that enemy will reduce its health if its .reduce_health() method is invoked. So hero only needs to ask enemy to do it (and trust that enemy will do what it is supposed to do)! The details of these are abstracted from hero. Of course, if enemy decides to rename or remove the .reduce_health() method one day, then hero will also have to change it! Which is why hero is considered to be dependent on enemy.
In a class diagram, dependency is represented with a dashed line between two classes.
