UML Classifier
Classifier is an abstract metaclass which describes (classifies) set of instances having common features. A feature declares a structural or behavioral characteristic of instances of classifiers.
More formally, classifier is (extends):
UML classifier is type, templateable element, redefinable element, and a namespace.
Namespace is a named element that can own (contain) other named elements. As a namespace, classifier can have features.
Type represents a set of values. A typed element that has this type is constrained to represent values within this set. As a Type, classifier can own generalizations, thereby making it possible to define generalization relationships to other classifiers.
Redefinable element is an element that, when defined in the context of a classifier, can be redefined more specifically or differently in the context of another classifier that specializes (directly or indirectly) the context classifier. As a redefinable element, it is possible for classifier to redefine nested classifiers.
Though classifier is an abstract model element and thus needs no graphical notation, UML provides notation which is used as default notation for any concrete subclass of classifier. Some specializations of classifier have their own notations.
The default notation for classifier is a solid-outline rectangle containing the classifier’s name, and optionally with compartments separated by horizontal lines containing features or other members of the classifier. The specific type of classifier can be shown in guillemets above the name.
Capitalize classifier name (i.e., begin with an uppercase character), use boldface and center the name. Center keyword (including stereotype names) in plain face within guillemets above the classifier name.
Any compartment may be suppressed. A separator line is not drawn for a suppressed compartment. If a compartment is suppressed, no inference can be drawn about the presence or absence of elements in it. Compartment names can be used to remove ambiguity, if necessary.
Begin attribute and operation names with a lowercase letter. Multi-word names are often formed by concatenating the words and using lowercase for all letters except for upcasing the first letter of each word but the first. Left justify attributes and operations in plain face.
The type, visibility, default, multiplicity, property string may be suppressed from being displayed, even if there are values in the model. The individual properties of an attribute can be shown in columns rather than as a continuous string.
Some examples of classifiers are: class, interface, association, data type, actor (subclass of behaviored classifier), use case (subclass of behaviored classifier), component (subclass of class), collaboration, artifact, node, signal.
The most important UML 2.5 classifiers - class, interface, data type, component, collaboration, use case, etc.
Abstract Classifier
Abstract classifier does not provide a complete description of features and usually can’t be instantiated. It is intended to be specialized (subclassed) by other classifiers. Classifiers by default are concrete (not abstract).
The name of an abstract classifier is shown in italics. An abstract classifier can be also shown using the keyword {abstract} after or below the name of the classifier.
Final Classifier
In UML 2.4 classifier has Boolean attribute isFinalSpecialization. If true, the classifier cannot be specialized by generalization and is called final classifier.
Final classifier can’t be specialized (subclassed) with generalization by other classifiers. Classifiers by default are not final. The parents of a classifier must be non-final.
UML provides no visual notation for final classifiers. What is even more confusing is that classifier is redefinable element and as such inherits Boolean attribute isLeaf - which indicates whether it is possible to redefine the element in subclasses or not. The need to have both isFinalSpecialization and isLeaf is a mystery.
Property