【问题标题】:How do oriented associations work within inherited classes? (uml class diagram)定向关联如何在继承的类中工作? (uml类图)
【发布时间】:2019-05-10 21:27:28
【问题描述】:

我正在尝试理解其中一个 uml 测试题。基类和继承类之间的关联是不同的,但是继承类是否也继承了基类之间的关联,我的意思是,继承的类实际上有两个关联吗?

我也有不同的陈述,我需要从中选择正确的一个。正确答案是A,但我不明白为什么A是正确的而其他的不是,所以如果可能的话,请解释每一个说法。

A) ConcreteSubject 类的实例可能引用了零个或多个 Observer 类型的对象。

B) Observer 类的每个实例都有一个对 Subject 类实例的引用。

C) Subject 类的每个实例都有一个对 Observer 类实例的引用。

D) ConcreteSubject 类的实例不能引用任何其他类的实例。

E) ConcreteObserver 类的一个实例可能有对 ConcreteSubject 类的零个或多个实例的引用。

谢谢!

【问题讨论】:

  • 又一次不知道自己在教什么的老师:-(

标签: uml class-diagram


【解决方案1】:

[这个问题和答案有望给大学教师带来一些压力,让他们关心他们的考试/测验问题的质量。]

首先,重要的是要注意类图有几个缺陷。角色名称“主题”和“对象”位于错误(相反)关联端。然后,正如您所想的那样,主客体关联已被复制,因为它是继承的。

关于问题,答案 A 和 B 都是正确的,而其他的都是错误的。这直接来自于阅读一对多主客关联的多重性约束。

顺便说一句,答案选项 B 和 C 的措辞有点缺陷:说“观察者(或主题)类的每个实例”可能会令人困惑,因为这些类是抽象的(通过斜体名称可视化),这意味着它们没有自己的(直接)实例。但是,在一般意义上,可以说它们确实有实例,即它们的具体子类的所有实例。因此,这两个答案选项令人困惑。但对于任何类型的考试来说,不使用令人困惑的问题是一项重要的公平要求。

我猜你的老师认为答案 B 是错误的,因为它是关于抽象类 Observer 和 Subject 的实例。然而,就目前的形式而言,答案 B 是正确的。如果将其改写为“观察者(或主题)类的每个 直接 实例”,那将是不正确的。

答案 C 不正确,因为 Subject 类的一个实例可能没有链接到任何观察者(0..* 多重性表达式中的 0 暗示了这一点)。

答案 D 不正确,因为模型不包含任何此类约束(顺便说一句,这没有任何意义)。

答案 E 不正确,因为它与任何观察者必须只观察一个对象的多重性约束相矛盾,多重性表达式 1 表示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多