In the UML Class Diagram
how can I show the inherited operations on a class (realize relationship) from the interface
so that they are automatically updated if the interface is updated?
A diagram has an interface and an implementing class (realize).
[*]When making the realize relationship, the Overrides & Implementation dialog shows. When the checkbox is selected, the operation is correctly shown on the class. However
when the interface is updated afterwards, the class isn't updated along. The only option I've found so far is removing and recreating the relation. If there are multiple classes this is quite a burdon (also the old method needs to be removed on the class). This seems like a bug to me (or is there a reason for this behaviour)?
[*] Second option I've found was the feature visibility. However that only works for generalization relationships. In my case it works fine if I use it on an interface extending another interface or a class extending another class. But it does not work on a class implementing an interface. However the documentation says
When Enterprise Architect displays inherited features, it creates a merged list from all generalized parents and from all realized interfaces[/list]
Hence my question(s):
[*] Is there a way (setting, ...) to make the Override and implementation work properly (automatically update the realization class)
[*] Is there a way (setting, ...) to make class show inherited operations?
[/list]
I'm using version EA 8.8.858
Update the only workaround I found was to
[*] Create the interface as an abstract class with interface stereotype
[*] Link the class with the 'interface' using generalization relationship and hide the connector
[*] Link the class (again) with the 'interface' using the realize relationship
[*] use the feature visibility on the class to show the operations
[/list]
It looks the same on the diagram however there are some disadvantages such as
[*] the embedded interface view cannot be used because it's not a real interface
[*] when working with generated code (either imported or code that you want to export) it is not correct: abstract class vs interface
[*] ...
[/list]