Fact-checked by Grok 2 weeks ago

Class diagram

A class diagram is a type of static structure diagram in the (UML) that describes the structure of a by showing its , their attributes, operations (or methods), and the relationships among those classes. Class diagrams play a central role in object-oriented by providing a visual representation of the static of a , enabling designers to model entities, their properties, behaviors, and interactions without specifying dynamic behavior. They are essential for , design, and , facilitating communication between developers, architects, and stakeholders while serving as a blueprint for implementation in languages like or C++. Key elements of a class diagram include classes, depicted as rectangles divided into three compartments—the top for the class name, the middle for attributes (e.g., data members with visibility indicators like public or private), and the bottom for operations (e.g., methods with parameters and return types). Relationships are shown via connecting lines, such as associations (general links between classes), generalization (inheritance, using a hollow arrow), aggregation and composition (whole-part relationships, with diamond symbols), and dependencies (one class relying on another, shown as a dashed arrow). These diagrams adhere to the UML standard maintained by the Object Management Group (OMG), with version 2.5.1 being the current specification as of 2017.

Overview

Definition and Purpose

A class diagram is a static structure diagram in the (UML) that depicts the static aspects of a system by illustrating its classes, along with their attributes, operations, and relationships between classes. It provides a blueprint for the system's at the level of classes and interfaces, including their features, constraints, and associations. As defined in the UML specification maintained by the (OMG), class diagrams are part of the graphical notation for visualizing, specifying, constructing, and documenting software artifacts. The primary purposes of class diagrams include modeling concepts to capture the essential elements of a problem space, designing system architecture by outlining how es interact, documenting existing code structures for and , and facilitating communication among stakeholders such as developers, analysts, and clients. These diagrams enable teams to represent object-oriented designs in a standardized way, supporting the transition from requirements to implementation. Key benefits of using class diagrams lie in their ability to visualize inheritance hierarchies, associations, and dependencies, which helps in identifying design flaws, redundancies, or inconsistencies early in the development lifecycle before coding begins. For example, a basic diagram for a "" might show the with attributes like speed (of type ) and operations such as accelerate(speed: int): void, providing a clear view of the object's structure and behavior without delving into dynamic interactions.

Historical Development

The development of class diagrams traces its roots to the emergence of object-oriented modeling methods in the late 1980s and early 1990s, which sought to represent software systems through classes, attributes, and relationships. Pioneering approaches included the Booch method by Grady Booch, introduced in his 1991 book Object-Oriented Design with Applications, which used cloud-like notations for classes and emphasized iterative design with graphical representations of object interactions and hierarchies. Similarly, James Rumbaugh's Object Modeling Technique (OMT), detailed in the 1991 book Object-Oriented Modeling and Design, employed entity-relationship style diagrams to depict classes, their attributes, operations, and associations, influencing static structure modeling. Ivar Jacobson's Object-Oriented Software Engineering (OOSE), outlined in his 1992 book Object-Oriented Software Engineering: A Use Case Driven Approach, incorporated object diagrams that evolved into class representations, focusing on use cases and object lifecycles. These methods proliferated as object-oriented programming gained traction, but their notations varied, prompting calls for unification. Earlier influences on class diagram concepts came from structured object-oriented methods like Shlaer-Mellor and . The Shlaer-Mellor approach, introduced in Sally Shlaer and Stephen Mellor's 1988 book Object-Oriented Systems Analysis, utilized Object-Oriented Design Language (OODLE) diagrams to model classes as data stores with information structures, emphasizing executable models and state transitions, which laid groundwork for static class representations. The method, developed by Derek Coleman and colleagues and published in their 1994 book Object-Oriented Development with Applications, integrated and phases with class diagrams that included roles, scenarios, and visibility, bridging structured and object-oriented paradigms to support collaborative modeling. These precursors highlighted the need for standardized notations to facilitate communication in large-scale software projects. The standardization of class diagrams occurred through the (UML), culminating in UML 1.0 proposed to the (OMG) in January 1997 by the UML Partners consortium, including Rational Software leaders Booch, Rumbaugh, and Jacobson. Adopted by OMG in November 1997 as UML 1.1, it established class diagrams as a core static structure diagram type for depicting classes, interfaces, relationships, and collaborations in object-oriented systems, unifying prior notations into a vendor-neutral standard. This marked a pivotal shift, enabling widespread adoption in for visualizing system architecture. Subsequent evolutions refined class diagrams within UML. UML 2.0, finalized by in July 2005, introduced enhancements such as improved support for —allowing custom extensions to metamodel elements—and profiles, which enable domain-specific adaptations through tagged values and constraints, facilitating more flexible modeling of complex systems while maintaining . These changes addressed limitations in earlier versions by aligning UML more closely with the Meta-Object Facility (MOF) for better extensibility. UML 2.5, released by in June 2015, focused on refinements for a lighter, more readable specification, reorganizing content to reduce redundancy and clarify notations without altering core semantics, making class diagrams easier to apply in agile and model-driven development. As of 2025, UML remains under ongoing maintenance by , with the current version at 2.5.1, emphasizing integration with digital tools and extensions like SysML v2.0, adopted in July 2025, which builds on UML class diagrams for by adding blocks and requirements modeling to support (MBSE). This evolution ensures class diagrams continue to serve as a foundational tool in software and amid advancing automation and needs.

Core Elements

Class Notation

In UML class diagrams, a is visually represented as a solid-outline , which may be divided into up to three compartments separated by horizontal lines to organize its contents. The top compartment contains the class name, the middle one lists attributes, and the bottom one enumerates operations, though compartments can be suppressed or expanded as needed for clarity. This rectangular notation provides a compact way to depict the static structure of a without implying implementation details. The class name compartment is the mandatory top section, where the name is displayed in bold font and centered horizontally to emphasize its significance as the primary identifier. For abstract classes, the name is rendered in italics to indicate that the class cannot be instantiated directly. If the class represents static features or is part of a utility context, the name may be underlined. Stereotypes offer a mechanism to extend the semantics of a class without altering the core UML metamodel, denoted by guillemets enclosing the stereotype keyword, such as <<entity>> or <<interface>>, placed above the class name compartment. This notation allows modelers to apply domain-specific categorizations, like <<persistent>> for classes involved in data storage. Optional iconic representations can enhance readability in domain-specific models, where a simple icon or symbol (e.g., a gear for a utility class) is placed in the top-right corner of the class rectangle alongside the name. These icons are not part of the standard UML notation but are permitted to provide intuitive visual cues without conflicting with the primary rectangular form. Naming conventions for follow UML guidelines to ensure and uniqueness: class names use PascalCase (e.g., BankAccount), starting with an uppercase letter, and must be unique within their enclosing or package to avoid in the model. This approach promotes clear, readable identifiers that align with practices.

Attributes

In UML class diagrams, attributes represent the components or properties of a , defining the of its instances. They are displayed in the middle compartment of the , positioned below the class name and above the operations compartment, with each attribute listed on a separate line for clarity. The standard notation for an attribute is visibility name : type = defaultValue, where visibility is indicated by symbols such as + for , - for , # for protected, or ~ for package; the type specifies the (e.g., int, String); and an optional default value provides an initial assignment. For example, -age: [int](/page/INT) = 0 denotes a private integer attribute initialized to zero. This syntax allows modelers to capture essential structural details without ambiguity. Derived attributes, which are computed from other attributes or relationships rather than stored directly, are prefixed with a forward slash (/) in their notation. For instance, /fullName: [String](/page/String) indicates a derived string attribute calculated, perhaps by concatenating first and last name attributes. These are useful for representing dependent values in the model. Static attributes, shared across all instances of the rather than belonging to individual objects, are denoted by underlining the entire attribute string in the diagram. An example is _totalInstances: int, underlined to signify class-level scope. Visibility indicators, such as + or -, apply similarly to static attributes to control access. Read-only attributes, which cannot be modified after initialization, are annotated with the property {readOnly} appended to the attribute notation. For example, id: [String](/page/String) {readOnly} specifies an immutable identifier. This enforces constraints on the attribute's mutability within the model's semantics. Although multiplicity is more commonly associated with relationships, it can be applied to individual attributes to indicate the allowable number of values, typically enclosed in square brackets after the type (e.g., options: [String](/page/String) [0..1] for an optional single value). This usage is rare for simple attributes but supports modeling optional or variable in structured data.

Operations

In UML class diagrams, operations represent the behaviors or methods that a class can perform, depicted in the third compartment of the class rectangle, located at the bottom of the class symbol. This compartment lists operations in a specific syntactic format: operationName(parameterList): returnType, where the parameter list includes zero or more parameters separated by commas, and the return type is optional if void. For example, an operation to retrieve an age might be notated as getAge(): , illustrating a parameterless method returning an integer value. Parameters in operations are specified with their direction (in, out, inout, or ), name, type, and optional default value, listed in the order they appear in the signature. The direction indicates how the parameter interacts with the operation: 'in' for input only, 'out' for output only, 'inout' for both, and '' for the result. An example is setName(in newName: = ''): void, where 'in' specifies an input parameter of type with a default empty , and the operation nothing. Multiplicity or effects can also be annotated for parameters, but the core notation prioritizes clarity in and typing. Abstract operations, intended for implementation in subclasses, are denoted by italicizing the operation name or the entire signature, signifying that the operation is declared but not defined in the current class. This notation supports polymorphism in inheritance hierarchies, where subclasses provide concrete realizations. For instance, an abstract draw() operation in a Shape class would appear in italics to indicate it must be overridden. Static operations, which belong to the class rather than instances and can be invoked without creating an object, are underlined in the notation. This distinguishes class-level behaviors, such as utility methods, from instance methods; for example, Math.sqrt(value: double): double would be underlined to show it operates on the class scope. Static operations are indicated by underlining the entire operation signature in the diagram. Exceptions that an may raise are documented using a tagged value in curly braces immediately following the , such as calculate(): {throws ArithmeticException}. This {throws ExceptionType} tag lists possible runtime errors, aiding in understanding the 's without specifying full exception semantics. Multiple exceptions can be comma-separated within the braces.

Member Properties

Visibility Indicators

In UML class diagrams, indicators specify the accessibility of class members such as attributes and , controlling which elements can access them based on their and relationships. These indicators are represented by specific symbols placed before the name of the member in the class notation. The four standard kinds defined in UML are , , protected, and package. The symbols for these visibility kinds are as follows: '+' for visibility, which allows access from any element in any ; '-' for visibility, restricting access to only within the owning ; '#' for protected visibility, permitting access from the owning class and its subclasses; and '~' for package visibility, limiting access to elements within the same package as the owning class. For example, an attribute might be notated as -balance: [double](/page/Double), indicating private visibility for the balance attribute of type double. Similarly, operations follow the same convention, with the symbol preceding the operation name, such as +getBalance(): [double](/page/Double) for a getter . If no visibility symbol is specified for a class member, the default visibility is public, allowing access from any element. Visibility indicators also apply to relationships in class diagrams, particularly on association ends, where they denote the accessibility of the referenced element as a property. For instance, a private reference in an association might be shown with a '-' symbol near the end connected to the target class, restricting access to that reference from outside the owning class. In UML 2.x, extensions to visibility notation include the use of strings enclosed in curly braces {} after the member declaration to specify additional constraints, though core remains governed by the standard symbols. While custom visibilities are not directly supported beyond the four kinds, tags like {unique} can complement by adding qualifiers such as to , including those on ends.

Scope Modifiers

