• association - is a relationship between two objects (e.g. owners feed pets, pets please owners)
  • aggregation or composition - are subsets/special-cases of association (e.g. a tail is a part of both dogs and cats)
    • aggregation implies a relationship where the child CAN exist independently of the parent (e.g. Class (parent) and Student (child). Delete the Class and the Students still exist)
    • composition implies a relationship where the child CANNOT exist independent of the parent (e.g. House (parent) and Room (child). Rooms don’t exist separate to a House)
      • is a subset/special-case of aggregation
  • generalization - uses “is-a” relationship (e.g. cat is a kind of pet)
  • specialization - opposite of generalization
  • realization - is a relationship between the blueprint class and the object containing its respective implementation level details