Override in UML

UML notation allows you to specify overridden properties and operations.

In many object-oriented programming languages, you can override a property or a method from the superclass. The overriding property/method in the subclass replaces the behavior of the property/method in the superclass.

The override in the UML classifier can be defined in two ways:

  • implicit - you define a property or an operation with the same name in the subclass.
  • explicit - you specify a redefinition for a property or an operation. The redefined operation looks like this: + MyOperation () {redefines MyOperation}
Example of Override in UML model
Example of Override in UML model

How to Specify Explicit Redefinition

If you want to use explicit redefinition to model the override using Software Ideas Modeler, you can do it this way:

  • Right-click on an attribute (property) or an operation of the desired class in the diagram editor
  • Choose Properties from the context menu
  • Choose a property or an operation from the Redefines combo box
  • Click on the OK button to confirm your setting

The redefinition refers to a property or operation in the superclass.

Set overridden operation using the Redefines parameter
Set overridden operation using the Redefines parameter

Use Cases and Scenarios for Modeling Overrides in UML

Overrides in UML are a powerful feature for modeling object-oriented systems. They allow for the specialization of behavior in subclasses, enabling more flexible and dynamic system designs. Here are several use cases and scenarios where modeling overrides in UML is particularly beneficial:

  • Customizing Behavior in Subclasses - it is used to model the specialized operation (method) in each subclass, ensuring that the correct procedure is followed for each type.
  • Extending Functionality of Inherited Operations - it enables the addition of subclass-specific steps (defined as separate virtual operations) to the main process while still maintaining the general structure and functionality defined in the super class.
  • Providing Default Implementations - by modeling the lifecycle methods in the super class and allowing subclasses to override them as needed, the framework provides flexibility and reduces boilerplate code. Developers can specify custom behavior only where necessary, simplifying the overall design.

New Comment