UML class notation

Sometimes it’s a little confusing remember what the proper UML notation is for what, ie: composition vs aggregation. Below is a brief summery of what a dig around on Wikipedia resulted in.

Association
This defines a relationship between classes of objects which allows one object instance to cause another to perform an action on its behalf.
Notation: A solid line between two classes.
association

Composition
Is a way and practice to combine simple objects or data types into more complex ones. A class that is a composit of another class has a “has an” relationship with the other class. Sometimes an issue of ownership arises: when a composition is destroyed, should objects belonging to it be destroyed as well? If not, the case is sometimes called aggregation.
Notation: a solid line with a filled diamond at one end (the class that “has” the other class).
composition
(Don’t mind the typo in “carburator”, it’s not mine 😉 )

Aggregation
Aggregation is a form of object composition. It differs from ordinary composition in that it does not imply ownership.
Notation: a solid line with a closed empty diamond at one end (the class that “has” the other class).
composition

Specialisation
Inheritance or specialisation is a way to form new classes (instances of which are called objects) using classes that have already been defined. The new classes, known as derived classes, take over (or inherit) attributes and behavior of the pre-existing classes, which are referred to as base classes (or ancestor classes). It is intended to help reuse existing code with little or no modification.
Notation: A closed empty arrow (The arrow head is at the class where you inherit from).
inheritance
Links
Association
Composition
Aggregation
Specialisation