UML总结

统一建模语言,一整套图表组成的标准化建模语言。方便开发人员之间的交流

1637150862079-8389f8ef-1ccf-4583-937d-a38b2fe7ceaf.png

1637135618944-43601caa-9e88-4174-a47e-325ce43a78c5.png

1637135619100-52767c66-23d4-41f7-ac8f-31cf9ec0c409.png

类图

面向对象方法的核心建模工具,用来表示类、接口以及它们之间的静态结构和关系。

面向对象设计中对象之间的关系。(低耦合)

1637152227471-9e4af3b2-c5ee-44fa-bc09-748dd7f11899.png

1612580394813-c84f0f2e-122e-42b1-a1de-8715d68713a9.png

1612586642500-cd6be426-3830-4a1c-84e0-86be1a9a351b.png

泛化|纵向(继承)

Generalization:继承之后自己增加一些功能,就是泛化

  • 代码实现
    • 接口之间的继承
    • 类之间的继承

1637135618978-eef47536-cbcc-4621-b2f1-17336b9ee973.png

实现|纵向(实现)

Realization:对于抽象的实现

  • 代码实现
    • 实现(多)接口

1637135757318-0e05dbb7-97e6-4982-ad39-ceda116f7027.png

依赖|横向(最弱)

Dependency:一个类依赖于另一个类的定义,不存在整体和局部的关系

  • 代码实现
    • 变量(成员变量、局部变量、方法的形参和返回值)
    • 静态方法的调用
  • 应用
    • service里面对 mapper,entity,Result 的引用
    • 人和计算机
    • 动物和水氧气

1637135897523-ad54de9c-3cfe-4cd4-8739-3ce4547da880.png

关联|横向(弱)

Association:**一个类知道另一个类的属性和方法,**不存在整体和局部的关系

关联可以用单向箭头表示单向关联,使用双箭头表示双向关联(不建议)。

关联是类与类,类与接口之间的一种比较强烈的关系,它不是临时性的,而是长期性的。

  • 代码实现
    • 成员变量
  • 应用
    • 老师和学生和课程
    • 丈夫和妻子
    • 企鹅和气候

1637135766317-fe5216f0-6d91-40ef-b35f-dce28651dfb9.png

聚合|横向(次强)

Aggregation:关联关系的特例,“弱拥有”的关系,即has-a的关系。聚合是整体个体之间的关系。

  • 代码实现
    • 成员变量
  • 应用
    • 汽车和轮胎
    • 汽车和引擎

1637135779064-08255b77-ae20-4309-8afc-daa441c80d5e.png

组合|横向(最强)

Composition整体和个体必须同时存在

  • 代码实现
    • 成员变量
  • 应用
    • 公司和部门
    • 菜单和菜单项

1637135859093-4a6134c2-0d6a-444d-834f-906b62bd0950.png

关联和依赖的区别

关联可以看做是类A在类B中的成员变量,has a的关系。

依赖可以理解为类A的某个方法里面使用了类B,

明显二者的关联强度是不一样的。

关联表示has-a关系,如学生拥有一个课程,往往表现为B作为A的属性存在(A关联B)

依赖表示要做一件事情,离不开某个对象。往往表现为B作为A的方法参数存在(A依赖B)

组件图

描绘了系统中组件提供的、需要的接口、端口等,以及它们之间的关系。用来展示各个组件之间的依赖关系。

订单系统组件依赖于客户资源库和库存系统组件。

中间的虚线箭头表示依赖关系。

另外两个符号,表示组件连接器,一个提供接口,一个需要接口。

1637136276810-e74b92d2-743e-41b5-a593-9ae4bb7a253a.png

部署图

系统内部的软件如何分布在不同的节点上。表示软件和硬件的映射关系。

1637136371806-2514def8-4b77-4287-b82d-0eda35b6c331.png

对象图

对象图是类图的一个实例,是系统在某个时间点的详细状态的快照。用来表示两个或者多个对象之间在某一时刻之间的关系。

1637136438601-8879e06f-e109-409e-823a-eb7f205e3d58.png

