1、UML概念

2、事物

结构事物是模型的静态部分

行为事物是模型的动态部分

注解图形在右上角折了一个小角
例题:

A D
3、关系
(1)依赖
依赖关系,箭头指向的是依赖对象
独立对象类似于自变量,依赖对象类似于因变量!

(2)关联

关联:类似于数据库中一对一、一对多、多对多的比较
0..1:0个或1个 0..*:表示0个或多个
1个雇主对应0个或多个员工;一个员工对应0个或1个雇主
聚集:菱形那边是整体
聚合:整体和部分的生命周期不一定一致,假设公司倒闭了,员工依然是存在的(关键点在整体消失了,部分是否存在?存在 聚合)

组合:整体与部分的生命周期一致
菱形是实心的!

(3)泛化

箭头指向的是父类
(4)实现

有一个具体的类去实现这个接口
例题:

B D
关联所保持的关系更加长久

A D C

B A D

D

A!!!泛化等价于继承的意思

B C

B

D 组成关系就是等价于组合关系
当汽车消失,其座位、车窗和发动机也就消失了

C

D C
(5)关联多重度
人和食物属于依赖关系(偶然、临时),只有人饿的时候才需要食物,不饿的时候不需要

如果只记录学生号和图书号,当同一个学生在并不断地借同一本书时,查询到的记录是多条重复的,此时再加一个借书时间(放在学生/图书都不合适),因此需要新增一个关联类,相当于通过这个类将另外两个类关联了起来

例题:

C

B

A 根据右边的示例可得A最符合(B表示人宠物动物,pet不能作为关联名)

C
(6)UML类图

(a)类图


类图是对系统的静态设计建模!!!

例题:

B(如果是继承,Car和Boat是不需要再写一次move的方法,但是这里有,代表对该方法进行了重写;此外重载是在一个类中方法的重载,而重写(覆盖)大多数是在继承关系中子类重写父类中的方法。)

C A(使用新增类时一定要先将医生和病人相关联之后衍生出新类;non-unique表示不唯一,在这里表示一名医生可以重复治疗同一名病人,表示不是只治疗一次)

A C D

B A(A和B相反) v表示数量为多,这代表B是自己与自己一对多

D(abstract表示抽象类,表明A没有具体的对象,因此A没有直接对象;非直接对象就是A的子类,并且可以转换为非抽象类,有具体的对象)
(b)对象图


例题:

C D(类图是A1对B多,因此A的一个实例可对应B的多个实例)
多:0个、1个、......多个
下面两种情况是表明最低值为0或者1

(c)用例图


包含关系:一个用例包含另一个用例
图书管理员在进行删除/修改操作时,首先需要先查询图书,之后再进行操作
A用例包含B用例相当于B用例是执行A用例的其中一部分
删除图书和修改图书都要进行的第一步就是查询图书

扩展关系:一个用例执行时,可能会发生一些特殊或者可选的情况,这个情况就是当前用例的扩展用例
箭头指向基本用例!!!

基本用例:上课,扩展用例:迟到扣平时分(特殊情况)

基本用例:查看课表,扩展用例:导出为excel/打印(可选情况)

泛化关系:用例与用例、参与者与参与者之间的关系(一般和特殊、子类和父类的关系)

总结:

包含关系是基本用例指向被包含用例
扩展关系是扩展用例指向基本用例
例题:

A C B

A
(d)交互图

(1)序列图(顺序图)

其中调用消息等价于同步消息

同步消息过程:首先A给B发送一个消息,B给A发送一个返回消息之后,A再给B发消息

异步消息:A给B发送消息之后不需要等待B的返回消息,A直接给B再次发送消息

对象生命线表示对象存在的时间段
控制焦点表示对象交互的时间段

例子:

例题:

C B(实现的方法找有哪些方法指向了account,切记是方法!!!,虚线箭头表示返回消息,不是方法 !!!)

B D

C B(和上边的登陆系统一样,登录这个用例相当于是一个用例,完成了一件事,系统为多对象单用例)
(2)通信图(协作图)

例子:

例题:

C B D

C A D
(e)状态图



(1)状态和活动


例子:

(2)转换和事件

转换包括两个状态:源状态和目标状态
事件触发转换(迁移)

活动(动作)可以在状态内执行,也可以在状态转换(迁移)时执行!(牢记以下形式
事件[监护条件]/动作)

例题:

C D(NO就是一个状态,在状态里又包含其他状态表示该状态是组合(超)状态;c选项是事件,不是动作;一个状态图可以没有终态/多个终态;
并发状态有明显的矩形:
)

C(如果当前状态不是B2,那么e2发生时就不一定会离开状态B;此外当B的两个结束状态均达到的时候,没有时间发生会直接转换到C2状态)

C(UML 状态图的转换是两个状态之间 的关系(源状态→目标状态),语法为事件[监护条件]/动作,它本身不包含 "一个状态" 作为组成部分)
2019年下:

C(迁移不包含状态)
2021年上:


B B D

2021年下:


B C B(转换包括事件、监护条件和动作)
(f)活动图



2012年下:

B

C(线程数=活动数)

D
2016年上:

D A B
(g)构件图(组件图)
标志!!!只要右上角有这个符号就代表是构件图!!!


例题:
2009上:

A(有明显标志!) B(供接口调用下面的组件实现需接口!)
2015下:

C
2018年下:

B C D
(h)部署图


D

B

D
总结:

例题:

A B D

B

C B



例题(答案仅供参考):
2021下:



2021上:



2020年下:
下面的U2指向U1!


