【问题标题】:How to represent a interchangeable relationship between two classes in UML class Diagram如何在 UML 类图中表示两个类之间的可互换关系
【发布时间】:2015-01-01 14:08:19
【问题描述】:

假设 F16Weapon 和 F18 HornetWeapon 是两个武器类别。他们每个类别都有三种武器,例如康农,炸弹,导弹。

我懒得在F16Weapon和F18 HornetWeapon之间画一个可互换的关系。我的意思是F16级可以使用F18武器组或F18级使用F16武器组。基本上如果 F16 类尝试使用 F18 大炮武器,F16 会从 F18 武器组中轻松使用它。 F18 级也是如此。所以F16类和F18类之间会有互换关系。如何在 UML 类图中表示两个类之间的这种可互换关系?任何人都可以帮助我。

提前致谢。

【问题讨论】:

  • 一种方法是通过类泛化,如class F16Weapon extends FxCompatibleWeapon..class F18HornetWeapon extends FxCompatibleWeapon..。尽管从解耦的角度来看,使用interfaces... 通常更灵活

标签: java uml diagram


【解决方案1】:

xmojmr 是正确的,你应该使用泛化。他的答案背后的要点是,泛化是一种从一组类中提取相似行为并将它们变成他们都使用的类的方法。这几乎就是您在此处描述的内容。

现在,如果大炮在使用 F16 和 F18 时使用相同的软件,那么您可能希望将该软件保存在一个地方并让它们都使用它。相反,如果您希望他们使用不同的软件,然后使用第三个软件来部署大炮,而不必知道它是使用 F16 还是 F18,那么您将使用界面。一个接口说如果你想成为一个 CannonDeployer(或其他),那么你必须使一个 Deploy 方法(或其他)可用,但你可以按照你想要的任何方式编写它。

因此,正如他所说,界面更加灵活,但您必须决定是否需要进行额外工作,为每个平面提供不同的软件实现。如果不这样做,则将实现放在基类中(xmojmr 示例中为 FXCompatibleWeapon)并保留它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多