Всякий раз, когда я расширяю два интерфейса из одного и того же интерфейса, на диаграмме создаются отдельные стрелки. Я просто хочу одну стрелку с таким разветвлением. Есть ли какой-нибудь скрипт в PlantUML для этого?
Скрипт PlantUML для наследования
Ответы (2)
Набор инструментов — GraphViz — используемый PlantUML в первую очередь предназначен для рисования графов (то есть узлов и ребер); отсюда и отношения индивидуальной реализации.
Хотя демонстрация реализаций как таковая иногда полезна для изображения иерархий интерфейсов, диаграммы могут быстро превратиться в «крысиное гнездо» взаимосвязей, потенциально затемняя общую картину.
Вы можете предпочесть использовать сокращенную нотацию "Lollipop" для обозначения реализаций интерфейса. Например,
Макет иногда может быть немного сложным, если вы хотите показать детали интерфейса на той же диаграмме. Сценарий для создания вышеуказанного выглядит следующим образом:
@startuml
together {
interface Widget {
callFred()
callBarney()
}
class A
class B
class C
}
Widget ()- A
Widget ()- B
Widget ()- C
@enduml
Если вы просто хотите, чтобы две наследуемые сущности делили стрелку, вы можете соединить вторую с линией, соединяющей первую сущность с ее обобщением:
class Entity
class Generalization
class OtherEntity
Generalization <|-- Entity
(Entity, Generalization) -- OtherEntity
К сожалению, если вы попробуете это для большего количества строк, это не сработает. Например.
class Entity
class Generalization
class OtherEntity
Generalization <|-- Entity
(Entity, Generalization) -- OtherEntity
class AnotherEntity
(Entity, Generalization) -- AnotherEntity
дает это:
это не то, что мы хотим.