In (UML) class diagrams, members such as attributes and operations can exhibit one of two scopes: instance scope or classifier scope. Instance scope is the default, wherein each object (instance of the class) maintains its own independent value or behavior for the member, allowing for individualized state or actions per object. This scoping is essential for modeling object-oriented principles like encapsulation, where attributes like an employee's salary vary across instances but remain private to each. Classifier scope, in contrast, applies to members shared across all instances of the , akin to static members in programming languages. These features belong to the itself rather than to individual objects, enabling shared or functions that do not depend on instance-specific . For example, a static attribute might track the total number of instances created (e.g., a incremented upon object ), while a static operation could provide -level utilities like mathematical functions in a Math . Such scoping supports efficient modeling of global or collective behaviors without requiring object . The notation for scope in class diagrams is straightforward and applies uniformly to both attributes and operations. Members with instance use standard, non-underlined text for their names and signatures. Classifier-scoped members are denoted by underlining only the name (and parameters if applicable), without affecting other elements like types or symbols; for instance, an attribute might appear as totalInstances: [Integer](/page/Integer) for instance or _totalInstances: [Integer](/page/Integer) for classifier . This underlining convention, inherited from earlier UML versions, ensures visual distinction while maintaining diagram clarity. The implications of classifier scope extend to design and implementation: these members affect or are accessible to all instances uniformly, promoting reuse for constants, counters, or factory methods, but requiring careful management to avoid unintended global side effects. Unlike visibility indicators (e.g., + for public or - for private), which control access permissions, scope determines binding level and is orthogonal to visibility—a member can thus be both private and classifier-scoped, restricting access to the shared feature while keeping it instance-independent. This separation allows precise modeling of complex systems where access control and scoping needs intersect without overlap.

Relationships

Association and Multiplicity

In UML class diagrams, an represents a structural between two classifiers, indicating that instances of those classifiers are connected or interact in some way. The notation for an association is a solid line connecting the classifier symbols, with an optional association name placed near the center of the line to describe the nature of the connection. Role names may be specified at each end of the association to denote the specific role played by instances of the connected classifiers, such as "employer" near an Employee class in a link to a class. Multiplicity specifies the number of instances that may participate in from each end, constraining the of the . It is denoted by textual indicators placed near each end, using formats like a single number for exact count (e.g., "1" for exactly one instance), ranges for variable bounds (e.g., "0..1" for zero or one, "1.." for one or more), or "" as shorthand for "0..*" (zero or more). Additional modifiers can indicate ordered collections with {ordered} and uniqueness with {unique}, ensuring the related instances are sequenced or distinct as needed. Navigability determines the direction in which the can be traversed, reflecting whether instances of one can or instances of the other. By default, associations are bidirectional with no s, implying mutual ; a filled at one end indicates unidirectional from the source to the target . A small (×) at an end denotes non-, preventing traversal in that direction. A qualified association refines a standard association by including a qualifier attribute on one end, which acts as a to select specific instances from the target set, often reducing multiplicity to 0..1 or 1 for efficient lookups. The notation features a small attached to the qualified end of the line, containing the qualifier attribute name (e.g., [ISBN] for selecting a Book instance in a Library-Book ). For instance, a class might qualify its employees via a [SSN] attribute to uniquely identify one employee per . Reflexive associations model relationships where instances of a single connect to other instances of the same , such as a self-referential link for hierarchical structures. The notation is a solid line originating and terminating at the same classifier, potentially with multiplicity, role names, and adornments; for example, a class might have a reflexive labeled "parentOf" with multiplicity 0..* to represent family trees. This allows representation of intra-class connections without introducing additional classifiers.

Aggregation and Composition

In UML class diagrams, aggregation represents a "whole-part" or "has-a" relationship where the part can exist independently of the whole, indicating shared ownership among multiple wholes. Graphically, it is denoted by a hollow attached to the whole at one end of line, with the line connecting to the part . For example, a might aggregate instances, as wheels can be detached and shared or reused with other vehicles without affecting their existence. Composition, in contrast, depicts a stronger form of whole-part relationship with exclusive ownership, where the lifecycle of the parts is tightly bound to the whole—parts are created with the whole and destroyed when it is. It is illustrated by a filled black diamond on the whole side of the association line. A classic example is a composing an , where the engine cannot exist separately and is integral to the car's structure, ceasing to exist if the car is destroyed. Multiplicity on the whole side for composition is typically 1, ensuring exclusive control and preventing sharing. The key distinction lies in ownership strength: aggregation implies a loose, non-exclusive "has-a" allowing parts independent lifecycles and potential sharing, while composition enforces a tight "contains-a" bond with coincident lifecycles and no sharing. Additionally, compositions form directed acyclic graphs to avoid circular dependencies that could complicate deletion semantics. These relationships build on basic by adding semantics, but without implying or mere usage.

Generalization and Realization

In UML class diagrams, represents a taxonomic "is-a" between a more general classifier, known as the superclass or parent, and a more specific classifier, known as the subclass or child. This enables the subclass to inherit structural and behavioral features, such as attributes and operations, from the superclass, promoting reuse and establishing a of classifiers. The notation for is a solid line ending in a hollow triangle arrowhead, directed from the subclass toward the superclass. UML supports multiple inheritance through generalization, allowing a subclass to extend multiple superclasses simultaneously, which is depicted by multiple generalization arrows converging on the subclass. This can lead to complex hierarchies, often resolved using generalization sets to manage overlapping or disjoint specializations, though care must be taken to avoid ambiguities like the diamond problem in implementation. Abstract classes and interfaces in generalization hierarchies are indicated by rendering their names in italics or annotating them with the {abstract} keyword, signifying that they cannot be instantiated directly and serve as blueprints for concrete subclasses. Subclasses may override or refine inherited operations from the superclass, explicitly marked with the {redefines} constraint to indicate that the subclass operation specializes the parent's behavior while conforming to its contract. Realization, in contrast, models an abstraction relationship where a client classifier implements or refines a specification provided by a supplier classifier, often an interface defining a contract of operations and properties. This is particularly used for interface realization, where a class commits to fulfilling the interface's requirements, such as implementing all specified operations, as in a class realizing the Runnable interface to enable threading in Java. The notation consists of a dashed line with a hollow triangle arrowhead pointing from the implementing class (client) to the interface (supplier), emphasizing the one-way refinement without inheritance of implementation details. Unlike generalization, realization does not imply substitutability in the same hierarchical sense but ensures contractual compliance, supporting design patterns like adapters or strategies.

Dependency

In UML class diagrams, a dependency relationship represents a weaker form of where one element (the client) relies on another (the supplier) for its or structure, but without implying or a permanent structural link. This is typically depicted as a dashed line with an open arrowhead pointing from the client to the supplier, optionally annotated with a such as «use» or «import» to specify the nature of the dependency. Dependencies can manifest at various levels and types, including usage dependencies where the client requires the supplier at to perform operations, such as passing an object of the supplier as a , and dependencies that involve or visibility extensions between packages or elements. At the instance level, the indicates that objects of the client temporarily utilize objects of the supplier during execution, for example, when a in one invokes a from another without maintaining a . In contrast, class-level dependencies occur when the client's structure or operations the supplier in a more static way, such as using the supplier's type in attribute declarations or signatures, potentially affecting if the supplier changes. The keyword «use» may be applied optionally to clarify usage types, emphasizing needs over structural integration. To maintain clarity in diagrams, dependencies should be used judiciously for non-structural, changeable relationships and avoided for persistent or navigational ties, where an would be more appropriate to denote fixed links between classes. Overuse of dependencies can clutter diagrams and obscure stronger relationships, so they are best reserved for scenarios like temporary collaborations or external library usages that do not define the core .

Advanced Features

Stereotypes

