假设您有一个充当桥接器/无线中继器的无线网络。如何将这两种因素都纳入类图?在我看来,拥有一个可以独立存在的父对象是一种感觉。然后,既依赖于父对象又同时创建父对象实例的子对象。子实例可以访问所有继承的属性,同时能够重载使用父实例的方法和属性的方法。

在我看来,无线中继器有一个父无线网络(聚合),但也有一个完全独立的网络继承有线网络属性。我想要这个方向,因为桥网络是主无线网络的一个专用扩展,需要能够在序列图中显示这一点。
发布于 2020-02-17 00:52:15
在您的设计中,WirelessNetwork可以有一个或多个WirelessRepeater,而WirelessRepeater本身就是WirelessNetwork。这里没有UML问题,只是如果您将继承和组合保持图形上的不同(例如,两条平行线),您的图表就会更容易阅读。
设计的结果是WirelessRepeater拥有WirelessNetwork的所有属性。但是有了它自己的价值,这并不一定与拥有网络的价值相对应。此外,中继器将提供所有网络服务,包括一些可能与中继器无关的服务(实际中继器的e.g.the配置选项与路由器的配置选项相比非常有限)。
因此,您的模型不准确:
一个更好的应用程序是使用代理模式:中继器将是网络的代理,网络和代理都将继承一个类,该类将定义对两者都可用的网络方法(例如,connect()),但不包含仅与网络相关的方法(例如setIPAdressingScheme())。
发布于 2020-02-17 00:12:51
这是多余的。当你继承的时候,你无论如何都要构造你的父母。如果你也组成自己的父母,你只是结束了你的父母的第二个实例。
继承将为您提供父级的实例、它们的接口以及它们之间的连接。
作文(和授权)给你同样的东西,但你需要额外的击键,因为你必须把所有的东西都连接起来。但是在这里你会发现很多的力量和灵活性。
在没有任何特定原因的情况下同时做这两件事,除了让维护开发人员感到困惑之外,实际上并不能给您带来什么好处。
https://softwareengineering.stackexchange.com/questions/405303
复制相似问题