软件工程(八):UML类图的几种关系

依赖(Dependency)

  • 定义:一个类使用到了另一个类(例如作为参数、局部变量等)。
  • 表示虚线箭头,箭头指向被依赖的类。
  • 关键词usesdepends on
  • 示例:类 A 的某个方法使用类 B 作为参数或返回值。
css 复制代码
A -------▷ B
(虚线箭头)

关联(Association)

  • 定义:类与类之间的一种结构关系,表示一个类知道另一个类,通常以成员变量的形式存在。
  • 表示实线连接,可加上箭头表示导航方向。
  • 可选信息:多重性(1、0...1、*)、角色名、可见性。
  • 示例:学生类与班级类之间的关系。
css 复制代码
Student ──────── Class
         1           1..*

聚合(Aggregation)

  • 定义:一种特殊的关联,表示"整体-部分"关系,部分可以独立于整体存在。
  • 表示空心菱形指向整体。
  • 示例:班级聚合多个学生,学生可独立存在。
css 复制代码
Class ◇───────── Student

组合(Composition)

  • 定义:比聚合更强的"整体-部分"关系,部分不能独立存在,生命周期与整体相同。
  • 表示实心菱形指向整体。
  • 示例:人由心脏、肝脏等组成,器官不能脱离人体单独存在。
css 复制代码
Person ◆───────── Heart

继承 / 泛化(Generalization)

  • 定义:子类继承父类的属性和方法,是一种"is-a"关系。
  • 表示空心三角形箭头指向父类。
  • 示例:猫继承自动物。
css 复制代码
Cat ─────────▷ Animal
     (空心三角形)

实现(Realization)

  • 定义:类实现接口,是一种"can do"关系。
  • 表示虚线+空心三角形箭头指向接口。
  • 示例:类实现接口 Runnable。
css 复制代码
MyClass - - -▷ Runnable
(虚线+三角)

总结

关系 表示方式 含义/语义 典型示例
依赖 虚线箭头 临时使用 方法参数、返回值
关联 实线 拥有成员引用 学生与班级
聚合 空心菱形+实线 整体与部分,可独立存在 班级和学生
组合 实心菱形+实线 整体与部分,生命周期一致 人与器官
泛化 实线+空心三角箭头 继承,是一种"是"关系 动物与猫
实现 虚线+空心三角箭头 接口实现 Runnable 与 Thread 类
相关推荐
快乐的熊二17 小时前
电脑实时监控,温度、功耗、频率一目了然
软件工程
rolt1 天前
PlantUML+EA描述《分析模式》第6章存货和会计(6)
架构师·uml·plantuml
梁辰兴1 天前
软件工程:可行性研究的方法步骤
软件工程·研究方法·可行性研究·梁辰兴·可行性研究的方法步骤·研究工具·关键要点
还是奇怪1 天前
Simon Willison 用 DSPy 优化 Datasette Agent 提示词:提示工程正在变成可测试的软件工程
java·开发语言·软件工程
快乐的熊二1 天前
短视频批量下载工具,支持直播视频下载!
软件工程
无风听海2 天前
Skills 的工程学:把经典软件工程搬进一个概率型运行时
软件工程·claude code
疯狂打码的少年2 天前
【软件工程】软件项目估算(LOC/FP/COCOMO)+ 风险管理
笔记·软件工程
疯狂打码的少年3 天前
【软件工程】软件项目管理(人员/产品/过程/项目)
笔记·软件工程
叫我Paul就好3 天前
RAG 从入门到精通 - 基础版本
人工智能·软件工程·rag
ttod_qzstudio3 天前
【软考备考】软件工程详解:四大开发模型、黑盒白盒测试、McCabe 环路复杂度(附 10 道练习)
软件工程·软考·黑盒·白盒·mccabe 环路复杂度