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

2023-12-10

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

enter image description here

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

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


我有几点评论Bruno的答案已经很明确了.

你的设计

将接口分解为IStorable and IMessage乍一看似乎是一个合理的应用接口隔离原则.

将两个接口组合成一个可重用的接口ISMS接口而不是直接在具体中实现它们SMS在这方面,类将使您的代码更易于维护,因为它可以轻松地用替代实现替换 SMS 实现(如果您认为 SMS 功能可以是特定于平台的,这是有意义的)。

然而问题是如果SMS and email不能互换使用。但只有您可以回答这个问题:如果您的设计需要保持这些通信渠道不同(也许您的真实代码在两个接口之间添加了一些差异),那就没问题。但如果没有,允许这种互换性和替换是有意义的ISMS and IEmail与一个更一般的INotification.

您的 UML 表示

首先,我想强调布鲁诺关于概括(简单线)和实现(虚线)。

也许我是老派,但我建议不要使用圆圈作为界面,而是使用更传统的界面与带有关键字的类框一样«interface»位于接口名称上方。特别是如果您拥有财产和业务。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在UML中表示接口和类之间的关系? 的相关文章

  • 在实现接口的类上强制使用单例模式

    我最好用一个例子来解释这个问题 我有一个接口模型可用于访问数据 模型可以有不同的实现 可以以各种格式表示数据 例如 XMl txt 格式等 Model不关心格式 可以说这样的一个实现是myxml模型 现在我想强迫myxml模型以及其他所有实
  • NHibernate 中具有不同类型答案的问题

    我正在尝试找到一个问卷问题的简洁解决方案 假设我有一个Questionnaire类有一个集合Answers e g public class Questionnaire public virtual ISet
  • 使用接口或函数对象进行回调? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在面向对象中 通常使用接口来实现回调 粗略示例 class Message class IMsgProcessor public virtual
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • Delphi 中表单分发与其生命周期相关的接口对象的安全方法?

    我有一个 Delphi 表单 它提供接口对象背后的功能 代码的其他部分也通过属于该表单的属性获取引用 我无法将接口功能委托给子对象 因为太多的功能是由表单上的控件 组件提供的 我无法使用 TAggregateObject 或 TContai
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 是否可以使用打字稿映射类型来创建接口的非函数属性类型?

    所以我正在研究 Typescript 的映射类型 是否可以创建一个接口来包装另一种类型 从而从原始类型中删除函数 例如 interface Person name string age number speak void type Data
  • 验证 C# 中的属性

    让我们建议我有一个接口并从中继承类 internal interface IPersonInfo String FirstName get set String LastName get set internal interface IRe
  • 具体实现是否应该提供其实现的接口中不存在的任何公共 API?

    接口代码 被认为是很好的实践 这样的代码很容易进行单元测试并实现松散耦合 用户只知道接口 并且连接具体对象的责任位于最顶层 这可以在某些初始化代码中或在帮助下完成 框架 我的问题是关于遵循以下做法代码到接口 这是否意味着具体类永远不能声明其
  • TypeScript 接口函数属性:有什么区别?

    有人可以解释一下 为什么在这段代码中 对 Interface 类型常量的赋值有效 但对 Interface 类型常量的赋值会抛出错误 interface InterfaceA doSomething data object boolean
  • 多个 WCF 服务实现相同的服务契约接口

    多个wcf服务是否可以实现同一个服务契约接口 我想要做的是允许测试服务与真实服务互换 并指定在配置文件中使用哪个服务 例如 ServiceContract public interface IUselessService Operation
  • 如何设计/规划Web应用程序开发?

    我有兴趣学习如何在多个开发团队场景中设计 规划 Web 应用程序开发 担任 项目经理 主管 的角色 成功的 Web 应用程序开发需要哪些 文档 需要哪些 UML 图以及需要到什么程度 在设计 计划阶段 是否需要根据用例对每个类进行图表化 类
  • Pear PHP UML 类图 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试创建现有代码的图形表示 我尝试使用 VS PHP 使用 Visual Studios 201
  • 是否可以通过引用以基类作为参数的函数来传递派生类

    假设我们有一个抽象基类IBase使用纯虚方法 接口 然后我们推导出CFoo CFoo2来自基类 我们有一个知道如何使用 IBase 的函数 Foo IBase input 这些情况下通常的场景是这样的 IBase ptr static ca
  • 接口的隐式和显式实现

    在进行升级时 我碰巧遇到了这样的代码 interface ICustomization IMMColumnsDefinition GetColumnsDefinition class Customization ICustomization
  • UML 中的 IsRoot、IsAbstract 和 IsLeaf 何时使用?

    我遇到了以下描述IsRoot IsAbstract IsLeaf但不明白你什么时候会使用它们 摘自http www2 sys con com itsg virtualcd dotnet archives 0108 clark index h
  • [GoF]-ConcreteSubject 可以覆盖通知方法吗?

    我正在模拟一种情况 其中存在 通知框 观察者 list1 list2 list3 这个科目 现在我会制作一张图表 其中使用观察者模式描述每个列表实现不同类型的notify 这一事实 例如 列表状态的某些变化只需要按照某些标准通知给某些观察者
  • 系统间依赖关系的UML图

    哪种 UML 图最能显示我们的 IT 系统和其他外部 IT 系统之间的依赖关系 例如我想在图表上显示 系统A从系统B获取数据 系统B可以调用系统A的一些功能 我想知道组件图和序列图之间的关系 你怎么认为 你的问题不是很具体 因为所有 UML
  • UML 帮助 C# 设计原则

    我在理解下面的 UML 时遇到问题 具体来说 两者之间有什么关系PersistentSet and ThirdPartyPersistentSet 之间有什么关系PersistentObject and ThirdPartyPersiste
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent

随机推荐

  • 如何将 Spinner 默认值设置为 null?

    我正在尝试加载一个没有选定值的微调器 一旦用户选择了一个值 它就会将他们带到另一个页面 事实证明这是一个问题 因为目前页面只是在用户做出选择之前立即加载 我的 spinner 类的设置方式与 Google 的相同 http develope
  • 使用 document.body.innerHTML.replace 有多安全?

    正在运行类似的东西 document body innerHTML document body innerHTML replace 旧值 新值 危险的 我担心某些浏览器可能会搞乱整个页面 而且由于这是 JS 代码 这些代码将被放置在我无法控
  • 如何获取当前 .exe 的哈希值?

    SOLVED 我复制了该文件并在该副本上运行了哈希器 我需要我的应用程序来查找 EXE 当前的 MD5 我可以获取任何文件的MD5 但是 无论我做什么 我都无法获得 FileStream 来读取打开的 EXE 我尝试使用 FileOptio
  • 修改 google.translate.TranslateElement 结果中的元素

    我正在尝试将非常方便的 Google Translate 翻译元素嵌入到网页中 这非常简单并且效果很好 但我需要更改在生成的 HTML 中显示的默认文本 在使用过许多 Google API 和 js 库后 我认为这不会有问题 因为它几乎肯定
  • 创建 HuggingFace 数据集来训练 BIO 标记器

    我有一个字典列表 sentences text I live in Madrid labels O O O B LOC text Peter lives in Spain labels B PER O O B LOC text He lik
  • 使用处理程序从服务更新活动

    我想改变 a 的状态ToggleButton in my Activity当事件发生在service 任何人都可以帮我实现这个使用Handler 我的意思是我应该在哪里编写代码来创建处理程序以及如何从服务触发它 我读过类似的帖子 但是它们对
  • 地点选择器自动关闭

    我正在 android 中制作一个简单的地点选择器程序 问题是当我单击按钮时 地点选择器打开并在 2 3 秒后自动关闭 请帮忙 MainActivity java package com example akshay myapplicati
  • Android 发布高分辨率图像内存不足

    各位开发人员大家好 我正忙着让 android 从应用程序上传图像 我也让它工作了 代码如下 但是 当我发送大图像 10 兆像素 时 我的应用程序因内存不足异常而崩溃 解决方案是使用压缩 但如果我想发送全尺寸图像怎么办 我想也许与流有关 但
  • UINavigationController:每次转换后显示具有不同方向的嵌入式视图控制器?

    这是 StackOverflow 上的一个常见问题 但其他解决方案均无效 许多也是几年前写的 以下是一些考虑的帖子 UINavigationController 内的 viewController 是否可以有不同的方向 UINavigati
  • 我可以在返回 void 的函数中使用 return 语句吗?

    我必须返回到递归的上一级 下面的语法对吗 void f some code here return 是的 您可以从 void 函数返回 有趣的是 您还可以从 void 函数返回 void 例如 void foo return void 正如
  • 如何使用 Keras 实现 CNN-LSTM

    我正在尝试实现一个 CNN LSTM 对代表帕金森病 健康控制者语音的梅尔频谱图像进行分类 我正在尝试使用 LSTM 模型实现预先存在的模型 DenseNet 169 但是遇到以下错误 ValueError Input 0 of layer
  • 如何区分活动娱乐是由屏幕旋转还是内存不足引起的

    根据http developer android com training basics activity lifecycle recreating html 有多种方法可以触发活动重新创建 屏幕旋转 内存不足的情况 我意识到屏幕旋转 an
  • MySQL:将大表拆分为分区或单独的表?

    我有一个包含 20 多个表的 MySQL 数据库 但其中一个非常大 因为它从不同的传感器收集测量数据 它的磁盘大小约为 145 GB 包含超过 10 亿条记录 所有这些数据也被复制到另一台 MySQL 服务器 我想将数据分成更小的 碎片 所
  • 半径为 x 的圆中的整数坐标的更快解决方案是什么

    我正在尝试创建一种方法 返回半径为 rad 的圆内的整数坐标计数 但我相信我当前的解决方案太慢了 为了更好地实施 您有什么建议 我想自己编写解决方案 因为我仍然是初学者 这是我当前的解决方案 def points rad possibleP
  • 如何将asp.net转发器控件动态绑定到数据源

    I have a page with a simple dropdown and repeater control in page on submit repeater control is bound to datasource1 whi
  • 有没有办法在 WebView 中使用 Apple San Francisco?

    我的 CSS 样式表似乎工作正常 但我无法将字体更改为与 iOS 11 中使用的系统字体非常匹配的字体 这是我尝试过的 body html color red font family San Francisco 字符颜色为红色 但字体不变
  • Cordova 应用程序“Android 权限 Cordova 插件”未显示权限对话框

    我正在为我的科尔多瓦应用程序使用 imagepicker 插件来从移动图库获取图像并使用它们 我正在 android 6 0 设备上测试我的应用程序 这就是问题所在 marshmallow Android 6 0 需要运行时权限 不像旧版本
  • 使用 OpenEntityManagerInViewFilter 进行延迟初始化?

    我有一些已经可以工作的 JBoss web 应用程序 以及一个延迟初始化问题 因此 建议我在 Spring 中进行调查并使用OpenEntityManagerInViewFilter 尽管如此 我仍然收到错误 希望你能帮助我吗 我还需要在应
  • PHP - 在闭包中访问全局变量的“use()”或“global”之间的区别?

    以下两种在闭包中访问全局变量的情况之间是否存在任何性能或其他差异 Case 1 closure function use global variable Use global variable to do something Case 2
  • 如何在UML中表示接口和类之间的关系?

    我有一些相关的接口和类想要在 UML 中表示 抱歉这些关系 我不知道如何使用 StarUML 正确地做到这一点 实现 IMessage 和 IStorable 的接口 ISMS 的想法 而不是让 SMS 类直接实现这两个接口 旨在使项目更加