Скрипт PlantUML для наследования

Диаграмма иерархии наследования

Всякий раз, когда я расширяю два интерфейса из одного и того же интерфейса, на диаграмме создаются отдельные стрелки. Я просто хочу одну стрелку с таким разветвлением. Есть ли какой-нибудь скрипт в PlantUML для этого?


person Manoj Majumdar    schedule 02.03.2017    source источник


Ответы (2)


Набор инструментов — GraphViz — используемый PlantUML в первую очередь предназначен для рисования графов (то есть узлов и ребер); отсюда и отношения индивидуальной реализации.

Хотя демонстрация реализаций как таковая иногда полезна для изображения иерархий интерфейсов, диаграммы могут быстро превратиться в «крысиное гнездо» взаимосвязей, потенциально затемняя общую картину.

Вы можете предпочесть использовать сокращенную нотацию "Lollipop" для обозначения реализаций интерфейса. Например,

введите здесь описание изображения

Макет иногда может быть немного сложным, если вы хотите показать детали интерфейса на той же диаграмме. Сценарий для создания вышеуказанного выглядит следующим образом:

@startuml
together {
   interface Widget {
     callFred()
     callBarney()
   }

   class A
   class B
   class C
}

Widget ()- A
Widget ()- B
Widget ()- C
@enduml
person Frelling    schedule 05.03.2017

Если вы просто хотите, чтобы две наследуемые сущности делили стрелку, вы можете соединить вторую с линией, соединяющей первую сущность с ее обобщением:

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

дает это:

это не то, что мы хотим.

person Peter Prescott    schedule 10.11.2020