UML总结

UML(统一建模语言)是软件开发中常用的一种建模工具,其中类图是核心部分。类图包括实体类、控制类和边界类,分别对应数据存储、业务逻辑和用户交互。类图组件包括类名、属性和操作,以及可见性。接口不包含属性,所有操作为抽象。关联关系描述类间的联系,聚合和组合关系体现整体与部分,依赖关系表示使用关系,泛化关系即继承,实现关系涉及接口与实现类。这些概念帮助理解和设计软件结构。

UML是什么?

UML2.0共有13中图形,类图是使用频率最高的UML图之一,类通常可以分为三种,分别是实体类(Entity Class)、控制类(Control Class)和边界类(Boundary Class):

1). 实体类对应系统需求中的每个实体,它们通常需要保存在永久存储体中,一般使用数据库表或文件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类。实体类来源于需求说明中的名词,如学生、商品等。
2). 控制类用于体现应用程序的执行逻辑,提供相应的业务操作,将控制类抽象出来可以降低界面和数据库之间的耦合度。控制类一般是由动宾结构的短语(动词+名词)转化来的名词,如增加商品对应有一个商品增加类,注册对应有一个用户注册类等。
3). 边界类用于对外部用户与系统之间的交互对象进行抽象,主要包括界面类,如对话框、窗口、菜单等。

类图

类图是一个长方形,一般由三部分组成,这三部分使用分割线区分,也有可能是四部分,其中一部分是内部类。
1). 类名
2). 属性(字段),格式为:可见性 字段名称:类型 [=缺省值]
3). 操作(方法),格式为:可见性 方法名称(参数列表) [:返回类型]
4). 可见性:public(+)、private(-)和受protected(#)
5). 注意内部类的表示方式
在这里插入图片描述在这里插入图片描述

接口

1). 在接口中,通常没有属性
2). 所有的操作都是抽象的,只有操作的声明,没有操作的实现
在这里插入图片描述

关联关系

1). 表示两个类之间有联系,如汽车和轮胎、班级和学生等等
2). 通常将一个类的对象作为另一个类的成员变量
3). 用实线连接,在关联线上可以标注角色名,一个关联线上可能包含两个角色名
4). 单向关联和自关联有一个箭头,双向关联没有箭头
5). 多重关联表示两个关联对象在数量上的对应
6). 顾客(Customer)拥有地址(Address),则Customer与Address有单向关联关系
7). 顾客(Customer)购买商品(Product),同样卖出的商品总有某个顾客与之关联
8). 一个节点类(Node)的成员又是节点Node类型的对象
9). 一个界面(Form)可以拥有零个或多个按钮(Button),但是一个按钮只能属于一个界面,因此,一个Form类的对象可以与零个或多个Button类的对象相关联,但一个Button类的对象只能与一个Form类的对象关联
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

聚合关系

1). 表示整体与部分的关系,在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。
2). 带空心菱形的实的直线表示
3). 整体指向部分
4). 汽车发动机(Engine)是汽车(Car)的组成部分,但是汽车发动机可以独立存在
在这里插入图片描述

组合关系

1). 表示整体与部分的关系,在组合关系中,整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系
2). 带实心菱形的实的直线表示
3). 整体指向部分
4). 人的头(Head)与嘴巴(Mouth),嘴巴是头的组成部分,如果头没了,嘴巴也就没了
在这里插入图片描述

依赖关系

1). 在表示一个事物使用另一个事物时,使用依赖关系
2). 可以存在于方法中的临时变量、方法中的参数和对静态方法的调用
3). 用带箭头的虚线表示,由依赖的一方指向被依赖的一方,即箭头指向被依赖者
4). 驾驶员开车,在Driver类的drive()方法中将Car类型的对象car作为一个参数传递,以便在drive()方法中能够调用car的move()方法,且驾驶员的drive()方法依赖车的move()方法,因此类Driver依赖类Car
在这里插入图片描述

泛化关系

1). 泛化(Generalization)关系也就是继承关系
2). 用带空心三角形的直线来表示
在这里插入图片描述

实现关系

1). 是接口和实现类之间存在的一种关系
2). 用带空心三角形的虚线来表示
3). 实现类指向接口
4). 定义了一个交通工具接口Vehicle,包含一个抽象操作move(),在类Ship和类Car中都实现了该move()操作
在这里插入图片描述

### UML 图类型及其应用场合总结 | 序号 | UML图名称 | 特点描述 | 主要用途 | |------|--------------|--------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| | 1 | 类图 | 描述系统的静态结构,展示类之间的关系以及属性和操作 | 设计阶段用于定义系统中的类、接口和其他实体的关系;帮助理解系统的架构[^3] | | 2 | 对象图 | 表现特定时刻的对象实例及其链接 | 展示具体场景下的对象状态,辅助理解和验证类图的设计合理性 | | 3 | 组件图 | 显示程序组件间的依赖关系 | 软件开发过程中用来规划和管理不同模块或子系统的交互 | | 4 | 部署图 | 描述硬件节点上运行的软件构件 | 系统部署时配置服务器或其他计算资源 | | 5 | 包图 | 将模型元素分组到逻辑单元内 | 大型项目的组织工具,有助于简化复杂性的处理 | | 6 | 用例图 | 定义外部参与者与系统功能之间的互动 | 收集并记录用户需求,作为沟通桥梁连接开发者和技术人员 | | 7 | 状态机图(状态图)| 描述一个实体基于事件影响的状态变化过程 | 分析和设计有限状态自动机,特别适用于实时控制系统 | | 8 | 活动图 | 流程控制流的表现形式 | 工作流程建模,强调并发性和决策路径 | | 9 | 顺序图 (序列图) | 记录消息传递的时间顺序 | 动态行为建模,特别是对于涉及时间因素的关键算法 | | 10 | 协作图 (通信图)| 强调参与交互的对象角色 | 清晰展现各对象间的信息交换模式 | | 11 | 时间图 (定时图)| 关注于随时间推移而发生的动作 | 实时系统中精确描绘事件发生时机 | 此表格综合了多种类型的UML图表,并指出了每种图表最适合的应用环境。通过这种方式可以帮助读者更好地掌握何时应该选用哪种UML图表来进行有效的需求分析、设计文档编写等工作。 ```python # 示例代码:创建简单的Python字典模拟上述表格数据结构 uml_diagrams = { 'class': {'description': '描述系统的静态结构...', 'use_case': '设计阶段...'}, # ...其他条目... } print(uml_diagrams['class']) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloneme01

谢谢您的支持与鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值