Stereotypes provide a key extensibility mechanism in UML for customizing the semantics of model elements, such as classes, without altering the core language definition. They allow modelers to introduce domain-specific or methodology-specific variations by associating additional meaning, properties, or notations with standard elements. As defined in the UML Superstructure Specification, a stereotype is a profile construct that specifies extensions to a metaclass, enabling the creation of new element types that inherit the structure of their base but add tailored semantics. In class diagrams, stereotypes are applied to classes to refine their role or behavior in a particular context. Standard UML stereotypes for classes include , which denotes a class that declares public operations without providing their implementation, focusing solely on contracts for interacting components; , which represents an abstract specification of common characteristics for a set of objects, often used in foundational modeling; and «utility», applied to classes that encapsulate global variables and procedures without instances, typically for stateless helper functions. These predefined stereotypes, outlined in the UML , facilitate common modeling needs like defining service contracts or auxiliary computations in class diagrams. Beyond standard , UML profiles enable the creation of custom ones tailored to specific domains or processes, extending semantics for specialized applications. For instance, in object-oriented analysis, the «entity» stereotype may be used for representing persistent data objects with and , distinguishing them from or in robustness diagrams. Such profile-based extensions are grouped into reusable packages, allowing consistent application across models while maintaining compatibility with core UML. The notation for stereotypes in class diagrams places the keyword within guillemets («stereotype») directly above the name compartment. Multiple stereotypes can be listed if applicable, separated by commas. Additionally, stereotypes often include tagged values—key-value pairs in curly braces, such as {persistence= database }—to specify further properties or constraints associated with the extension. This notation integrates seamlessly with notation, appearing in the name compartment without disrupting the standard rectangular shape. Stereotypes enhance the expressiveness of diagrams by supporting lightweight , making them integral to approaches like (), where they bridge platform-independent and platform-specific models. For example, a stereotyped as «actor» can indicate an external relevant to interactions, tying structural models to behavioral ones without requiring new diagram types. This mechanism ensures UML remains adaptable to evolving practices while preserving its foundational rigor.

Constraints and Notes

In UML class diagrams, constraints specify conditions, restrictions, or assertions that must hold true for model elements such as attributes, operations, or associations. These are commonly notated using curly braces enclosing a textual expression directly adjacent to the constrained element; for instance, an attribute might appear as age: [Integer](/page/Integer) {age > 0} to enforce that the value is positive. For more intricate rules, the (OCL) provides a formal, type-safe mechanism to express constraints precisely, often prefixed with the element name or using self to reference the instance context, such as {[self](/page/Self).age > 0} on an attribute. OCL constraints are particularly useful for defining navigable paths across associations and evaluating boolean conditions. Class-level invariants represent conditions that must remain true for every instance of across its lifecycle, typically annotated as {invariant: condition} near the or within a dedicated box. These invariants ensure in object states and behaviors. elements offer unstructured textual commentary for clarifications, supplementary details, or information outside standard UML semantics, such as implementation hints or rationale. Rendered as a dog-eared , a attaches to the target element via a dashed line, allowing multiple connections if annotating several items. For constraints involving multiple model elements, a dashed line connects the , with the in curly braces placed as a label on or near the line. Complex expressions can be enclosed in a , attached via a dashed line to the relevant elements for clarity in dense diagrams. In analysis contexts, stereotypes like <<entity>> briefly annotate classes as persistent domain objects, often facilitating integration with entity-relationship models by implying data storage requirements.

