Skip to content

Which parts of a link can be specialized? #8

Description

@enikao

AbstractConcepts can specialize the type of a Link of all transitively extended AbstractConcepts.

  • Can a specialization change the link's cardinality?
  • Can a specialization change the link's name?

Specializing cardinality

Pro:

  • consistent if we can also change type and name

Con:

  • Few use cases
  • Supporting changes between singular and multi-valued containments unfeasible

Specializing name

Pro:

  • Closer alignment to domain ("NeedleTree.needles" vs. "NeedleTree.greenTreeThings")

Con:

  • Interferes with regular OO method overriding (Java class NeedleTree defines method getNeedles and inherits getGreenTreeThings)

Example A: Only change type

classDiagram
Tree --> "0..*" GreenTreeThing: greenThings
<<abstract>> GreenTreeThing
Tree <|-- NeedleTree
GreenTreeThing <|-- Needle
NeedleTree --> Needle: greenThings specialized
Loading

Example B: Change type, cardinality, name

classDiagram
Tree --> "0..*" GreenTreeThing: greenThings
<<abstract>> GreenTreeThing
Tree <|-- NeedleTree
GreenTreeThing <|-- Needle
NeedleTree --> "1..*" Needle: needles specializes greenThings
Loading

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions