UML-如何将类图与子类垂直对齐

UML-如何将类图与子类垂直对齐,uml,class-diagram,plantuml,Uml,Class Diagram,Plantuml,在所附的UML图中有5个类,我想了解如何在子类保持对齐的同时垂直对齐类A、B和C的顶部。请在下面找到我的UML代码和截图 非常感谢您的支持!:) 它当前的样子: @startuml TestClassDiagram scale 800 width skinparam SameClassWidth true skinparam ClassFontSize 15 class classA { {field} - attribute1 : int {field} - attribute2 :

在所附的UML图中有5个类,我想了解如何在子类保持对齐的同时垂直对齐类A、B和C的顶部。请在下面找到我的UML代码和截图

非常感谢您的支持!:)

它当前的样子:

@startuml TestClassDiagram
scale 800 width
skinparam SameClassWidth true
skinparam ClassFontSize 15

class classA {
{field}  - attribute1  : int
{field}  - attribute2  : int
{method} + method1(void)
{method} + method2(void)
{method} + method3(void)
{method} + method4(void)
{method} + method5(void)
}

class classB {
{field}  - attribute1 : int
{field}  - attribute2 : int
{method} + method1(void)
{method} + method2(void)
}
class classBchild     {
{method} + method1(void)    
}

class classC {
{field}  - attribute1  : int
{field}  - attribute2  : int
{field}  - attribute3  : int
{field}  - attribute4  : int
{method} + method1(void)
{method} + method2(void)
{method} + method3(void)
{method} + method4(void)
{method} + method5(void)
}
class classCchild {
{method} + method1(void)   
}

classB <|-- classBchild
classC <|-- classCchild

@enduml

它应该是什么样子(绘制编辑):

@startuml TestClassDiagram
scale 800 width
skinparam SameClassWidth true
skinparam ClassFontSize 15

class classA {
{field}  - attribute1  : int
{field}  - attribute2  : int
{method} + method1(void)
{method} + method2(void)
{method} + method3(void)
{method} + method4(void)
{method} + method5(void)
}

class classB {
{field}  - attribute1 : int
{field}  - attribute2 : int
{method} + method1(void)
{method} + method2(void)
}
class classBchild     {
{method} + method1(void)    
}

class classC {
{field}  - attribute1  : int
{field}  - attribute2  : int
{field}  - attribute3  : int
{field}  - attribute4  : int
{method} + method1(void)
{method} + method2(void)
{method} + method3(void)
{method} + method4(void)
{method} + method5(void)
}
class classCchild {
{method} + method1(void)   
}

classB <|-- classBchild
classC <|-- classCchild

@enduml

UML-代码:

@startuml TestClassDiagram
scale 800 width
skinparam SameClassWidth true
skinparam ClassFontSize 15

class classA {
{field}  - attribute1  : int
{field}  - attribute2  : int
{method} + method1(void)
{method} + method2(void)
{method} + method3(void)
{method} + method4(void)
{method} + method5(void)
}

class classB {
{field}  - attribute1 : int
{field}  - attribute2 : int
{method} + method1(void)
{method} + method2(void)
}
class classBchild     {
{method} + method1(void)    
}

class classC {
{field}  - attribute1  : int
{field}  - attribute2  : int
{field}  - attribute3  : int
{field}  - attribute4  : int
{method} + method1(void)
{method} + method2(void)
{method} + method3(void)
{method} + method4(void)
{method} + method5(void)
}
class classCchild {
{method} + method1(void)   
}

classB <|-- classBchild
classC <|-- classCchild

@enduml
@startuml TestClassDiagram
标度800宽度
skinparam SameClassWidth true
skinparam ClassFontSize 15
甲级{
{field}-attribute1:int
{field}-attribute2:int
{method}+method1(void)
{method}+method2(void)
{method}+method3(void)
{method}+method4(void)
{method}+method5(void)
}
B类{
{field}-attribute1:int
{field}-attribute2:int
{method}+method1(void)
{method}+method2(void)
}
B类儿童{
{method}+method1(void)
}
C类{
{field}-attribute1:int
{field}-attribute2:int
{field}-attribute3:int
{field}-attribute4:int
{method}+method1(void)
{method}+method2(void)
{method}+method3(void)
{method}+method4(void)
{method}+method5(void)
}
班级儿童{
{method}+method1(void)
}

classB在PlantUML中还没有对齐类的特性

如果我们在所有元素之间添加箭头,可以清楚地看到PlantUML试图做什么:

它只是从中间对齐所有图表

使用此方法,我们可以创建一个hack,通过使用额外的换行符填充类定义,直到它们的大小都相同,从而达到您想要的结果:

@startuml
skinparam {
    SameClassWidth true
    ClassFontSize 15
}

class A as "classA" {
    {field}  - attribute1  : int
    {field}  - attribute2  : int


    __
    {method} + method1(void)
    {method} + method2(void)
    {method} + method3(void)
    {method} + method4(void)
    {method} + method5(void)
}

class B as "classB" {
    {field}  - attribute1 : int
    {field}  - attribute2 : int


    __
    {method} + method1(void)
    {method} + method2(void)



}

class Bc as "classBchild"     {
    {method} + method1(void)    
}

class C as "classC" {
    {field}  - attribute1  : int
    {field}  - attribute2  : int
    {field}  - attribute3  : int
    {field}  - attribute4  : int

    {method} + method1(void)
    {method} + method2(void)
    {method} + method3(void)
    {method} + method4(void)
    {method} + method5(void)
}

class Cc as "classCchild" {
    {method} + method1(void)   
}

B <|-- Bc
C <|-- Cc
@enduml

@startuml
skinparam{
SameClassWidth true
15号
}
A类为“A类”{
{field}-attribute1:int
{field}-attribute2:int
__
{method}+method1(void)
{method}+method2(void)
{method}+method3(void)
{method}+method4(void)
{method}+method5(void)
}
B类为“B类”{
{field}-attribute1:int
{field}-attribute2:int
__
{method}+method1(void)
{method}+method2(void)
}
Bc类为“ClassBC儿童”{
{method}+method1(void)
}
C类为“C类”{
{field}-attribute1:int
{field}-attribute2:int
{field}-attribute3:int
{field}-attribute4:int
{method}+method1(void)
{method}+method2(void)
{method}+method3(void)
{method}+method4(void)
{method}+method5(void)
}
Cc类为“classCchild”{
{method}+method1(void)
}

B从互联网上找到的其他问题来看,这似乎是不可能的。谢谢阿尔伯特,你的快速回答!这太可悲了:-太棒了!此解决方案对我的价值与所需格式相同:)非常感谢!!!