An aggregation is a has-a relationship, e. g. a person has an address. You implement that by a reference from one class (Person) to another class (Address) so that Address is an attribute of Person. See: http://www.javatpoint.com/aggregation-in-java A composition is defined as an is-a relationship, e.g. a person is a programmer. That can be implemented as an inheritance (Programmer extends Person).