uml

题型

4种题型

选择10题 1分一题 10

填空10题 2分一题 30

判断10题 1分一题 40

简答 3题 5分一道 55

画图 3题 15分一道 100

选填判

前置概念

软件工程的概念是在1968年被首次提出的

在UML出现之前 James Rumbaugh 和 Gady Booch的合并OMT 和Booch工作成果被成为UM0,8

UML全称为:Unified Modeling Language

1977年 UML1.1规范被OMG全体成员通过,正式被采纳为规范

UML2,0规范是在2005年通过的

UML主要应用与 基于对象的面向对象的方法

这些题看看就好 留个映像即可

image-d570f271 image-87fdd6c6 image-c050426b image-df6cd047

构造块

构造块是UML的基本建模元素

分为 事物、关系、图

事物里分为 构造事物(结构事物)、行为事物(动作事物)、分组事物(组织事物)、注释事物

关系分为:关联、依赖、泛化、实现

图:十个

事物

事物里分为 构造事物(结构事物)、行为事物(动作事物)、分组事物(组织事物)、注释事物

image-949da0f0

结构事物分为 类、接口 协作、用例、组件、节点

行为事物分为 交互 状态机 活动

分组事物 主要是 包(可拓展出系统、层)

注释事物 主要是 注解

可以简单理解成 UML中静态的元素为结构事物 动态的元素为行为事物

对系统进行分层管理的 是分组事物 也就是包结构

注释事物显而易见就是注释 解释说明

image-3f2584a3 image-c6c0797a

(这题很可能考 出现两次)

关系

四大关系:关联、依赖、泛化、实现

关联:

    强关联:聚合 组合(强)

    普通关联:单项关联 双向关联

(树和树叶是组合关系 树叶如果离开了树本身就没意义了 而教室和桌子 属于是聚合关系 桌子离开这个教室仍有意义)

依赖:

    分为包含和拓展 在包图里还涉及到导入

泛化:

    在类图和用例图里面有 可以简单理解为继承多态这种关系

    表示一般事物与特殊事物之间的关系

实现:

    接口实现

最弱的关系:依赖

最强的关系:组合

一共有10种图

用例图:大概理解为 表示系统中角色所能执行的操作(用例)的图 这些操作之间存在泛化(继承)、依赖(分为包含和扩展)的关系

类图:系统中有哪些类 它们之间的关系是什么 用类图来表示 与sql建表语句对应 这里也存在泛化关系(用户分为普通、vip……) 另外还有依赖、关联(聚合、组合【更强】)(单项、双向)、实现(接口实现)

对象图:没啥用 不用管

包图:即系统所需的依赖包间的关系

顺序图:丰富用例的表达 纵向为时间 横向为对象 (对象间的消息传递 与时间关系较大)

通信图:与顺序图孪生 可以相互转化 通信图强调交互 顺序图强调时间

状态机图:类中对象的状态变化 只涉及单个对象 不涉及其他对象 强调同一对象在不同时期的状态

活动图:表达系统中的业务流程 如执行登录操作后 在系统中经过的流程

组件图:组件与组件间的关系

部署图:系统如何部署 组成元素:节点(设备节点、服务器节点)、连接

image-4dd6f20f

一些加深理解的小问题:

区别结构图和行为图:(理解为静态动态)

    结构图有:类图、对象图、包图、组件图、部署图

    行为图有:用例图、顺序图、通信图、状态机图、活动图

涉及到泛化的有:用例图、类图

对用例进行丰富描述的图(丰富用例的表达):顺序图

活动图也可以表示业务相关流程

状态机图表示一定的范围(同一对象在不同时期的)

而顺序图(从一个对象到另外一个对象)

image-62d579bb

顺序图和通信图孪生兄弟 表达的语义相同 主要元素相同 对象责任相同 组成元素不太同(通信图少了生命线 消息的创建和销毁)

适用范围:

    强调时间的先后顺序:顺序图

    强调对象的交互:通信图

用的更多的是顺序图

就这俩是交互图

image-184d6c83

什么图里有泳道:活动图

(让每个活动不会出现跨越的情况 )

泳道作用:分区并发

image-17bd04a7

通用机制与4+1架构

uml通用机制:规格说明、修饰、通用划分、uml扩展机制

通用划分里分为:类型-实例 接口-实现

扩展机制分为:构造型、标记值、约束(使用{ })

image-08e2e651 image-0e4dfd3f

4+1架构分为五个视图:逻辑视图、开发视图、进程视图、物理视图、场景视图

