You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:Professor与Student实现Person接口在两种UML交互图中的表示

当然可以在通信图(Communication Diagram)和系统序列图(System Sequence Diagram)里呈现这种接口实现的关系!下面我分别给你拆解说明~

1. 通信图的呈现方式

通信图聚焦于对象之间的消息传递,接口实现的关系可以通过对象的类型标注来明确体现。毕竟通信图里的每个对象都对应类图中的某个类,我们可以直接在对象标识里补充它实现的接口信息。

举个简单的场景:假设一个Course对象需要从教授和学生那里获取个人信息,而getInfo()方法正是定义在Person接口里的。对应的通信图可以这么呈现:

  • 参与交互的对象:
    • CS101:Course(一门课程对象)
    • Smith:Professor <<实现>> Person(Smith教授对象,标注它实现了Person接口)
    • Alice:Student <<实现>> Person(Alice学生对象,标注它实现了Person接口)
  • 消息交互流程:
    1. CS101 向 Smith 发送 getInfo() 消息(这个方法来自Person接口)
    2. Smith 返回包含姓名、职称的信息给 CS101
    3. CS101 向 Alice 发送 getInfo() 消息
    4. Alice 返回包含姓名、学号的信息给 CS101

如果用简洁的符号化写法,会是这样:

CS101:Course --> Smith:Professor <<实现>> Person : getInfo()
Smith:Professor <<实现>> Person --> CS101:Course : "Smith, 教授"
CS101:Course --> Alice:Student <<实现>> Person : getInfo()
Alice:Student <<实现>> Person --> CS101:Course : "Alice, 2023001"
2. 系统序列图的呈现方式

系统序列图主要展示外部参与者和系统之间的交互,但如果需要体现系统内部对象的接口实现关系,同样可以在内部对象的标注里补充说明。

比如我们设计一个场景:管理员(外部参与者)请求系统获取某个人员的信息,系统根据人员ID判断是教授还是学生,实例化对应的对象(都实现Person接口)并调用接口方法:

  • 参与者:
    • Admin(外部管理员)
    • SchoolSystem(学校系统)
    • 内部对象:TargetPerson:Professor <<实现>> Person 或 TargetPerson:Student <<实现>> Person
  • 交互流程:
    1. Admin 向 SchoolSystem 发送 retrievePersonInfo("P001") 请求(P001是教授ID)
    2. SchoolSystem 实例化 DrBrown:Professor <<实现>> Person 对象
    3. SchoolSystem 调用 DrBrown 的 getInfo() 方法(来自Person接口)
    4. DrBrown 返回个人信息给 SchoolSystem
    5. SchoolSystem 将信息返回给 Admin

如果是学生ID的情况,只需要把内部对象换成Bob:Student <<实现>> Person即可,调用的getInfo()方法依然是Person接口定义的。

补充说明

要注意的是,类图是用来定义静态结构的,重点在类、接口之间的继承/实现关系;而通信图和系统序列图是展示动态交互的,接口实现关系更多是作为对象的“能力说明”标注出来,让看图的人清楚这个对象能够响应哪些来自接口的消息。

内容的提问来源于stack exchange,提问作者EliiTryToLearn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:04:57