UML笔记
UML基本概念
- UML含义:
- UML(Unified Modeling language):统一建模语言
- U 统一:表示是一种通用的标准,称为软件工业界的一种标准。UML表述的内容能被各类人员所理解,包括客户、领域专家、分析师、设计师、程序员、测试工程师及培训人员等
- M 建模:建立软件系统的模型
- L 语言:表明它是一套按照特定规则和模式组成的符号系统,它用半形式化方法定义,即用图形符号、自然语言和形式语言相结合的方法来描述定义的。
- UML是用于标准可视化建模语言,而不是软件开发过程
- 业务建模和相关的建模
- 基于软件系统分析,设计和实现
- 作用
- UML是客户、系统分析员和程序员之间的“桥梁”
- 使用可视化建模来获取并表现商业逻辑和对象
- 使用可视化建模来分析和设计计算机应用程序
- UML从客户的角度将复杂的系统整理清楚
- UML能使越来越复杂的软件 系统架构更加合理和健壮
- UML是客户、系统分析员和程序员之间的“桥梁”
- 用途
- 做软件需求分析
- 做软件开发设计
- 做系统部署设计
- 也适用非软件领域的系统建模如企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。
- UML元素
- 结构图
- 显示了系统及其部件在不同抽象和实现级别上的静态结构以及它们如何相互关联。
- 结构图中的元素表示系统的有意义的概念,并且可以包括抽象的,现实的和实现的概念
- 结构图不使用时间相关概念,不显示动态行为的细节。
- 分类
- 行为图
- 显示了系统中对象的动态行为,可以将其描述为系统随时间的一系列更改。
- 分类
- 结构图
UML几种图的简单介绍
1.用例图(Use Case Diagram)
-
描述述了一些系统或主体(subject)应该或可以与系统的一个或多个外部用户(参与者)合作执行的一组行动(用例),以向参与者或其他利益相关者提供一些可观察到的和有价值的结果。
-
用例图是从用户角度描述系统功能, 是用户所能观察到的系统功能的模型图,可以理解成用例是系统中的一个功能单元
-
作用
- 主要作用是描述参与者和用例之间的关系,帮助开发人员可视化的了解系统的功能。
-
分类
- 业务用例图
- 系统用例图
-
基本构成要素
- 参与者
- 参与者(Actor)是指存在于系统外部并直接与系统进行交互的人、系统、子系统或类的外部实体的抽象。
- 参与者放在系统边界的外面,表明角色并不属于系统。但是角色负责直接(或间接)驱动与之关联的用例的执行。
- 用例
- 参与者使用系统达到的目标
- 所有的用例都放置在系统边界内,表明它属于一个系统
- 系统边界
- 指开发的系统与外部之间的界限
- 示例:系统用例图
- 参与者
-
归纳分析小结
- 确定用例要注意什么?
- 用例需要能够产生有价值的结果,没有产生价值的用例没有写的意义
- 用例基本是以动词+名词的形式组合的
- 不要把步骤当成用例,一个用例要能写出多个步骤,写不出来就是粒度有问题
例如:取款可以分成:插卡、输入金额、取出钱款等步骤
- 画用例图要注意什么?
- 用例重点在编写文本,像登录、注册这些就没必要当成用例,想写可以写在用例规约的前置条件
- 确定用例要注意什么?
2.类图(Class Diagram)
- 类
- 面向对象分析与设计的基础就是类
- 类是用来代表现实事物或者功能的构造块
- 通常业务人员所谈及的具体事物种类--商店,商品,货架
- 或者是概念:订单、贷款、住房抵押、汽车信贷以及利率等
- 类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象
- 类图
- 是以类为中心来组织的,是由若干类关联在一起,反映系统或者子系统组成结构的静态图(描述系统中类的静态结构)。
- 以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法
- 类图的作用
- 描述软件系统中各个类的结构和之间的关系。
- 常见类型
- 领域模型图
- 设计类图
- 元素及其符号
-
类(Class)
- 是具有共同结构特征、行为特征、联系和语义的对象集合的抽象形式。
- 包含三部分的矩形(不一定需要每次都画出三个部分,只有一个或两个都行)
- 最上面的部分:显示类的名称
- 中间部分:包含类的属性
- 最下面的部分:包含类的操作或方法
- 示例
- 类的其他变形
- 接口
- 一组操作的集合,只有操作的声明而没有实现
- 抽象类
- 不能被实例化的类,一般至少包含一个抽象操作
- 模板类
- 一种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类
- 一种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类
- 接口
-
关系
- 关联(Association):它表示类与类之间的关系。
- 如果两个类都彼此知道对方,则应该使用实线来表示关联关系
- 如果只有其中一个类知道该关联关系,则使用开箭头表示
- 泛化(Generalization):表示类与类之间的继承关系。在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间
- 聚合
- 组合
- 依赖:描述了一个类的变化对依赖于它的类产生影响的情况。
- 关联(Association):它表示类与类之间的关系。
-
3.顺序图
- 顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互
- 顺序图的一个用途是用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起状态转换的触发事件
- 顺序图有两个维度:
- 垂直维度以发生的时间顺序显示消息/调用的序列
- 水平维度显示消息被发送到的对象实例
- 元素
-
对象
- 类的实例,顶部每个框表示每个类的实例
- 类实例名和类名之间用冒号来分隔,如: myReport: Report
- 对象排列:从左至右,交互频繁的对象尽可能靠拢
-
生命线
- 表示对象的生存时间,生命线从对象创建开始到对象销毁时终止
- 两种状态:休眠,激活
- 激活
- 当一个对象没有被激活时,该对象处于休眠状态,什么事都不做,但它仍然存在,等待新的消息来激活它。
- 当一条消息被传递给对象的时候,它会触发该对象的某个行为,这时就说该对象被激活了。
- 当一个对象处于激活期时,表明该对象正在执行某个动作
- 激活用一个细长的矩阵框(在生命线上)表示。
- 激活
- 表示对象的生存时间,生命线从对象创建开始到对象销毁时终止
-
消息
- 如果某个类实例向另一个类实例发送一条消息,则绘制一条具有指向接收类实例的开箭头的连线,连线上标注消息/方法的名称
- 对象之间的交互是通过互发消息来实现的。一个对象可以请求(要求)另一个对象做某件事件。
- 消息从源对象指向目标对象。消息一旦发送便将控制从源对象转移到目标对象。
- 消息的阅读顺序是严格自上而下的
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了