你如何在plantuml中用文本制作水平class聚合表示?

How do you make a horizontal class aggregation representation with text in plantuml?

我想在 plantuml 中包含以下内容。

我目前拥有的是:

生成自

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

但它看起来不太好,文字被压扁了。我怎样才能让它看起来更好?我已经查阅过此页面:http://plantuml.com/class-diagram,但我没有找到任何有用的东西。

问题

PlantUML 不能很好地处理水平布局。也许文档页面上使用的示例表明质量保证测试可能主要使用垂直布局来完成。

对于垂直表示,PlantUML 在两侧都保留一条基数线。它将基数的宽度减少到最小,并以不跨越关联线的方式放置它们。所以:

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

结果:

横版采用了类似的策略。不幸的是,它没有将基数的宽度视为关联线的最小宽度的指示。它既不在两侧保留最小水平 space 以至少在最常见的情况下实现良好的输出。 所以:

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

结果:

这显然是布局中的一个严重错误。

解决方法

PlantUML 还允许在关联上放置标签。幸运的是,布局引擎考虑了这个标签的长度,因为它应该放在线的上方。因此,您可以通过为填充添加空白标签来帮助自己:

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

结果:

当然这不是一个很好的解决方案。这只是一个烦人的错误的实际解决方法。