Как сделать горизонтальное представление агрегации классов с текстом в Plantuml? - PullRequest
1 голос
/ 01 ноября 2019

Я хочу иметь следующее в plantuml. enter image description here

То, что у меня сейчас есть:

enter image description here

, сгенерированное из

@startuml
Pond o-  "o...*" Swan
@enduml

Но выглядит не очень хорошо, текст сжат. Как я могу сделать его лучше? Я уже просматривал эту страницу: http://plantuml.com/class-diagram, но я не нахожу ничего полезного.

1 Ответ

2 голосов
/ 03 ноября 2019

Проблема

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

Благодаря вертикальному представлению PlantUML поддерживает линию мощности с обеих сторон. Это уменьшает ширину мощности до минимума и размещает их таким образом, чтобы не пересекать линию ассоциации. Итак:

Pond  "xxxxxx" o-- "o..*" Swan 

приводит к:

enter image description here

Горизонтальная версия принимает аналогичную стратегию. К сожалению, ширина кардинальности не считается показателем минимальной ширины линии ассоциации. Он также не оставляет за собой минимальное горизонтальное пространство с обеих сторон для достижения достойного результата, по крайней мере, для наиболее распространенных случаев. Итак:

Pond  "xxxxxx" o- "o..*" Swan 

приводит к:

enter image description here

Это явно серьезная ошибка в макете.

Обходной путь

PlantUML также позволяет наносить ярлык на ассоциацию. К счастью, механизм компоновки учитывает длину этой метки, поскольку она должна быть расположена над линией. Таким образом, вы можете помочь себе, добавив пустую метку для заполнения:

Pond  "xxxxx" o- "o..*" Swan : "               "
                               ^
                               THis label is only for padding

Результаты:

enter image description here

Конечно, этоне очень хорошее решение. Это всего лишь практическое решение проблемы с ошибкой.

...