某时间点bat这个公司有一个研发部,一个销售部,两个部门只有一个人iisheng。

包图

描绘了系统在包层面上的结构设计。包之间依赖关系

1637136520061-38264fd6-19dc-4da8-b80a-b7cce65f71cf.png

  • 《Use》关系表示使用依赖,Web Shopping依赖Payment
  • 《Merge》关系表示合并,Web Shopping合并了Shopping Cart就拥有了Shopping Cart的功能
  • 《Access》关系表示私有引入,比如代码中的指定包名类名
  • 《Import》关系表示公共引入,比如Java中的import之后,就可以直接使用import包中的类了。

组合结构图

描述了一个"组合结构"的内部结构,以及他们之间的关系。这个"组合结构"可以是系统的一部分,或者一个整体。系统中逻辑上的"组合结构"。

1637136612854-609521d0-8617-4184-b108-dd33a2ae4b2f.png

图中描述了Car是由车轴连接着的两个前面轮子、两个后面轮子,和引擎组合的。

轮廓图

轮廓图提供了一种通用的扩展机制,用于为特定域和平台定制UML模型。

1637136681919-23d53be2-36b3-40d6-84df-07014d2c97f2.png

图中我们定义了一个简易的EJB的概要图。Bean是从Component扩展来的。Entity Bean和Session Bean继承了Bean。EJB拥有Remote和Home接口,和JAR包

用例图

指由参与者、用例,边界以及它们之间的关系构成的用于描述系统功能的视图。描述整个系统的功能。

1637136798166-50dda6dc-995f-4cbd-8287-1db817cb43e8.png

用例图中包含以下三种关系:

  • 包含关系使用符号《include》,想要查看订单列表,前提是需要先登录。
  • 扩展关系使用符号《extend》,基于查询订单列表的功能,可以增加一个导出数据的功能
  • 泛化关系,子用例继承父用例所有结构、行为和关系。

活动图Business Process Diagram

具体业务用例的实现流程。用例实现的工作流程。

1637136921598-015d88b5-9687-411f-84c8-f2bbcf235049.png

从开始到登录到查看订单列表,或者登录失败直接结束。

状态机图

对一个单独对象的行为建模,指明对象在它的整个生命周期里,响应不同事件时,执行相关事件的顺序。在整个生命周期,响应不同事件的不同状态。

1637137008606-839574a2-7376-4c65-b33c-9cc1d18482fa.png

门在其生命周期内所经历的状态。

序列图

根据时间序列展示对象如何进行协作。它展示了在用例的特定场景中,对象如何与其他对象交互。

描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

1637137095521-20340d5f-0447-4e72-bb31-16872d6d4d0c.png

图中展示的是支付宝条码支付场景的序列图。其中,loop是循环,alt是选择,

通讯图

描述了收发消息的对象的组织关系,强调对象之间的合作关系而不是时间顺序。

1637137186472-f4c35cdf-0248-48b9-a5da-5cd328d5d80f.png

线上书店的通讯图,方框和小人表示生命线,不同生命线之间可以传递消息,消息前面的数字可以表达序列顺序。

交互概览图

交互概览图与活动图类似,但是它的节点是交互图。

提供了控制流的概述。

1637137310892-815c0f01-5b15-455b-9cdf-575f293a694d.png

图中表示一个调度系统的交互概览图,跟活动图很像。其中sd的框代表具体的交互流程,ref框代表使用交互。

时序图

元素状态或者值随时间的变化而变化的视图。

1637137403386-c4df9557-f617-4646-af0f-70b3e6cc5cce.png

老年痴呆病人随着时间的变化病情的变化。

参考链接

https://www.yinxiang.com/everhub/note/d2f91fe6-22bc-4d73-a15a-9b0d28e19326

posted on 2025-10-14 22:44  chuchengzhi  阅读(17)  评论(0)    收藏  举报

导航

杭州技术博主,专注分享云计算领域实战经验、技术教程与行业洞察, 打造聚焦云计算技术的垂直博客,助力开发者快速掌握云服务核心能力。

褚成志 云计算 技术博客