一.什么是UML?

1.UML事物
一共有四种:
- 结构事物
- 行为事物
- 分组事物
- 注释事物
真题

看一眼UML事物的定义,这道题直接秒杀。
2.UML关系
UML一共有四种关系,分别是:
- 依赖
- 关联
- 泛化
- 实现
①依赖

举例:
此时的依赖关系,读作"A依赖于B"或者"B被A依赖"。说白了就是A需要B,而B不需要A。举例:A是学生,B是课程。当B具体是计算机网络时,读作"学生学习计算机网络";但是当B又变成数据库课程时,读作"学生学习数据库课程"。
②关联

举例:下图怎么读?
思想:一方取1,另一方读横线上的值。
答案:这个关联,读作"1个雇主,对应0~多个员工;一个员工,对应0~1个雇主"。
聚集
讲一下"聚集":
聚集分成两种:
- 聚合:部分和整体的生命周期不一致(整体消失了,部分仍然存在,部分可以脱离整体存在)
注意:此时这个菱形是空心的。
举例:
当毕业了,班级就不存在了,但是学生仍然存在,并且可以各奔东西。
当公司破产,公司就不存在了,但是员工仍然存在,并且可以继续找下一份工作。
- 组合:部分和整体的生命周期一致(整体消失了,部分也消失,部分不可以脱离整体存在)
注意:此时这个菱形是实心的。
举例:
此时人体消亡了,那么大脑也就不存在了,因为二者共存亡。
③泛化

其实很简单,这个和继承是相反的关系。
举例:
可见此时箭头方是父类,另一方是子类。
此时有两种读法:
- "学生和教师"继承"人"
- "人"泛化成"学生和教师"
④实现

这一块了解了解即可。
真题

解析:
- 第一空:说白了,你A中,都用到人家B了,这不就是依赖人家B么。所以第一空选B。
- 第二空:题目中说,"A消失时,B也随之消失",这不就是典型的组合么。就好比人体消亡时,大脑肯定也不复存在,因为二者是共存亡的关系,即组合关系。

解析:
- 第一空:你A都用到人家标准类库的东西了,这不就是依赖人家么。故第一空选A。
- 第二空:A消亡B也消亡,故二者是组合关系。(即大脑和人体的关系)
- 第三空:A消亡B仍存在,故二者是聚合关系。(即员工和公司的关系)

解析:
这道题纯考定义,不多解释,直接秒了。

解析:
组合,说白了就是整体和部分的生命周期一致(即整体消失了,部分也消失)。
故本题选D。

解析:
泛化和继承是互逆的叫法。
- "多个子类"继承"父类"
- "父类"泛化成"多个子类"
本题的细化类,就是子类的意思。
故本题选A。

解析:
这道题也是纯考定义,直接秒了。

解析:
这道题选 B 的原因,咱们用大白话给你解释一下:
1. 什么是"关联"?
在 UML(一种画图标准)里,关联就是两个类(比如"人"和"公司")之间的一条连线,表示它们有某种关系。
2. 为什么会有"多个"?
现实生活中,两个对象之间往往不止一种关系。
举个例子:"人" 和 "公司"。
- 这个"人"可能是这家"公司"的员工(工作关系)。
- 这个"人"同时也可能是这家"公司"的客户(买卖关系)。
- 这个"人"甚至还可能是这家"公司"的股东(投资关系)。
你看,虽然都是"人"和"公司"这两个类,但它们之间其实存在三种不同的关联。所以,两个类之间是可以有多个关联的。这就排除了选项 A。
3. 为什么要"由不同角色标识"?
既然有多个关联,我们在画图或者写代码的时候,怎么区分它们呢?总不能都叫"关系1"吧?
这时候就需要角色名来区分了:
- 在第一条线上,标记角色为**"员工"**。
- 在第二条线上,标记角色为**"客户"**。
- 在第三条线上,标记角色为**"股东"**。
总结一下:
两个类之间就像两个人,既是"同学"又是"邻居"又是"球友"。关系可以有很多种,但为了不把大家绕晕,每一种关系都得有个明确的名字(角色)来区分。
所以,"可以有多个由不同角色标识的"(选项 B)是最准确的说法。
综上,故本题选B。

解析:
这道题有意思。
按理说汽车的座位、发动机、车窗都能单独拆下来,但是题目说了,"将汽车作为一个系统",因此就不能拆下来了,故属于组合关系(大脑和人体的关系了)。
而音乐系统,是一个单独的系统,与汽车系统是并列关系,故属于聚合而不是组合。
故本题选D。

解析:
"聚合"强调的是整体与部分的关系。
而只有C强调的是整体与部分的关系,"一个对象包含其他对象",则该对象是整体,其他对象是部分。当该对象消亡时,不影响其他对象啊,故属于聚合。
故本题选C。

解析:
其实这道题考的比较有歧义,仁者见仁、智者见智吧。
- 第一空:商品不一定加入购物车,可以单独购买,故不是共存亡,即是聚合关系。
- 第二空:网店违规关门后,那么该店面里的所有商品也会被下架,因此二者共存亡,属于组合关系。
故本题选D、C。
3.关联多重度
UML关联多重度(Multiplicity): 其实就是用来精确定义类与类之间数量对应关系 的约束规则,它回答了"一个对象能关联多少个对方对象"这个问题。在图中,它通常以
1(唯一)、0..*(任意多)、0..1(可选)等形式标注在连线两端,直接指导代码中是使用单个对象引用 还是集合来存储数据,从而确保模型准确反映业务逻辑(如"1个客户对应多个订单")。
举例:下图怎么读?
思想:一方取1,另一方读横线上的值。
答案:这个关联,读作"1个雇主,对应0~多个员工;一个员工,对应0~1个雇主"。
真题

解析:
这是纯纯的定义了,应该直接秒。
举例:
思想:一方取1,另一方读横线上的值。
答案:这个关联,读作"1个雇主,对应0~多个员工;一个员工,对应0~1个雇主"。
综上,故本题选C。

解析:
- 选项A:
这条线错了,因为项目由团队开发,不能直接关联到员工,这属于越级了,所以错了。
- 选项C:
这个箭头错了,因为这是项目单方面关联公司,而公司和项目无关。这肯定是错的,题目都说了,公司负责项目,怎么可能和项目无关?二者肯定是相互关联的,而不是单方面关联。故该选项错了
- 选项D:
这个箭头错了,这个箭头是泛化的意思(即:继承的逆过程),但是公司和项目也不是父子关系(一般和特殊),哪来的泛化之谈?故该选项错了。
综上,故本题选B。

解析:
③④的数量关系搞反了,应该是一个人可以对应0~*个动物。
②中的pet写在那个位置,就表示pet是联系,肯定是不对的。
而①的pet写在那个位置,才表明是角色,读作:"一个人,可以对应0~*个动物,并且动物的角色可以是宠物"。
故本题选A

解析:
这一题找可以"多对多"的就行了。
故本题选C
















