掌握14种UML图,清晰图示

目录

什么是UML?

为什么要用UML?

UML图有哪些?

UML图概览

什么是类图?

泛化(Generalization)

实现(Realization)

关联(Association)

聚合(Aggregation)

组合(Composition)

依赖(Dependency)

什么是组件图?

什么是部署图?

什么是对象图?

什么是包图?

什么是组合结构图?

什么是轮廓图?

什么是用例图?

什么是活动图?

什么是状态机图?

什么是序列图?

什么是通讯图?

什么是交互概览图?

什么是时序图?

总结


什么是UML?

UMLUnified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言。

为什么要用UML?

通过使用UML使得在软件开发之前, 对整个软件设计有更好的可读性,可理解性,从而降低开发风险。同时,也能方便各个开发人员之间的交流。

UML提供了极富表达能力的建模语言,可以让软件开发过程中的不同人员分别得到自己感兴趣的信息。

Page-Jones 在《Fundamental Object-Oriented Design in UML》 一书中总结了UML的主要目的,如下:

  1. 为用户提供现成的、有表现力的可视化建模语言,以便他们开发和交换有意义的模型。
  2. 为核心概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。
  3. 独立于特定的编程语言和开发过程。
  4. 为了解建模语言提供一个正式的基础。
  5. 鼓励面向对象工具市场的发展。
  6. 支持更高层次的开发概念,如协作,框架,模式和组件。
  7. 整合最佳的工作方法 (Best Practices)。

UML图有哪些?

  • UML图分为结构图和行为图。
  • 结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。
  • 行为图又分活动图、用例图、状态机图和交互图。
  • 交互图又分为序列图、时序图、通讯图、交互概览图。

UML图概览

 

什么是类图

  • 【概念】 类图是一切面向对象方法的核心建模工具。类图描述了系统中对象的类型以及它们之间存在的各种静态关系。
  • 【目的】用来表示类、接口以及它们之间的静态结构和关系。

在类图中,常见的有以下几种关系。

泛化(Generalization)

  • 【泛化关系】是一种继承关系,表示子类继承父类的所有特征和行为。
  • 【箭头指向】带三角箭头的实线,箭头指向父类。

实现(Realization)

  • 【实现关系】是一种类与接口的关系,表示类是接口所有特征和行为的实现。
  • 【箭头指向】带三角箭头的虚线,箭头指向接口。

关联(Association)

  • 【关联关系】是一种拥有关系,它使得一个类知道另一个类的属性和方法。
  • 【代码体现】成员变量
  • 【箭头指向】带普通箭头的实线,指向被拥有者。双向的关联可以有两个箭头,或者没有箭头。单向的关联有一个箭头。

 自己买的车,想什么时候开就开。但是车是车,人是人,没有整体与部分的关系。

聚合(Aggregation)

  • 【聚合关系】是一种整体与部分的关系。且部分可以离开整体而单独存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
  • 【代码体现】成员变量
  • 【箭头指向】带空心菱形的实线,空心菱形指向整体。

 电脑有键盘才能输入信息,电脑是整体,键盘是部分,键盘也可以离开电脑,单纯的拿去敲。所以是聚合。

组合(Composition)

  • 【组合关系】是一种整体与部分的关系。但部分不能离开整体而单独存在,组合关系是关联关系的一种,是比聚合关系还要强的关系。
  • 【代码体现】成员变量
  • 【箭头指向】带实心菱形和普通箭头的实线,实心菱形指向整体。

鸟是整体,翅膀是部分。鸟死了,翅膀也就不能飞了。所以是组合。我们再看一下,下面的一组经典的聚合组合关系的例子。

一个公司拥有多个部门,公司和部门之间是组合关系,公司破产了,部门就不复存在了。部门和员工是聚合关系,部门被裁掉,员工就换下家了。

依赖(Dependency)

  • 【依赖关系】是一种使用关系,即一个类的实现需要另一个类的协助。
  • 【箭头指向】带普通箭头的虚线,普通箭头指向被使用者。

 老司机只管开车,车是谁的不重要,给什么车开什么车。

 

 

什么是组件图

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

 订单系统组件依赖于客户资源库和库存系统组件。中间的虚线箭头表示依赖关系。另外两个符号,表示组件连接器,一个提供接口,一个需要接口。

什么是部署图

  • 【概念】描述了系统内部的软件如何分布在不同的节点上。
  • 【目的】用来表示软件和硬件的映射关系。

 图中简单的表示,不同机器上面部署的不同软件。

什么是对象图?

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

图中就是描述的,某时间点bat这个公司有一个研发部,一个销售部,两个部门只有一个人iisheng

什么是包图?

  • 【概念】描绘了系统在包层面上的结构设计。
  • 【目的】用来表示包和包之间的依赖关系。

 

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

 

什么是组合结构图?

  • 【概念】描述了一个"组合结构"的内部结构,以及他们之间的关系。这个"组合结构"可以是系统的一部分,或者一个整体。
  • 【目的】用来表示系统中逻辑上的"组合结构"。

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

什么是轮廓图?

  • 【概念】轮廓图提供了一种通用的扩展机制,用于为特定域和平台定制UML模型。
  • 【目的】用于在特定领域中构建UML模型。

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

什么是用例图

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

 

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

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

什么是活动图?

  • 【概念】描述了具体业务用例的实现流程。
  • 【目的】用来表示用例实现的工作流程。

图中简单描述了,从开始到登录到查看订单列表,或者登录失败直接结束。

什么是状态机图?

  • 【概念】状态机图对一个单独对象的行为建模,指明对象在它的整个生命周期里,响应不同事件时,执行相关事件的顺序。
  • 【目的】用来表示指定对象,在整个生命周期,响应不同事件的不同状态。

 

 图中描述了,门在其生命周期内所经历的状态。

什么是序列图

  • 【概念】序列图根据时间序列展示对象如何进行协作。它展示了在用例的特定场景中,对象如何与其他对象交互。
  • 【目的】通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

 图中展示的是支付宝条码支付场景的序列图。其中,loop是循环,alt是选择,序列图的其他关系这里就不介绍了。

什么是通讯图?

  • 【概念】描述了收发消息的对象的组织关系,强调对象之间的合作关系而不是时间顺序。
  • 【目的】用来显示不同对象的关系。

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

什么是交互概览图?

  • 【概念】交互概览图与活动图类似,但是它的节点是交互图。
  • 【目的】提供了控制流的概述。

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

什么是时序图?

  • 【概念】时序图被用来显示随时间变化,一个或多个元素的值或状态的更改。也显示时控事件之间的交互和管理它们的时间和期限约束。
  • 【目的】用来表示元素状态或者值随时间的变化而变化的视图。

 图中展示了老年痴呆病人随着时间的变化病情的变化。

总结

