假设F16武器和F18大黄蜂武器是两个武器类别。每个类别都有3种武器,例如connon,bomb和导弹。
我很想在F16武器和F18大黄蜂武器之间建立可互换的关系。我的意思是F16班级可以使用F18武器组或F18班级可以使用F16武器组。基本上,如果F16类尝试使用F18加农炮武器,F16将从F18武器套装中轻松使用它。 F18班级也是如此。因此,F16类和F18类之间将存在可互换的关系。如何在UML类图中表示两个类之间的这种可互换关系?任何人都可以帮助我。
提前致谢。
最佳答案
xmojmr是正确的,您应该使用泛化。他的答案背后的观点是,泛化是一种从一组类中提取类似行为并将其转变为它们都使用的一个类的方法。这几乎就是您在此处描述的内容。
现在,如果加农炮在使用F16和F18时使用相同的软件,那么您可能希望将该软件保存在一个地方,然后让他们两个都使用它。相反,如果您希望他们使用其他软件,然后使用第三种部署大炮的软件而不必知道它是使用F16还是F18,则可以使用界面。界面显示,如果您想成为CannonDeployer(或其他任何对象),则必须使Deploy方法(或任何其他对象)可用,但是您可以根据需要编写它。
因此,正如他所说,界面更加灵活,但是您必须决定是否需要进行额外的工作,即为每架飞机提供不同的软件实现。如果不这样做,则将实现放入基类(在xmojmr的示例中为FXCompatibleWeapon),然后将其留在该类上。
关于java - 如何在UML类图中表示两个类之间的可互换关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27731488/