【问题标题】:UML Class Diagram "can be" relationshipUML 类图“可以”的关系
【发布时间】:2019-09-04 21:55:16
【问题描述】:

我有两个类 - TypeModel

Type 可以是原始的,但任何Model 都可以进一步用作Type。因此,Type 可以是 Model,但不一定是

如何使用 UML 类图来表示这一点?

我最初的想法是定义一个 PrimitiveType,然后使用泛化将该类和 Model 类连接到 Type,但是我不禁假设有更好的方法。

【问题讨论】:

  • 模型可以 [...] 用作类型。 [...] 类型可以是模型 听起来很奇怪。哪一个是基础?
  • @qwerty_so 考虑一种 OO 编程语言。您可以拥有一个原始类型的变量(int x = 5)或定义一个模型(类),该模型可以进一步用作类型(MyClass x = new MyClass())。我试图表示的内容与此类似——Type 可以是PrimitiveModel。此外,Model 可以具有任何 TypeParameters
  • 您正在混合定义。你应该去第一格写下什么是什么。定义术语类型和模型。一旦你这样做了,你就会得到答案。 int x 不是类型它一个类型。
  • @qwerty_so x确实一个类型,但是int一个类型。所以MyClass。但是我将建模intMyClass 不同,因为int 不会有属性,例如MyClass 会。这就是为什么我需要为 int (PrimitiveType) 和 MyClass (Model) 提供不同的概念。
  • 由于您没有澄清您的问题,我投票结束。

标签: uml relationship class-diagram


【解决方案1】:

一个概括就足够了。箭头应该从 Model 指向 Type,这意味着:一个 Model 就是一个 Type。所有模型都是类型,但并非所有类型都是模型。

默认情况下,超类不是抽象的,即超类的实例可能存在。例如,如果File 是一个超类,而Image FileText File 是唯一的子类,则存在三种文件:图像文件、文本文件和既不是图像文件也不是文本文件的文件。但是,如果 File 被声明为 abstract 超类,则所有文件都是图像文件或文本文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多