Printing 在文档中处理大型类的UML类图以便打印

Printing 在文档中处理大型类的UML类图以便打印,printing,uml,document,class-diagram,Printing,Uml,Document,Class Diagram,我目前正在写一个正式的文档,我应该在其中放置一个特定的UML类图 这个类大约有30个成员,方法的数量大致相同。当我使用任何工具创建类图时,它都会使它成为一个非常长的列表,超过60行。它根本不适合一页(我需要打印文档) 重新设计这个类是不可能的 我该如何处理这个问题?我有两个想法: 拆分图表-为数据成员制作一个图表,为方法制作第二个图表 将图表分为两列—一列用于数据成员,另一列用于方法 这样的图表在技术上是否仍然正确?我不确定这是否仍然是一个有效的UML。有一些工具可以用来隐藏类的成员。我认为他支

我目前正在写一个正式的文档,我应该在其中放置一个特定的UML类图

这个类大约有30个成员,方法的数量大致相同。当我使用任何工具创建类图时,它都会使它成为一个非常长的列表,超过60行。它根本不适合一页(我需要打印文档)

重新设计这个类是不可能的

我该如何处理这个问题?我有两个想法:

  • 拆分图表-为数据成员制作一个图表,为方法制作第二个图表
  • 将图表分为两列—一列用于数据成员,另一列用于方法

  • 这样的图表在技术上是否仍然正确?我不确定这是否仍然是一个有效的UML。

    有一些工具可以用来隐藏类的成员。我认为他支持这一点,当然也支持。使用这样的工具,我将创建两个图,一个仅显示成员(和折叠的方法部分),另一个仅显示方法(和折叠的成员部分)。比如:

    +--------------------+
    | SomeClass          |
    +--------------------+
    | methods            |
    +--------------------+
    | +DateOfBirth: Date |
    | +Name : String     |
    | …                  |
    +--------------------+
    
    +----------------------------+
    | SomeClass                  |
    +----------------------------+
    | members                    |
    +----------------------------+
    | +void Say(String message)  |
    | +void Sleep(TimeSpan time) |
    | …                          |
    +----------------------------+
    

    如果您想确保文档的读者理解您的图表的含义,您可以写一行解释为什么隐藏了类的某些部分。

    这里可以做一些事情

    首先,将字段与方法分开。图表上还有其他类,如果属性用箭头显示,则不必同时将其放入类块中。这绝对是标准的伎俩

    其次,您可以隐藏方法和其他字段,将类显示为空块,仅显示名称,更改其颜色,以便更好地查看,注意下一个图表,并制作第二个图表,该图表将仅包含该类

    你可以停下来。但其他步骤也是可能的

    由于在代码之后创建大型类图和图表无论如何都不是标准的,所以我不会试图让自己看起来更圣洁,我会稍微打破其他标准

    相反,第二步我将绘制函数返回类的依赖项,并用参数列表写入函数名

    因此,类的块中只有标准类型的成员。其他成员将创建许多连接,而这些连接的数量将需要较大的类块—您需要连接所有端点的位置


    当然,您可以将其与单独的图表结合起来。

    如果您的工具支持,您可能会决定只显示公共成员/方法。 或者隐藏一些琐碎的东西,比如标准的getter和setter。(如其他人所示,记下隐藏的内容) 目标应该是让读者了解实例的运行状态,以及可以使用实例执行的重要操作


    如果您有代码访问权限,那么进行一些重构将非常有用,例如,将类拆分为更小的块,或者引入一个façade(保持原始类不变)。我知道这不适用于您的具体案例,但它可能会帮助其他人,因为这是一个常见的建模问题。

    如果我可以建议,另一种思考方式可能是询问“是否有可能维护和安全地更改一个包含30个成员和大量方法的类<当然,这样的类可能存在,但维护问题可能会得到解决。