References

  1. [1]
    What is Class Diagram? - Visual Paradigm
    A class diagram in the Unified Modeling Language (UML) is a type of static structure diagram that describes the structure of a system.Learn Uml Faster, Better And... · Class Relationships · Class Diagram - Diagram Tool...
  2. [2]
    The UML 2 class diagram - IBM Developer
    Oct 23, 2023 · The purpose of structure diagrams is to show the static structure of the system being modeled. They include the class, component, and or object diagrams.The class diagram in particular · Class attribute list · Class operations list · Interfaces
  3. [3]
    UML Class Diagram - GeeksforGeeks
    Aug 29, 2025 · A UML class diagram visually represents a system's structure, showing classes, attributes, methods, and their relationships. Classes are ...
  4. [4]
    Class diagrams - UML-Diagrams.org
    A class diagram is a UML structure diagram showing the structure of a system at the level of classes and interfaces, their features, constraints and ...Missing: definition | Show results with:definition
  5. [5]
    UML Class Diagram Tutorial - Lucidchart
    Class diagrams are one of the most useful types of diagrams in UML as they clearly map out the structure of a particular system by modeling its classes.Why Use A Uml Diagram? · Benefits Of Class Diagrams · Interactions
  6. [6]
    About the Unified Modeling Language Specification Version 2.5.1
    A specification defining a graphical language for visualizing, specifying, constructing, and documenting the artifacts of distributed object systems.
  7. [7]
    UML Class and Object Diagrams Overview
    UML Class and Object Diagrams Overview. Class diagram is UML structure diagram which shows structure of the designed system at the level of classes and ...
  8. [8]
    UML Class Diagram Tutorial - Visual Paradigm
    The UML Class diagram is a graphical notation used to construct and visualize object oriented systems. A class diagram in the Unified Modeling Language (UML) ...
  9. [9]
    UML Class Diagrams
    UML class diagrams model static class relationships that represent the fundamental architecture of the system.
  10. [10]
    UML Class Diagrams - CODE Magazine
    Dec 1, 2001 · The UML class diagram is extremely useful for defining classes, which are the primary building blocks of your application. Taking the time ...
  11. [11]
    UML: The Unified Modeling Language
    The "Booch method", from Grady Booch of Rational Software; OMT (Object Modeling Technique), from Jim Rumbaugh at General Electric; OOSE (Object-Oriented ...
  12. [12]
    [PDF] UML – a tutorial
    The Shlaer-Mellor group produced a design wherein most of the classes represented static data stores while one class accessed these and encapsulated the ...
  13. [13]
    [PDF] Measuring Object-Oriented Software Products
    Shlaer and Mellor introduce a graphical diagramming notation called. OODLE (Object-Oriented Design LanguagE) that uses four diagram types that are different ...
  14. [14]
    UML Practical Guide - All you need to know about UML modeling
    Object Management Group (OMG) created UML and UML 1.0 specification draft was proposed to the OMG in January 1997. UML can be described as a general-purpose ...
  15. [15]
    [PDF] UML Summary - Object Management Group
    After adoption of the UML 1.1 specification by the OMG membership in November. 1997, the OMG chartered a revision task force (RTF) to accept comments from the.
  16. [16]
    About the Unified Modeling Language Specification Version 2.0
    The Unified Modeling Language (UML) is a language for specifying, constructing, visualizing, and documenting the artifacts of a software-intensive system.Missing: enhancements stereotypes profiles
  17. [17]
    UML 2.5 Diagrams Overview
    This document describes UML versions up to UML 2.5 and is based on the corresponding OMG™ Unified Modeling Language™ (OMG UML®) specifications. UML diagrams ...Class diagram · Package diagram · UML Component Diagrams · Activity diagrams<|control11|><|separator|>
  18. [18]
    About the Unified Modeling Language Specification Version 2.5.1
    A specification defining a graphical language for visualizing, specifying, constructing, and documenting the artifacts of distributed object systems.OMG UML · Www . omg . org / spec / UML... · UML/1.1 · UML/2.0
  19. [19]
    Object Management Group Approves Final Adoption of the SysML ...
    Jul 21, 2025 · OMG® approves SysML v2.0, KerML 1.0, and SysML v2 API specs to enhance systems modeling and tool interoperability.Missing: UML extensions
  20. [20]
    UML Class Diagrams - Graphical Notation Reference
    This document describes UML versions up to UML 2.5 and is based on the corresponding OMG™ Unified Modeling Language™ (OMG UML®) specifications. UML diagrams ...
  21. [21]
    [PDF] OMG Unified Modeling LanguageTM (OMG UML), Infrastructure
    A Stereotype uses the same notation as a Class, with the addition that the keyword «stereotype» is shown before or above the name of the Class. When a ...
  22. [22]
    Stereotype - UML-Diagrams.org
    A stereotype uses the same notation as a class with the keyword stereotype. ... OMG™ Unified Modeling Language™ (OMG UML®) specifications. UML diagrams ...
  23. [23]
    Class - UML-Diagrams.org
    Class name should be centered and in bold face, with the first letter of class name capitalized (if the character set supports upper case). Features of a class ...
  24. [24]
  25. [25]
    UML Property
    readOnly, Property is read only (isReadOnly = true). ordered, Property is ... UML specification very vaguely describes ownership of (non static) attribute ...
  26. [26]
    UML Derived Property
    This notation is used both for attributes and association ends. Patient class has derived attributes name and age. In the example above, Patient class has ...
  27. [27]
    defining and using multiplicity and collections in UML
    If the multiplicity is associated with an element whose notation is a text string (such as a class attribute), the multiplicity range is placed within square ...
  28. [28]
    Visibility in UML
    This document describes UML 2.5 and is based on OMG™ Unified Modeling Language™ (OMG UML®) 2.5 specification [UML 2.5 FTF - Beta 1]. All UML diagrams were ...Missing: indicators | Show results with:indicators
  29. [29]
    UML 2 Tutorial - Class Diagram - Sparx Systems
    Compartments are used to divide the class name, attributes and operations. In the diagram below the class contains the class name in the topmost compartment ...
  30. [30]
    UML Association
    Attribute notation can be used for an association end owned by a class, because an association end owned by a class is also an attribute. This notation may be ...
  31. [31]
    Specifying the properties of elements in UML models and diagrams
    In UML diagrams, you can set the multiplicity value on each end of an association between classifiers to show the number of objects that can participate in the ...
  32. [32]
    16.15 Qualified Association | Applying UML and Patterns - InformIT
    Nov 2, 2009 · A qualified association has a qualifier that is used to select an object (or objects) from a larger set of related objects, based upon the qualifier key.
  33. [33]
    UML Class Diagram Relationships Explained with Examples | Creately
    Nov 25, 2022 · The following are such types of logical connections that are possible in UML: Association; Directed Association; Reflexive Association ...Missing: qualified spec
  34. [34]
    UML Aggregation
    Shared aggregation is depicted as association decorated with a hollow diamond at the aggregate end of the association line.Missing: definition | Show results with:definition
  35. [35]
    UML Association vs Aggregation vs Composition - Visual Paradigm
    Aggregation and Composition are subsets of association meaning they are specific cases of association. In both aggregation and composition object of one class ...
  36. [36]
    UML Composition
    Composite aggregation is depicted as a binary association decorated with a filled black diamond at the aggregate (whole) end.
  37. [37]
    CS145 Lecture Notes (7) -- Higher-Level Design: UML
    Implicit "0..1" multiplicity on diamond side. Composition. Same as aggregation except filled-in diamond indicates implicit "1..1" on diamond side multiplicity ...
  38. [38]
    Association vs Aggregation vs Composition in UML Diagrams
    Sep 10, 2025 · UML Composition is composite aggregation: a whole–part association with exclusive ownership and coincident lifecycles, shown by a filled diamond ...
  39. [39]
    UML Composition vs Aggregation vs Association - Geert Bellekens
    Dec 20, 2010 · The UML specification clearly states that an element can be removed from its composite and therefore the lower limit of the multiplicity is 0.
  40. [40]
    Generalization in UML
    The arrowhead points to the symbol representing the general classifier. This notation is referred to as the "separate target style."
  41. [41]
    Generalization relationships in UML models and diagrams - IBM
    In UML modeling, a generalization relationship is a relationship in which one model element (the child) is based on another model element (the parent).<|separator|>
  42. [42]
    Redefining Property in UML
    UML properties of a specializing classifier could be redefined instead of being inherited to rename, augment, constrain, or override the redefined attribute.Missing: tag | Show results with:tag
  43. [43]
    Interface Realization - UML-Diagrams.org
    Realization is a specialized abstraction relationship between two sets of model elements, one representing a specification (the supplier) and the other ...
  44. [44]
    Dependency in UML
    This document describes UML versions up to UML 2.5 and is based on the corresponding OMG™ Unified Modeling Language™ (OMG UML®) specifications. UML diagrams ...
  45. [45]
    About the Unified Modeling Language Specification Version 2.5
    A specification defining a graphical language for visualizing, specifying, constructing, and documenting the artifacts of distributed object systems.Missing: refinements | Show results with:refinements
  46. [46]
  47. [47]
    UML Constraint represents some condition, restriction or assertion ...
    For an element whose notation is a text string (such as a class attribute), the constraint string may follow the element text string in curly braces.<|control11|><|separator|>
  48. [48]
    [PDF] Object Constraint Language
    The hierarchy of types introduced by UML model elements mirrors the generalization hierarchy in the UML model. Type conformance is a relation that is ...
  49. [49]
    Class Diagram, UML Diagrams Example: Analysis Stereotypes
    An entity is a data object or persistent data object. These three stereotypes are typically used for representing Model / View and Controller layered software ...