| Relationship | Description |
|---|---|
| Dependency | uses a |
| Generalization | is a |
| Association | has a |
| Aggregation (Association) | has a |
| Composition (Association) | has a |
Subtype Requirement: Let ϕ(x) be a property provable about objects x of type T. Then, ϕ(y) should be true for objects y of type S where S is a subtype of T. [Liskov,Wing'94]
The purpose of generalization is to solve design problems. If you don't have a design problem, don't use generalization.