其中场景视图是核心视图

开发视图用于描述软件的各个模块的组织方式

场景视图将四个视图结合为一个整体

记住这两句话 可能考开发视图和场景视图的区别

下面把每个图的重点内容整理出来

用例图

image-9e970bd4 image-dced97ec

用于表示 系统中 各个用户能执行哪些操作 ”操作“用书上的话来说就是用例 ”用户“是参与者 也就是表示 参与者与用例之间的关系

主要元素有:参与者 用例 关系

主要关系有:关联 依赖 泛化

    怎么理解呢 用户可以泛化出普通用户、vip用户 用例(操作)自然存在继承多态也就是泛化

这是泛化

    关联就更好理解了 既然是用例图 表示用户与用例之间的关系 用户能执行哪些用例 这里自然存在关联关系

    但是关联关系仅存在与参与者与用例之间 用例与用例之间是不存在关联关系的

    主要考点在于依赖

    依赖分为两种  一个是包含 另一个是拓展

    拓展是对基用例的拓展 作用是增强基用例

    箭头:

           包含(《include》):基用例指向被包含的用例

           扩展(《extend》):扩展用例指向基用例

           因为都是依赖关系, 所以都是虚线加箭头

    四大关系占了仨 没有实现关系 实现关系出现的比较少 一般都是对应接口

一些注意点:

参与者:

    参与者不一定是人 也可以是子系统等与系统有关的事物 (其实本质就是调用关系 如果子系统或其他系统需要调用本系统的用例

它就可以被称为参与者 )

    参与者位于系统边界外 并不是系统的一部分 (系统即程序 用户怎么可能是系统的一部分)

    参与者并非某一特定对象 而是某类对象 (用户肯定不止一个咯)

箭头:

    参与者指向用例 表示启动关系

    基用例指向包含用例 表示包含关系 (我包含了你 所以我指向你)

    扩展用例指向基用例 表示扩展关系 (我由你扩展而来 所以我指向你)

关联关系 不存在于用例与用例之间

包含关系还有一个注意点就是 基用例执行了 包含用例也一定执行 (加入购物车一定要先浏览吧 那我加入了购物车 就意味着一定也执行了一次浏览商品)

类图

image-821a3850 image-6f8b0d98

系统中有哪些类和接口 他们之间的关系如何 与建表sql有很大关联

主要元素:类、接口、协作、关系

主要关系:关联、依赖、泛化、实现 四大关系都占了

    类与类之间肯定是有继承多态的关系的 person类、教师类、学生类 所以四大关系中的泛化这里肯定是有的

    类和类之间 如果按设计角度来说 为了解耦 是最好不要出现依赖关系的 但是理论上是可以存在依赖关系的

    类里面涉及到接口 嗯 接口对应实现 类图里面有实现关系

    重点是 关联关系 因为分库分表设计 表与表 类与类之间自然需要研究这些比较精细复杂的关系

最常见的就是什么一对多多对多 外键……

    前面有提到 关联 分为:  普通关联:单项关联 双向关联

强关联:聚合 组合(强)

    其实考点应该主要就在关联关系上面

一些注意点:

这个主要是画图题 上面的一些细节

类中属性的符号表示: public + private - protected

对于一对多联系 一的一端画1 多的一端画 1..n (或者 1..* 0..* 0..n 都行)

面向对象的设计原则 (有个映像即可):

    开闭原则、里氏替换原则、依赖倒置原则、接口分离原则、单一职责原则

    里氏替换原则:子类可以完全替换父类

类图属于静态图

接口有两种表示方式:

image-672c27cf

在UML中 当接口使用小圆圈表示时,该接口与其他类的实现关系可以简化为一条实线段

A:B A是对象 B是类

对象图

image-8deb6efe image-2f8531ac

类new对象

与类图比较类似 其实就是去除了类里面复杂的关联关系的多重性 (链没有多重性)

记住两句话 对象图是类图的实例 链是关联关系的实例

每个对象图只是系统的静态设计视图或静态交互视图的图形表示 (√) (不是很理解 记吧)

包图

image-8b1d883d

与组织(分组)事物关系较大 系统的结构其实都是由包来组织构建的 系统需要用到哪些依赖 依赖与依赖之间的关系 文件之间的关系 由包图来组织维护

这里就不可避免涉及到 命名空间类似的概念 即 同一个文件不能出现在两个包中 同一个包里不能有两个同名文件

在包元素之间 存在的关系 只有依赖关系

