UML是什么?常用的几种图有哪些?

UML,统一建模语言,是软件开发中的关键工具,用于清晰表达系统设计,增强团队沟通。本文深入讲解UML的五种类型图:用例图、静态图、交互图、行为图和实现图,以及九种常见图的应用场景,帮助读者掌握UML的核心概念。

UML即Unified Model Language,是一种建模语言,也是标准建模语言。在软件开发中,当系统规模比较复杂时,需要用图形抽象地来表达复杂的概念,让整个软件设计更具有可读性,可理解性,以便尽早发现软件设计时存在的潜在问题,从而降低开发风险。同时,也极大地方便了业务人员与开发人员之间的交流。

 

UML标准建模语言中5种主要的类型图:

1、用例图:指的是从用户角度来描述系统功能,并且指明各功能操作者。

2、静态图:包含的是类图和对象图。类图是一种静态模型类型,是用来表示类之间的联系、类的属性以及操作,在系统的整个生命周期都是有效的。对象图则是类图的一个实例,使用的标识几乎与类图一致,但是其生命周期有限,只能在系统中某一时间段内存在。

3、交互图:包含的是时序图和协作图,是用来描述对象之间的交互关系。时序图强调的是对象之间的消息发送顺序,是对象之间动态合作关系。协作图则是用来描述对象之间的协作关系,既显示对象间的动态合作关系,又显示对象以及它们之间的关系。时序图用来强调时间和顺序,协作图则用来强强调上下级的关系。

4、行为图:包含的是活动图和状态图,是用来描述系统的动态模型于组成对象之间的交互关系。活动图描述的是为了满足用例要求所进行的活动以及活动间的约束关系,方便识别并进行活动。状态图是类的补充,是用来描述类的对象所有可能的状态以及事件发生时状态的转移条件。

5、实现图:包含的是部署图和组件图。部署图是用来表示建模系统的物理部署。组件图则用来表示建模软件的组织以及其相互之间的关系。

UML建模时常见的9种图:

1、用例图:

用例图是需求分析的产物,主要是用来描述用户是如何使用一个系统的,是用户所能观察和使用到的系统功能的模型图。

2、类图:

UML类图,是用来描述系统中的类以及各个类之间的关系。系统中可以有多个类图,单个类图则只是表达了系统的一个方面。类图可以帮助我们在正确编写代码之前对系统有个很全面的认识,是建模中最常见的一种类型图。

3、对象图:

对象图描述的是一组对象之间的关系,而不是类之间的关系。它是类图的变体,但是又与之不同,对象显示的类的多个对象而不是实际的类。

4、活动图:

UML活动图,顾名思义就是UML的动态模型的一种图形,对于系统的功能建模特别重要。它用来描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。简单来讲,就是表示在处理某个活动时,两个或者更多类对象之间的过程控制流。

5、状态图:

UML状态图,用于显示状态机,即描述一个对象所处的可能状态以及状态之间的转移。用状态图建模可以帮助开发人员分析复杂对象的各种状态的转换,以及对象何时执行怎样的动作。

6、时序图:

UML时序图,又叫序列图或者顺序图,是一种用来描述对象之间传送消息的时间顺序,是用来表示用例中的行为顺序。

7、协作图:

UML协作图(又叫通信图)是一种作用于显示对象之间如何进行交互以执行特点用例或用例中特点部分行为的交互图,它强调的是发送和接收消息的对象之间的组织结构。

8、组件图:

UML组件图(又叫构件图),是用来描述在软件系统中遵从并实现一组接口的物力的、可替换的软件模块。它所表现的是一种系统静态实现的结构,能够帮助开发人员对系统组成达成一致的认识。

9、部署图:

UML 部署图是一个用来描述系统的硬件配置和部署以及软件的构件和模块在不同节点上分布的模型图。它能够帮助系统相关人员了解系统中各个构件部署在什么硬件上以及硬件之间的交互关系。

UML中的各种图之间的区别:

1、各有其侧重点:比如说用例图侧重于描述用户的需求,而类图则侧重于描述系统的具体实现。

2、所描述的方面各不相同:比如类图是用来描述系统结构的,序列图则是用来描述系统行为的。

3、抽象的层次也不尽相同:比如头见图是用来描述系统的模块结构,抽象层次比较高,而对象图则用来描述具体的模块实现,抽象层次就比较低。

### UML的类型及其用途 UML(Unified Modeling Language,统一建模语言)是一种标准化的建模语言,用于可视化、指定、构建和记录软件系统的各个方面。UML 分为两大类:**结构**和**行为**。 #### 结构 结构展示了系统中静态的部分,即构成系统的物理或概念上的元素之间的关系。常见的结构有: 1. **类 (Class Diagram)** 类是最常用UML 之一,用来展示系统中的类、接口以及它们之间的关系。它是分析和设计阶段的重要工具,帮助开发者定义系统的静态结构[^1]。 2. **对象 (Object Diagram)** 对象是类的一个实例,显示特定时刻一组对象及它们之间连接的关系。它有助于验证类的设计是否合理[^3]。 3. **组件 (Component Diagram)** 组件描述了系统中各个逻辑组件及其依赖关系。这些组件可以是源代码文件、动态链接库或其他可执行体。通过组件,开发人员可以清晰地看到模块间的交互方式。 4. **部署 (Deployment Diagram)** 部署展现了运行时处理节点及其在上面分布的构件配置情况。这种表对于分布式系统的架构规划非常有用[^1]。 5. **包 (Package Diagram)** 包并不是严格意义上的独立 UML 表形式,但它允许我们将多个模型元素分组到一起形成更大的单元——称为“包”。这有助于管理复杂项目中的大量类和其他实体[^2]。 #### 行为 行为关注于系统的动态部分,强调随时间变化的行为过程。主要包括以下几种: 1. **用例 (Use Case Diagram)** 用例从用户的角度出发描绘功能需求,表示参与者与系统之间的交互作用。这是需求分析阶段常用的一种方法论。 2. **顺序 (Sequence Diagram)** 序列详细说明了对象间如何按照一定的时间顺序发送消息的过程。这对于理解具体场景下的操作流程特别有价值[^3]。 3. **合作/通信 (Communication Diagram, 原 Collaboration Diagram)** 合作类似于序列,不过更侧重表现参与某个协作的对象及其关联而非精确的消息次序。 4. **活动 (Activity Diagram)** 活动类似于传统的流程,主要用于描述业务工作流或者算法的工作机制。它可以跨越不同层次来表达整个应用程序的操作细节[^1]。 5. **状态机 / 状态 (State Machine Diagram or Statechart Diagram)** 这种类型的用于捕捉对象在其生命周期内的各种可能的状态转换路径。当需要跟踪某些重要领域对象的变化历史时尤为适用。 --- ```python # 示例 Python 伪代码片段演示简单的类实现 class Person: def __init__(self, name: str): self.name = name def greet(self) -> None: print(f"Hello! My name is {self.name}") person_instance = Person("Alice") # 创建一个Person类的实例 person_instance.greet() # 调用greet方法打印问候语句 ``` --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值