* Created when:
- A class has a complex life cycle
- An instance of a class may update its attributes in a number of ways through the life cycle
- A class has an operational life cycle
- Two classes depend on each other
- The object's current behavior depends on what happened previously