B包依赖于A包 其实就是 B里面import了A 在B里可以访问A的public元素

包内元素的可见性表示同一个包内的其他元素对该元素的访问权限 (×) (包内的元素无论是什么可见性都能使用 可见性只是对于其他引用它的包而言)

包中可见性修饰为public的元素表示这些元素可以被项目中的所有包无条件的访问(×) (你首先得引入吧)

顺序图

顺序图的组成元素:

image-68e8845f

组成元素:对象 生命线 激活(控制焦点) 消息

横向是对象 纵向是时间

image-26aa7850 image-95c45257

顺序图的关键就是 时间 体现在生命线

    顺序图中的所有对象在程序一开始运行的时候,其生命线都必须存在(×) (只有激活了才)

    消息是以时间顺序排列的

    顺序图中对象的生命线一定会贯穿整个交互过程 (×)  (单个对象不一定贯穿

可能一半就没用了)

    所有对象的生命线一定会被一个销毁标记所结束 (×)  (只有最后一个有销毁标记)

    激活表示在这一时间段内对象正在完成某项任务 (√)

    顺序图可以表示消息发送的事件顺序,却无法量化地表示出消息发送的具体时间(√) (不知道具体哪时发的

但知顺序)

消息: (考难点其实就是同步异步)

    每条消息一定关联着至少两个不同的对象,即消息的发送者和接收者 (×) (可以自发 发送接收都是自己)

    信号就是调用类的操作(×) (1.传递消息、2.调用类)

    阻塞和超时消息:

            阻塞消息主要在同步中 需要等另一个完成才能继续

这种暂停等待称为阻塞

            若一个消息发送后接收者无法在指定时间内接收,则发送者放弃该消息,这种叫做超时消息

    返回消息:用虚线加箭头 与依赖相似 从左边参与者发出的话 一般不会出现返回消息 从右往左才可能出现返回

    同步信息与异步消息:
image-68c28f7a

通信图

image-1f8f9c8e

与顺序图通常一起出现 两者可以转换

他们表达的语义相同 主要元素相同 对象责任相同

只有组成元素不太同(通信图少了生命线 消息的创建和销毁)

另外要注意区分的是 顺序图 强调时间的先后顺序 而通信图舍弃了时间的概念 重视交互

只有顺序图和通信图 是 交互图

另外通信图里是用对象来讨论的 所以会用到对象图里面的一些概念 比如“链“

通信图里出现时间(生命线)概念的判断题 直接打错就行

状态机图

image-9f351d06

主要考画图

注意点:

    表示一定的范围(同一对象在不同时期的变化) 研究的是单个对象

    A[B]/C  第一个参数为触发器事件 括号中为监护条件 斜杠后为效果列表
image-376b7c27
    是行为图(动态)

    研究的是对象 而不是类

    一个状态机图只能有一个初态 (×) (复合 也就是嵌套的话 可以有多个)

    历史状态就是状态机中该状态的前一状态(×)  (最后一个子状态)
image-2bede278

(可能考 留个心眼)

活动图

image-b6880129

即某个操作在系统中要经过哪些模块 在这些模块中的执行流程是怎么样的 所以涉及业务逻辑

活动图中的元素:动作和活动节点 开始与终止 控制流 判断节点 合并节点 泳道 分叉结合节点 对象流 扩展区域

分叉节点和结合节点一般成对出现

判断节点和合并节点对应 但不一定成对出现

用于连接动作或节点 表示活动进行方向的元素是 控制流

一个导入流两个导出流

重点:泳道 对元素按照负责对象分组 一个活动不能属于多个泳道

开始标记只有一个 结束标记可以是0到多个

组件图

组件图的组成元素: 组件、接口、端口、组件的内部结构

image-f1068c6b

接口有两种表示法

圆圈表示法:

image-0b546149

球窝表示法:

image-ec51e6d8

含义相同 仅表示不同

组件与组件间表现为依赖关系 接口与实现类间为实现关系

image-2d7434a4

(这题可能考)

组件比类的抽象层次要高 类应该从属于某个组件

接口是组件图中语义最小的元素

部署图

系统应该如何部署

一个系统对应一个部署图 如果系统可以单机部署 则可以无需设计部署图

image-3cf12bd1

出现两次 应该会考

涉及到什么语义完全相同…… 只有顺序图和通信图语义完全相同 其他提到这个概念直接打错

RUP

RUP是统一软件开发过程

有四个阶段:起始阶段 细化阶段 构建阶段 转化阶段

