Interface 如何在UML中显示接口和类之间的关系?

Interface 如何在UML中显示接口和类之间的关系?,interface,uml,class-diagram,class-design,staruml,Interface,Uml,Class Diagram,Class Design,Staruml,我有一些相关的接口和类,我想在UML中表示抱歉,关于这些关系,我不知道如何正确地使用StarUML: 接口ISMS实现IMessage和IStorable的想法,而不是让SMS类直接实现自己的两个接口,旨在使项目更加模块化、可维护和易于测试 这是设计的好方法吗?如果是这样,这是在UML类图中表示它们的一种好方法,还是有更好的方法来表示接口及其与UML中其他接口/类的关系 这是设计的好方法吗 我认为是的,也因为MMS如果你加上它也可以实现ISMS也可能重命名该接口 对于IEmail,它不太清楚,只

我有一些相关的接口和类,我想在UML中表示抱歉,关于这些关系,我不知道如何正确地使用StarUML:

接口ISMS实现IMessage和IStorable的想法,而不是让SMS类直接实现自己的两个接口,旨在使项目更加模块化、可维护和易于测试

这是设计的好方法吗?如果是这样,这是在UML类图中表示它们的一种好方法,还是有更好的方法来表示接口及其与UML中其他接口/类的关系

这是设计的好方法吗

我认为是的,也因为MMS如果你加上它也可以实现ISMS也可能重命名该接口

对于IEmail,它不太清楚,只是简化了电子邮件和其他使用接口的类,使其具有一个接口而不是两个接口

我很肯定,我会说得更多:-

这是在UML类图中表示它们的好方法,还是有更好的方法来表示接口及其与UML中其他接口/类的关系


表示类实现接口的关系是用虚线绘制的实现,您使用了泛化,因此也添加了MMS:

。。。实现IMessage和IStorable的ISMS


警告:这不是一个实现,因为ISMS是一个接口,与IEmail相同,这就是为什么接口之间的继承由泛化而不是实现支持的原因。

我在上面有几点意见

你的设计 将接口分解为IStorable和IMessage乍一看似乎是一个良好的应用程序

将这两个接口组合成一个可重用的ISMS接口,而不是直接在具体的SMS类中实现它们,这将使您的代码更易于维护,因为如果你认为SMS功能可以是特定于平台的,那么它将很容易地用替代的SMS实现替换,这是有意义的。 然而,问题是短信和电子邮件是否不能互换使用。但只有你能回答这个问题:如果你的设计需要保持这些通信通道的不同,并且你的真实代码可能会在两个接口之间添加一些差异,那就好了。但如果不是这样,允许这种互换性并用一个更通用的INotification取代ISMS和IEmail是有意义的

您的UML表示 首先,我想强调布鲁诺关于泛化素线和虚线之间的区别的观点

也许我是老派,但我建议使用更为传统的方法,而不是使用圆圈作为接口,例如在接口名称上方使用带有关键字«interface»的类框。特别是如果你有属性和操作


在我看来,圆圈更适合于界面的棒棒糖符号。当您对接口本身没有什么要说的,但是想要显示类实现了棒棒糖或依赖于套接字的接口时,这是非常实用的。然后在另一个更详细的图中定义接口细节。从理论上讲,您可以将两个符号合并到同一个图表中,但我个人认为可读性较差,因此不建议这样做。

表示类实现接口的关系是一种实现,使用虚线表示,您使用了泛化ISMS实现IMessage和IStorable`这不是一个实现,同样适用于IEMail非常清楚!在这样的回答之后,很难再多加一点!也许你可以在接口之间添加一句关于泛化的额外语句:在类和接口之间,这是非常清楚的,但就我个人而言,我总是在接口之间犹豫不决;它是java语法所建议的泛化,还是一种实现,因为它毕竟只是关于通过传递性实现的需求。谢谢你的回答。我认为我的问题是我不能使用StarUML实现;出于某种原因,它不允许我这样做,所以我不得不使用泛化来组合这个例子。谢谢你指出这一点,因为这意味着它显然有问题。我将修改它,看看在做UML图时哪里出了问题。关于方法,再次感谢您让我知道。当我慢慢地对这一切有了更好的理解时,我感觉好多了。@Christophe在接口之间它是一种泛化,norm说实现是两组模型元素之间的一种特殊抽象关系,一个代表供应商规范,另一个代表客户规范的实施,实施必须由“客户”直接完成,事实上,接口不知道它是否已实施,因此不能影响它概括其他接口的方式
@CarlosMira也许是从StarUml转变为Bouml的时候了-我想是的。我使用StarUML是因为它是我们在实践中使用的软件。但是是的,我会调查Bouml。谢谢@布鲁诺,这是一个很好的解释。非常感谢。我现在真的明白多了。我希望我也能选择你的答案。我觉得你的评论非常非常有帮助。再次感谢你@Christophe。关于短信和电子邮件,它们不能互换。我只是想让这个例子保持简单。关于UML表示,正如bruno所说,我将更改类和接口之间的链接,以正确显示它们之间的关系。我有一本Simon Bernett使用UML进行OO系统分析和设计的书,但我不太确定是使用棒棒糖符号还是使用类框。我想我也更喜欢教室。当有属性和操作时,它更具可读性。