UML学习
定义:UML是一种用于软件系统分析和设计的标准化建模语言。
作用:用于描述系统的结构、行为、交互等。共定义了10种,并分为4类
①用例图 user case diagram : 从外部用户的角度描述系统的功能,并指出功能的执行者.
静态图(②类图 class diagram ③,对象图 object diagram,④包图 package diagram):类图描述系统的静态结构.对象图是类图的一个实例,描述在某个状态下活某一时间段,系统中活跃的对象及其关系.包图描述系统的分解结构.
行为图(交互图 interactive diagram,⑤状态图 state chart diagram,⑥活动图 active diagram),他们从不同侧面刻画系统的动态行为.交互图描述对象之间的消息传递,交互图能帮助分析人员对照检查每个用例中所描述的用户需求是否落实到能够完成这些功能的类中去实现,提醒分析人员去补充遗漏的类或方法,又分为⑦顺序图 sequence diagram与⑧合作图 collaboration diagram两种形式.顺序图强调对象之间消息发送的时间序,合作图更强调对象之间的动态协作关系.状态图主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件(event),以及因状态转移而伴随的动作(action)。活动图可以用于描述系统的工作流程和并发行为。活动图其实可看作状态图的特殊形式,活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。两者最大的区别是:状态图侧重于描述行为的结果,而活动图侧重描述行为的动作。其次活动图可描述并发行为,而状态图不能。
实现图 implementation diagram:包含⑨构件图 component diagram 和⑩部署图 deployment diagram,它们描述软件实现系统的组成和分布状况.构件图描述软件实现系统中的各组成部件以及他们的依赖关系.部署图描述作为软件系统运行环境的硬件以及网络的物理体系结构,其节点表示实际的计算机和设备.
①用例图(Use Case Diagram):
描述系统的功能需求,展示参与者(Actor)与用例(Use Case)之间的交互。用例之间的关系是用例图的重要组成部分,主要包括以下三种关系:
1. 包含关系(Include)
定义:表示一个用例必须包含另一个用例的行为。
特点:
被包含的用例是基础功能,通常不可独立执行。
包含关系用于提取公共行为,避免重复。
UML表示:用一条带箭头的虚线表示,箭头指向被包含的用例,线上标注
<<include>>
。示例:
用例A:
登录
用例B:
验证用户
关系:
登录
必须包含验证用户
的行为。2. 扩展关系(Extend)
定义:表示一个用例可以在特定条件下扩展另一个用例的行为。
特点:
扩展用例是可选的,只有在满足特定条件时才会执行。
扩展关系用于描述可选或异常行为。
UML表示:用一条带箭头的虚线表示,箭头指向被扩展的用例,线上标注
<<extend>>
。示例:
用例A:
支付
用例B:
使用优惠券
关系:
支付
可以扩展使用优惠券
的行为(如果用户选择使用优惠券)。3. 泛化关系(Generalization)
定义:表示一个用例是另一个用例的特化(子用例继承父用例的行为)。
特点:
子用例继承父用例的行为,并可以扩展或重写父用例的行为。
泛化关系用于描述用例之间的继承关系。
UML表示:用一条带空心箭头的实线表示,箭头指向父用例。
示例:
父用例:
支付
子用例:
信用卡支付
、支付宝支付
关系:
信用卡支付
和支付宝支付
是支付
的特化形式。用例关系的对比
关系类型
描述
特点
UML表示
包含关系
一个用例必须包含另一个用例的行为
被包含用例是基础功能,不可独立
虚线 +
<<include>>
扩展关系
一个用例可以扩展另一个用例的行为
扩展用例是可选行为
虚线 +
<<extend>>
泛化关系
一个用例是另一个用例的特化
子用例继承父用例的行为
实线 + 空心箭头
②类图(Class Diagram):
描述系统中的类、接口、协作及其关系。UML中.类被划分为三个格子的长方形.
类之间的关系:继承、实现、关联、聚合、组合、依赖。(重点,了解集中依赖关系以及符号表示)
1. 继承(Generalization)
定义:表示类之间的“is-a”关系,即一个类是另一个类的特化(子类继承父类)。
特点:
子类继承父类的属性和行为。
子类可以扩展或重写父类的功能。
UML表示:用一条带空心箭头的实线表示,箭头指向父类。
子类 ——————▷ 父类
示例:
父类:
动物
子类:
猫
、狗
关系:
猫
和狗
都是动物
的一种。
2. 实现(Realization)
定义:表示类实现接口,即类必须实现接口中定义的所有操作。
特点:
接口定义行为规范,类实现具体行为。
一个类可以实现多个接口。
UML表示:用一条带空心箭头的虚线表示,箭头指向接口。
类 - - - - - -▷ 接口
示例:
接口:
可飞行
类:
鸟
、飞机
关系:
鸟
和飞机
都实现了可飞行
接口。
3. 关联(Association)
定义:表示类之间的结构关系,描述对象之间的连接。
特点:
可以是单向或双向的。
可以表示一对一、一对多或多对多的关系。
UML表示:用一条实线表示,可以带箭头表示方向。
类A —————— 类B
示例:
类:
学生
、课程
关系:一个
学生
可以选修多门课程
,一门课程
可以被多个学生
选修。
4. 聚合(Aggregation)
定义:表示“整体-部分”关系,部分可以独立于整体存在。
特点:
是一种弱关联关系。
整体和部分的生命周期可以独立。
UML表示:用一条带空心菱形的实线表示,菱形指向整体。
整体 ◇————— 部分
示例:
整体:
汽车
部分:
轮胎
关系:
汽车
由轮胎
组成,但轮胎
可以独立存在。
5. 组合(Composition)
定义:表示更强的“整体-部分”关系,部分不能独立于整体存在。
特点:
是一种强关联关系。
部分的生命周期依赖于整体。
UML表示:用一条带实心菱形的实线表示,菱形指向整体。
整体 ◆————— 部分
示例:
整体:
公司
部分:
部门
关系:
公司
由部门
组成,部门
不能独立于公司
存在。
6. 依赖(Dependency)
定义:表示一个类的变化可能影响另一个类,通常是一种临时关系。
特点:
依赖关系通常体现在方法参数、局部变量或返回值中。
是一种弱关系。
UML表示:用一条带箭头的虚线表示,箭头指向被依赖的类。
类A - - - - - -▷ 类B
示例:
类:
订单
、支付服务
关系:
订单
依赖于支付服务
来完成支付操作。
总结对比
关系类型
描述
强度
生命周期依赖
UML表示
继承
类之间的“is-a”关系
强
依赖
实线 + 空心箭头
实现
类实现接口
强
依赖
虚线 + 空心箭头
关联
类之间的结构关系
中
独立
实线
聚合
弱“整体-部分”关系
中
独立
实线 + 空心菱形
组合
强“整体-部分”关系
强
依赖
实线 + 实心菱形
依赖
一个类的变化影响另一个类
弱
独立
虚线 + 箭头
③对象图(Object Diagram):
描述某一时刻系统中的对象及其关系。
④包图(Package Diagram):
描述系统的包结构及其依赖关系。
⑤活动图(Activity Diagram):
描述业务流程或操作流程,展示活动的顺序和并发。
⑥状态图(State Machine Diagram):
描述对象的状态变化,展示状态、事件和转换。
⑦顺序图(Sequence Diagram):
描述对象之间的交互顺序,展示消息传递的时间顺序。
顺序图是一个二维图形。在顺序图中水平方向为对象维,沿水平方向排列的是参与交互的对象。其中对象间的排列顺序并不重要,但一般把表示参与者的对象放在图的两侧,主要参与者放在最左边,次要参与者放在最右边(或表示人的参与者放在最左边,表示系统的参与者放在最右边)。顺序图中的垂直方向为时间维,沿垂直向下方向按时间 递增顺序列出各对象所发出和接收的消息。
⑧通信图(Communication Diagram):
描述对象之间的交互关系,强调对象之间的链接和消息传递。
⑨组件图(Component Diagram):
描述系统的物理结构,展示组件及其依赖关系。
⑩部署图(Deployment Diagram):
描述系统的物理部署,展示节点、组件及其关系。