九个工作流

image-b9fdab73 复习笔记_Sheet1-b1703bca

简答

简述面向对象技术的概念。

面向对象技术以类和对象作为核心,并存在着很多与之相关的原则。

(1)对象:对象是面向对象技术的基本单位,表示现实世界中的实体。每个对象有自己的属性(数据)和方法(操作),属性定义了对象的状态,而方法定义了对象可以执行的操作。

(2)类:对象是存在某个时空的具体实体,而类则是拥有共同的结构、行为、语义的一组对象的抽象。

(3)抽象:抽象就是揭示一个事物区别于其它事物的本质特征,去除从某一个角度看来不重要的细节的行为。

(4)封装:即对其客户隐藏对象的属性和实现细节,仅对外公开接口,并控制在程序中属性的读和修改的访问级别。

(5)泛化:泛化是类元的一般描述和具体描述之间的关系,具体描述建立在一般描述的基础上,并对其进行了扩展。

(6)多态:多态是在同一接口下表现多种行为的能力,是面向对象技术的根本特征。

用例之间的3种关系是什么?各使用在什么场景?

(1)用例之间的泛化关系

将特化的用例与一般的用例联系起来,子用例继承了父用例的属性、操作和行为序列。

场景:适用于描述不同用例之间的继承关系,当某些用例具有共同的功能和行为时,可以通过泛化关系来进行抽象,避免冗余的描述。

(2)用例之间的包含关系:一个用例(基用例)可以包含其他用例(包含用例)具体的行为。基用例一定会要求

场景:适用于一个用例的行为是另一个用例的一部分,并且每次执行时都需要执行该部分功能。包含用例执行。

(3)用例之间的扩展关系:指一个用例(扩展用例)对另一个用例(基用例)行为的增强。

场景:适用于某个用例的行为在特定条件下才会发生扩展。扩展用例通常是可选的,只有在特定条件满足时才会触发。

(泛化和依赖 依赖又分为包含和扩展)

顺序图中的消息按其并发性可以分为哪两种?这两种消息的发送和接收过程怎样表现?

同步消息:同步消息指的是发送方在发送消息后,必须等待接收方处理完消息并返回响应之后,才能继续执行后续操作。

表现形式:同步消息使用带有实心箭头的直线表示,并在消息线上注明消息名称。

异步消息:异步消息指的是发送方在发送消息后,无需等待接收方的响应,可以立即继续执行后续操作。

表现形式:异步消息使用带半个箭头的直线表示,并在消息线上注明消息名称。

画图

类图

设计一个在线书店系统,本系统中将用户分为两个类:管理员、顾客,该系统需满足的核心功能如下:

(1)图书浏览:顾客可以浏览图书列表,查看图书详情;

(2)购物车管理:顾客可以添加图书到购物车,修改购物车中的图书数量,或从购物车中移除图书;

(3)订单处理:顾客可以提交订单,查看订单历史;

(4)图书管理:管理员可以添加、删除和编辑图书信息。

试根据上述说明,分析出该系统所包括的类,绘制出类图。

image-0786d65b

活动图

在图书借阅系统中,关于管理员删除读者信息的流程如下:

(1)查找读者信息:管理员需要登陆系统,输入待删除读者姓名;

(2)判断读者是否存在:输入待删除读者姓名后,先由业务逻辑组件进行判断。如果读者存在,业务逻辑组件进行下一步操作。如果读者不存在,则显示出错信息;

(3)判断读者是否能够删除:确定读者信息存在后,业务逻辑组件对进行“删除读者”,如果读者消息可以被删除,流程流转至数据库,并显示删除成功信息。如果读者信息不可以被删除,则显示出错信息。

试根据上述说明,绘制该系统相应的活动图。

image-ec6ca30b

状态图

现有一款全自动洗衣机,具体功能如下:

(1)开机时,会进入“待机”状态,可以设置洗衣模式以及水量,触发启动按钮后,会进入“工作中”状态;

(2)进入“工作中”状态后,有“加水”、“清洗”、“排水”、“甩干”四个功能。洗衣机会从“加水”开始执行,依次进行“清洗”和“排水”操作,排水完成后,根据清洗次数是否达标,执行“加水”或“甩干”操作;

(3)洗衣机在“工作中”时,无论在进行什么操作,当按下暂停键时,会进入“暂停状态”,再按一次暂停键将继续工作。

试根据上述说明,绘制该系统相应的状态机图。

image-e149d860