Association is a relationship between two objects, but the relationship between them could be multiple types. It could be one-to-one, one-to-many, many-to-one, many-to-many. In other words, the relationship is very flexible(灵活的) and loose(松散的).
In software programming, an object may use functions provided by an object of another class, this kind of relationship is called association.
Aggregation and Composition are subsets of association.
Aggregation is a subset(子集) of association. It depicts(描述) a directional(有方向的) association between two objects, which means it is an association that represents(代表) a part-whole or part-of relationship. But this relationship is not too restrictive, which means two objects can exist without each other.
Composition is a subset of aggregation. This relationship is most restrictive(严苛的), which means it represents an ownership(拥有) relationship. The contained(被包含的) object cannot exist without the existence(存在) of container(容器、拥有者) object.
The relationship between Car and its Engine is called Composition. Because its Engine cannot be used in any other car.
The relationship between Classroom and Students is called Aggregation. Because each one can still exist without each other.