学习UML,我们没必要纠结比如像聚合关系是带箭头还是不带箭头,这样的问题。更重要的是UML图所给我们带来的画图思想,让我们画UML图或者其他图能让其他人更好的理解我们的设计思想。

  • 678
    点赞
  • 4375
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
### 回答1: UML 2.0中共有14,以下仅针对主要的几进行介绍。 1. 用例(Use Case Diagram):用于表示系统的功能需求和参与者之间的关系,描述系统的用例和参与者以及它们之间的交互。 2. 类(Class Diagram):用于表示系统中的类及其之间的关系和属性,描述系统的静态结构。 3. 对象(Object Diagram):用于展示某一特定时间下系统的对象及其之间的关系,描述系统的静态结构。 4. 组件(Component Diagram):展示软件系统中组件的结构和关系,描述系统的组件和它们之间的通信。 5. 部署(Deployment Diagram):描述系统中物理设备和软件的部署情况,展示系统的物理结构。 6. 顺序(Sequence Diagram):用于描述对象之间的交互,强调时间顺序。 7. 通信(Communication Diagram):描述对象之间的交互,强调对象之间的消息传递。 8. 引用(Timing Diagram):展示对象的状态和消息在时间上的变化,描述时间顺序和对象状态的变化。 9. 交互概述(Interaction Overview Diagram):描述多个时序、活动和通信之间的交互。 10. 状态(State Machine Diagram):用于描述对象在其生命周期中状态的变化和触发这些变化的事件。 11. 活动(Activity Diagram):用于描述系统的业务流程,显示业务流程的流转顺序和各操作的控制流程。 12. 混合结构(Composite Structure Diagram):展示系统中复杂对象的结构和关系,描述对象的复合结构。 13. 包(Package Diagram):用于组织和管理UML模型的组件,展示模型元素的层次结构。 14. 剖面(Profile Diagram):用于扩展或自定义UML元模型,表示模型元素的语义扩展。 ### 回答2: UML(Unified Modeling Language)是一用于软件开发的建模语言,旨在帮助开发人员设计和构建高质量的软件系统。UML 2.0 版本提供了14不同类型的形,每像都有其特定的用途,如下所示: 1. 用例(Use Case Diagram):用于描述系统的功能和用户之间的关系,显示系统中的不同角色和用例之间的交互。 2. 类(Class Diagram):用于表示系统中的类、接口和它们之间的关系,显示类的属性、方法和关联关系。 3. 对象(Object Diagram):用于展示类的实例以及它们之间的关系。 4. 顺序(Sequence Diagram):用于展示对象之间的交互和消息传递的顺序。 5. 协作(Collaboration Diagram):类似于顺序,用于展示对象之间的合作和消息传递。 6. 状态(State Machine Diagram):用于表示对象的不同状态以及状态之间的转换。 7. 活动(Activity Diagram):用于展示系统中的工作流程、行为和控制流程。 8. 构件(Component Diagram):用于展示系统的物理组成部分以及它们之间的依赖关系。 9. 部署(Deployment Diagram):用于展示系统的物理架构和组件之间的部署关系。 10. 包(Package Diagram):用于组织和管理类、包和其他模型元素之间的层次关系。 11. 通信(Communication Diagram):类似于协作,用于展示对象之间的通信和消息传递。 12. 交互概览(Interaction Overview Diagram):用于展示多个交互的概览,可以简化复杂的交互。 13. 定时(Timing Diagram):用于展示对象之间的时序关系,表示不同对象的活动和事件的发生顺序。 14. 位置(Composite Structure Diagram):用于展示系统中的组合结构,显示组合部分和整体之间的关系。 通过使用这些不同类型的UML,开发人员可以更好地理解和描述软件系统的各个方面,从而实现更加高效和可靠的软件开发过程。 ### 回答3: UML 2.0是一软件工程领域常用的建模语言,它提供了一系列的表来描述软件系统的不同方面。以下是UML 2.0中的14常见表: 1. 用例:用于描述系统中不同角色(actor)与系统功能(use case)之间的交互。 2. 类:用于描述系统中的各个类、类之间的关系和属性、方法等。 3. 对象:用于展示系统中对象及其关系,具体到某个时间点的对象实例。 4. 序列:用于描述对象之间的交互顺序,显示消息在对象之间的传递和响应。 5. 协作:也称为协作表,描述多个对象之间的协作结构和消息交互。 6. 状态:用于描述对象在其生命周期内各状态和转换的表。 7. 活动:用于描述系统中的工作流程、业务流程,显示活动之间的流转和并发。 8. 组件:用于展示系统中的组件及其关系,显示组件间的依赖、接口和部署等信息。 9. 部署:用于展示系统中的物理部署架构,显示软件和硬件组件的布局。 10. 通信:也称为协作,描述不同对象间的交互和消息传递。 11. 包:用于组织和展示系统中各个元素(如类、包)之间的层次和依赖关系。 12. 构件:用于描述系统内部的构建组件和构建关系。 13. 时间:用于描述系统中事件的发生和顺序。 14. 概览:是一个综合表,用于概述系统中各个表之间的关系和结构。 这些表在软件开发中起到了重要的作用,帮助开发团队更好地理解和设计系统。不同的表适用于不同的场景,通过这些表的使用,可以提高团队的沟通和协作效率,同时也可以提高软件质量和开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值