有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

c#类在系统中有哪些关联?如何在UML中最好地表示它们?

这篇文章实际上分为两个问题:

类/接口通常有哪些类型的关联

我认为至少有3种依赖关系:

  • 遗产:我想我们都知道这个)
  • 依赖关系:我的意思是,如果class A依赖于class B,我只能将class A作为构造函数参数传递给它,然后才能实例化它。这是正确的吗
  • 用法:class A如果在class A的代码中有任何类型的class B引用既不是依赖项的继承,则使用class B

这些是类之间唯一的关联吗?我对其含义的解释正确吗

我们感兴趣的是在UML图(主要是类/包图)上显示哪种依赖关系

到目前为止,我只在类图中放置了描述依赖关系和关联的箭头。但是现在我想起来了,大部分时间我都在看类图,我会发现一些类似于

alt text

其中仅显示InheritsUses关联。但是类图中的那些Uses实际上并不是我上面定义的那种Uses。它们只是告诉你,在一个类型不是基元的类上有一个getter

我想如果我必须查看一些系统的文档,我想知道系统中不同的类是如何相互依赖的。我确实想看一些Dependency Graph

是否最好将类图限制为Inherits/Uses关联,然后使用其他显示Depends/Uses关联的图/图

你喜欢什么,为什么

谢谢


共 (1) 个答案

  1. # 1 楼答案

    首先,您应该停止谈论继承,将关系作为“关联”来依赖和使用。“关联”一词在UML中有特殊的含义;见下文

    在您提到的三种关系中,传统的做法是在类图中只显示继承(技术上是泛化)关系。它们使用带有开放三角形箭头的实线表示

    如果您想显示类之间的依赖/使用关系,您应该使用UML依赖关系表示法;i、 e.带有“V”箭头的虚线

    类图中通常描述的另一种关系是关联;i、 e.类实例之间承载关系的信息,通常使用(例如)指针或数据库外键/索引表示

    我想这是个人偏好的问题,但我不想在对象图上看到依赖/使用关系。综合线和关联线的布局非常困难。其他行只会使图表过于“繁忙”

    UML用户指南说:

    "Remember that it is both undesirable and unnecessary to model all relationships among a set of abstractions in a single diagram or view. Rather, build up your system's relationships by considering different views on the system. Highlight interesting sets of relationships in individual diagrams."