14.16. Inheritance

Critics concerning generalization and specialization in ArgoUML.

The current version of ArgoUML has the following critics in this category.

14.16.1. Revise Attribute Names to Avoid Conflict

This critic is discussed under an earlier design issues category (see Section 14.4.2, “Revise Attribute Names to Avoid Conflict” ).

14.16.2. Remove <class>'s Circular Inheritance

Suggestion that a class inherits from itself, through a chain of generalizations, which is not permitted.

[Caution]Caution

This critic is marked inactive by default in the current release of ArgoUML (the only one so marked). It will not trigger unless made active.

14.16.3. Class Must be Abstract

This critic is discussed under an earlier design issues category (see Section 14.13.2, “Class Must be Abstract” ).

14.16.4. Remove final keyword or remove subclasses

Suggestion that a class that is final has specializations, which is not permitted in UML.

14.16.5. Illegal Generalization

Suggestion that there is a generalization between artifacts of different UML metaclasses, which is not permitted.

[Caution]Caution

It is not clear that such a generalization can be created within ArgoUML. It probably indicates that the diagram was created by loading a corrupt project, with an XMI file describing such a generalization, possibly created by a tool other than ArgoUML.

14.16.6. Remove Unneeded Realizes from <class>

Suggestion that the specified class has a realization relationship both directly and indirectly to the same interface (by realization from two interfaces, one of which is a generalization of the other for example). Good design deprecates such duplication.

14.16.7. Define Concrete (Sub)Class

Suggestion that a class is abstract with no concrete subclasses, and so can never be realized.

14.16.8. Define Class to Implement <interface>

Suggestion that the interface referred to has no influence on the running system, since it is never implemented by a class.

14.16.9. Change Multiple Inheritance to interfaces

This critic is discussed under an earlier design issues category (see Section 14.14.1, “Change Multiple Inheritance to interfaces” ).

14.16.10. Make Edge More Visible

This critic is discussed under an earlier design issues category (see Section 14.7.14, “Make Edge More Visible” ).