A class is an abstraction from a set of conceptual entities in a domain so that all the conceptual entities in the set have the same characteristics, and they are all subject to and behave according to the same rules and policies. – Executable UML, Mellor/Balcer
xUML uses the definition in Executable UML: A Foundation for Model Driven Architecture, Addison-Wesley 2002 above.
A Class is represented symbolically on a UML class diagram as a rectangle with separate rectangular compartments for a name, attributes and other model properties. But, ceci n’est pas une class. This symbol is only a visual representation of a Class, and is not the Class itself. Clearly, a Class may be represented many other ways, such as textually.
This is the name that appears inside the top compartment of a class rectangle on a class diagram. Naturally, the name may appear many other places. It should be descriptive relative to the domain subject matter.
Subsystem Element.Domain — This Class is a Subsystem Element in this Domain.
Subsystem Element.Number — The Subsystem Element number of this Class.
- Domain + Name
Each Class has a unique name within a Domain.
- Domain + Element
Elements are all numbered uniquely within a Domain.
Class is a Specialized or a Non-Specialized Class
If a Class participates in at least one Generalization, it is a Specialized Class. Otherwise, it is a Non-Specialized Class. A Specialized Class may play the role of Superclass or Subclass in each Generalization in which it participates. A Non-Specialized Class may not be a Superclass or Subclass in any Generalization.
The distinction is relevant in the interpretation of a Class instance. While an instance of a Non-Specialized Class is always a complete Object, an instance of a Specialized Class represents only some Facet of an Object.