【问题标题】:Solving UML in Java Scenario在 Java 场景中解决 UML
【发布时间】:2012-04-24 19:26:54
【问题描述】:

我是学习 Java 的初学者,并通过回答以前的试卷上的问题来复习我的考试,但有一个问题我被困住了。

游戏的 OO 设计已确定以下类别:GAME、LEVEL、CHARACTER、HERO、ENEMY 和 GAMEWORLD。 HERO 和 ENEMY 都是 CHARACTER 的类型。游戏发生在特定的 GAMEWORLD 中。一个游戏有几个级别。每个级别都有一个英雄角色和许多可以出现和移除的敌人角色。

在上面的场景中为这些类绘制一个 UML 图,清楚地显示类之间的适当连接器。 (无需在类框中提供任何详细信息。)

我不知道如何在这里绘制 UML 连接器,但这是我的回答:

HERO 和 ENEMY 通过继承与角色相关

GAME 和 LEVEL 通过 Composition 关联

LEVEL 通过聚合与 HERO 和 ENEMY 相关

GAME 通过继承与 GAMEWORLD 相关

如果有人可以帮我检查这些答案是否正确,我将不胜感激?提前致谢。

【问题讨论】:

    标签: java inheritance computer-science composition aggregation


    【解决方案1】:

    几乎是对的。游戏不继承自 GameWorld。 GameWorld 有一个 Aggregation 指向 Game(它是一对多的关系)。

    【讨论】:

      【解决方案2】:

      正确,除了 GAME 和 GAMEWORLD 关系。

      • HERO 和 ENEMY 都继承自 CHARACTER => 继承
      • GAME 包含关卡,但没有游戏就无法存在关卡 => 构图
      • LEVEL 可以包含一个 HERO 字符和几个 ENEMY 字符,但也可以为空 => 聚合
      • GAME 发生在 GAMEWORLD 中,但没有 Gameworld 就无法存在 GAME => Composition

      查看维基百科上的the difference between Aggregation and Composition

      【讨论】:

      • 感谢您提供的信息,我知道聚合和组合之间的区别(聚合是一种较弱的组合形式)但是当涉及到场景时,我有时会感到困惑。感谢您的回答,我现在对场景有了更清晰的了解。再次感谢您的帮助:)。
      • @user1279780 在 StackOverflow 上,没有必要(或不推荐)使用 cmets 来感谢人。支持他们的答案,尤其是接受
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多