【问题标题】:draw uml class diagram with both super class object and subclass object being called in a third class绘制 uml 类图,在第三类中调用超类对象和子类对象
【发布时间】:2020-06-27 23:24:51
【问题描述】:

我有一个 A 类,它是 B 类的超类(即public class B extends A)。现在我有另一个 C 类,A 类是 C 类中的实例变量,B 类从 A 类向下转换并分配给 C 类中的局部变量。我应该如何在 uml 类图中表示这种关系?

【问题讨论】:

  • 声明表述不当。 “A 类是 C 类中的实例变量”是否意味着类 C 具有类型为 A属性 /i> ? “C 类中的局部变量”又是 C 类的属性 或“真正的”局部变量/参数 在 C 的操作中? “class B is being downcasted from Class A”一个类不能被“downcasted”,该语句全局混淆了类和类的实例。无论如何,“B 类从 A 类向下转换并分配给 C 类中的局部变量”这是一种行为,不能在类图中显示。

标签: inheritance uml associations class-diagram downcast


【解决方案1】:

类图很简单:

C 与 A 的关联是结构性的,因为存在该类型的实例变量。

C 的操作在局部变量中执行从实例变量到 B 的向下转换这一事实不会改变类图:类图是关于结构的,而不是关于在执行过程中临时发生的事情一种或另一种方法。

【讨论】:

  • 感谢您的回复,但让我感到困惑的是,由于 B(来自向下转换)被分配给 C 类中的局部变量,这是否意味着 B 和 C 具有依赖关系?
  • @Rui 确实!我犹豫在我的回答中提及 «use» 依赖项,因为这种依赖项可能是一个不幸的实现细节,而不是设计意图。理论上可以想象不同的实现,例如避免垂头丧气,或将该部分提取到助手中。此外,虽然 C 的实现依赖于 B,但类 C 本身并不依赖(即,您不需要在 C.h 中包含 B.h,因为 B 既不用作参数也不用作返回值)。由于所有这些原因,我不会表现出依赖。仅在设计要求或实现模型时才显示它。
猜你喜欢
  • 1970-01-01
  • 2017-04-30
  • 2021-06-03
  • 2018-12-16
  • 1970-01-01
  • 2017-05-13
  • 2020-05-03
  • 2015-02-26
  • 2017-09-13
相关资源
最近更新 更多