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主要应用与 基于对象的面向对象的方法
这些题看看就好 留个映像即可
构造块
构造块是UML的基本建模元素
分为 事物、关系、图
事物里分为 构造事物(结构事物)、行为事物(动作事物)、分组事物(组织事物)、注释事物
关系分为:关联、依赖、泛化、实现
图:十个
事物
事物里分为 构造事物(结构事物)、行为事物(动作事物)、分组事物(组织事物)、注释事物
结构事物分为 类、接口 协作、用例、组件、节点
行为事物分为 交互 状态机 活动
分组事物 主要是 包(可拓展出系统、层)
注释事物 主要是 注解
可以简单理解成 UML中静态的元素为结构事物 动态的元素为行为事物
对系统进行分层管理的 是分组事物 也就是包结构
注释事物显而易见就是注释 解释说明
(这题很可能考 出现两次)
关系
四大关系:关联、依赖、泛化、实现
关联:
强关联:聚合 组合(强)
普通关联:单项关联 双向关联
(树和树叶是组合关系 树叶如果离开了树本身就没意义了 而教室和桌子 属于是聚合关系 桌子离开这个教室仍有意义)
依赖:
分为包含和拓展 在包图里还涉及到导入
泛化:
在类图和用例图里面有 可以简单理解为继承多态这种关系
表示一般事物与特殊事物之间的关系
实现:
接口实现
最弱的关系:依赖
最强的关系:组合
图
一共有10种图
用例图:大概理解为 表示系统中角色所能执行的操作(用例)的图 这些操作之间存在泛化(继承)、依赖(分为包含和扩展)的关系
类图:系统中有哪些类 它们之间的关系是什么 用类图来表示 与sql建表语句对应 这里也存在泛化关系(用户分为普通、vip……) 另外还有依赖、关联(聚合、组合【更强】)(单项、双向)、实现(接口实现)
对象图:没啥用 不用管
包图:即系统所需的依赖包间的关系
顺序图:丰富用例的表达 纵向为时间 横向为对象 (对象间的消息传递 与时间关系较大)
通信图:与顺序图孪生 可以相互转化 通信图强调交互 顺序图强调时间
状态机图:类中对象的状态变化 只涉及单个对象 不涉及其他对象 强调同一对象在不同时期的状态
活动图:表达系统中的业务流程 如执行登录操作后 在系统中经过的流程
组件图:组件与组件间的关系
部署图:系统如何部署 组成元素:节点(设备节点、服务器节点)、连接
一些加深理解的小问题:
区别结构图和行为图:(理解为静态动态)
结构图有:类图、对象图、包图、组件图、部署图
行为图有:用例图、顺序图、通信图、状态机图、活动图
涉及到泛化的有:用例图、类图
对用例进行丰富描述的图(丰富用例的表达):顺序图
活动图也可以表示业务相关流程
状态机图表示一定的范围(同一对象在不同时期的)
而顺序图(从一个对象到另外一个对象)
顺序图和通信图孪生兄弟 表达的语义相同 主要元素相同 对象责任相同 组成元素不太同(通信图少了生命线 消息的创建和销毁)
适用范围:
强调时间的先后顺序:顺序图
强调对象的交互:通信图
用的更多的是顺序图
就这俩是交互图
什么图里有泳道:活动图
(让每个活动不会出现跨越的情况 )
泳道作用:分区并发
通用机制与4+1架构
uml通用机制:规格说明、修饰、通用划分、uml扩展机制
通用划分里分为:类型-实例 接口-实现
扩展机制分为:构造型、标记值、约束(使用{ })
4+1架构分为五个视图:逻辑视图、开发视图、进程视图、物理视图、场景视图
其中场景视图是核心视图
开发视图用于描述软件的各个模块的组织方式
场景视图将四个视图结合为一个整体
记住这两句话 可能考开发视图和场景视图的区别
下面把每个图的重点内容整理出来
用例图
用于表示 系统中 各个用户能执行哪些操作 ”操作“用书上的话来说就是用例 ”用户“是参与者 也就是表示 参与者与用例之间的关系
主要元素有:参与者 用例 关系
主要关系有:关联 依赖 泛化
怎么理解呢 用户可以泛化出普通用户、vip用户 用例(操作)自然存在继承多态也就是泛化
这是泛化
关联就更好理解了 既然是用例图 表示用户与用例之间的关系 用户能执行哪些用例 这里自然存在关联关系
但是关联关系仅存在与参与者与用例之间 用例与用例之间是不存在关联关系的
主要考点在于依赖
依赖分为两种 一个是包含 另一个是拓展
拓展是对基用例的拓展 作用是增强基用例
箭头:
包含(《include》):基用例指向被包含的用例
扩展(《extend》):扩展用例指向基用例
因为都是依赖关系, 所以都是虚线加箭头
四大关系占了仨 没有实现关系 实现关系出现的比较少 一般都是对应接口
一些注意点:
参与者:
参与者不一定是人 也可以是子系统等与系统有关的事物 (其实本质就是调用关系 如果子系统或其他系统需要调用本系统的用例
它就可以被称为参与者 )
参与者位于系统边界外 并不是系统的一部分 (系统即程序 用户怎么可能是系统的一部分)
参与者并非某一特定对象 而是某类对象 (用户肯定不止一个咯)
箭头:
参与者指向用例 表示启动关系
基用例指向包含用例 表示包含关系 (我包含了你 所以我指向你)
扩展用例指向基用例 表示扩展关系 (我由你扩展而来 所以我指向你)
关联关系 不存在于用例与用例之间
包含关系还有一个注意点就是 基用例执行了 包含用例也一定执行 (加入购物车一定要先浏览吧 那我加入了购物车 就意味着一定也执行了一次浏览商品)
类图
系统中有哪些类和接口 他们之间的关系如何 与建表sql有很大关联
主要元素:类、接口、协作、关系
主要关系:关联、依赖、泛化、实现 四大关系都占了
类与类之间肯定是有继承多态的关系的 person类、教师类、学生类 所以四大关系中的泛化这里肯定是有的
类和类之间 如果按设计角度来说 为了解耦 是最好不要出现依赖关系的 但是理论上是可以存在依赖关系的
类里面涉及到接口 嗯 接口对应实现 类图里面有实现关系
重点是 关联关系 因为分库分表设计 表与表 类与类之间自然需要研究这些比较精细复杂的关系
最常见的就是什么一对多多对多 外键……
前面有提到 关联 分为: 普通关联:单项关联 双向关联
强关联:聚合 组合(强)
其实考点应该主要就在关联关系上面
一些注意点:
这个主要是画图题 上面的一些细节
类中属性的符号表示: public + private - protected
对于一对多联系 一的一端画1 多的一端画 1..n (或者 1..* 0..* 0..n 都行)
面向对象的设计原则 (有个映像即可):
开闭原则、里氏替换原则、依赖倒置原则、接口分离原则、单一职责原则
里氏替换原则:子类可以完全替换父类
类图属于静态图
接口有两种表示方式:
在UML中 当接口使用小圆圈表示时,该接口与其他类的实现关系可以简化为一条实线段
A:B A是对象 B是类
对象图
类new对象
与类图比较类似 其实就是去除了类里面复杂的关联关系的多重性 (链没有多重性)
记住两句话 对象图是类图的实例 链是关联关系的实例
每个对象图只是系统的静态设计视图或静态交互视图的图形表示 (√) (不是很理解 记吧)
包图
与组织(分组)事物关系较大 系统的结构其实都是由包来组织构建的 系统需要用到哪些依赖 依赖与依赖之间的关系 文件之间的关系 由包图来组织维护
这里就不可避免涉及到 命名空间类似的概念 即 同一个文件不能出现在两个包中 同一个包里不能有两个同名文件
在包元素之间 存在的关系 只有依赖关系
B包依赖于A包 其实就是 B里面import了A 在B里可以访问A的public元素
包内元素的可见性表示同一个包内的其他元素对该元素的访问权限 (×) (包内的元素无论是什么可见性都能使用 可见性只是对于其他引用它的包而言)
包中可见性修饰为public的元素表示这些元素可以被项目中的所有包无条件的访问(×) (你首先得引入吧)
顺序图
顺序图的组成元素:
组成元素:对象 生命线 激活(控制焦点) 消息
横向是对象 纵向是时间
顺序图的关键就是 时间 体现在生命线
顺序图中的所有对象在程序一开始运行的时候,其生命线都必须存在(×) (只有激活了才)
消息是以时间顺序排列的
顺序图中对象的生命线一定会贯穿整个交互过程 (×) (单个对象不一定贯穿
可能一半就没用了)
所有对象的生命线一定会被一个销毁标记所结束 (×) (只有最后一个有销毁标记)
激活表示在这一时间段内对象正在完成某项任务 (√)
顺序图可以表示消息发送的事件顺序,却无法量化地表示出消息发送的具体时间(√) (不知道具体哪时发的
但知顺序)
消息: (考难点其实就是同步异步)
每条消息一定关联着至少两个不同的对象,即消息的发送者和接收者 (×) (可以自发 发送接收都是自己)
信号就是调用类的操作(×) (1.传递消息、2.调用类)
阻塞和超时消息:
阻塞消息主要在同步中 需要等另一个完成才能继续
这种暂停等待称为阻塞
若一个消息发送后接收者无法在指定时间内接收,则发送者放弃该消息,这种叫做超时消息
返回消息:用虚线加箭头 与依赖相似 从左边参与者发出的话 一般不会出现返回消息 从右往左才可能出现返回
同步信息与异步消息:
通信图
与顺序图通常一起出现 两者可以转换
他们表达的语义相同 主要元素相同 对象责任相同
只有组成元素不太同(通信图少了生命线 消息的创建和销毁)
另外要注意区分的是 顺序图 强调时间的先后顺序 而通信图舍弃了时间的概念 重视交互
只有顺序图和通信图 是 交互图
另外通信图里是用对象来讨论的 所以会用到对象图里面的一些概念 比如“链“
通信图里出现时间(生命线)概念的判断题 直接打错就行
状态机图
主要考画图
注意点:
表示一定的范围(同一对象在不同时期的变化) 研究的是单个对象
A[B]/C 第一个参数为触发器事件 括号中为监护条件 斜杠后为效果列表
是行为图(动态)
研究的是对象 而不是类
一个状态机图只能有一个初态 (×) (复合 也就是嵌套的话 可以有多个)
历史状态就是状态机中该状态的前一状态(×) (最后一个子状态)
(可能考 留个心眼)
活动图
即某个操作在系统中要经过哪些模块 在这些模块中的执行流程是怎么样的 所以涉及业务逻辑
活动图中的元素:动作和活动节点 开始与终止 控制流 判断节点 合并节点 泳道 分叉结合节点 对象流 扩展区域
分叉节点和结合节点一般成对出现
判断节点和合并节点对应 但不一定成对出现
用于连接动作或节点 表示活动进行方向的元素是 控制流
一个导入流两个导出流
重点:泳道 对元素按照负责对象分组 一个活动不能属于多个泳道
开始标记只有一个 结束标记可以是0到多个
组件图
组件图的组成元素: 组件、接口、端口、组件的内部结构
接口有两种表示法
圆圈表示法:
球窝表示法:
含义相同 仅表示不同
组件与组件间表现为依赖关系 接口与实现类间为实现关系
(这题可能考)
组件比类的抽象层次要高 类应该从属于某个组件
接口是组件图中语义最小的元素
部署图
系统应该如何部署
一个系统对应一个部署图 如果系统可以单机部署 则可以无需设计部署图
出现两次 应该会考
涉及到什么语义完全相同…… 只有顺序图和通信图语义完全相同 其他提到这个概念直接打错
RUP
RUP是统一软件开发过程
有四个阶段:起始阶段 细化阶段 构建阶段 转化阶段
九个工作流
简答
简述面向对象技术的概念。
面向对象技术以类和对象作为核心,并存在着很多与之相关的原则。
(1)对象:对象是面向对象技术的基本单位,表示现实世界中的实体。每个对象有自己的属性(数据)和方法(操作),属性定义了对象的状态,而方法定义了对象可以执行的操作。
(2)类:对象是存在某个时空的具体实体,而类则是拥有共同的结构、行为、语义的一组对象的抽象。
(3)抽象:抽象就是揭示一个事物区别于其它事物的本质特征,去除从某一个角度看来不重要的细节的行为。
(4)封装:即对其客户隐藏对象的属性和实现细节,仅对外公开接口,并控制在程序中属性的读和修改的访问级别。
(5)泛化:泛化是类元的一般描述和具体描述之间的关系,具体描述建立在一般描述的基础上,并对其进行了扩展。
(6)多态:多态是在同一接口下表现多种行为的能力,是面向对象技术的根本特征。
用例之间的3种关系是什么?各使用在什么场景?
(1)用例之间的泛化关系
将特化的用例与一般的用例联系起来,子用例继承了父用例的属性、操作和行为序列。
场景:适用于描述不同用例之间的继承关系,当某些用例具有共同的功能和行为时,可以通过泛化关系来进行抽象,避免冗余的描述。
(2)用例之间的包含关系:一个用例(基用例)可以包含其他用例(包含用例)具体的行为。基用例一定会要求
场景:适用于一个用例的行为是另一个用例的一部分,并且每次执行时都需要执行该部分功能。包含用例执行。
(3)用例之间的扩展关系:指一个用例(扩展用例)对另一个用例(基用例)行为的增强。
场景:适用于某个用例的行为在特定条件下才会发生扩展。扩展用例通常是可选的,只有在特定条件满足时才会触发。
(泛化和依赖 依赖又分为包含和扩展)
顺序图中的消息按其并发性可以分为哪两种?这两种消息的发送和接收过程怎样表现?
同步消息:同步消息指的是发送方在发送消息后,必须等待接收方处理完消息并返回响应之后,才能继续执行后续操作。
表现形式:同步消息使用带有实心箭头的直线表示,并在消息线上注明消息名称。
异步消息:异步消息指的是发送方在发送消息后,无需等待接收方的响应,可以立即继续执行后续操作。
表现形式:异步消息使用带半个箭头的直线表示,并在消息线上注明消息名称。
画图
类图
设计一个在线书店系统,本系统中将用户分为两个类:管理员、顾客,该系统需满足的核心功能如下:
(1)图书浏览:顾客可以浏览图书列表,查看图书详情;
(2)购物车管理:顾客可以添加图书到购物车,修改购物车中的图书数量,或从购物车中移除图书;
(3)订单处理:顾客可以提交订单,查看订单历史;
(4)图书管理:管理员可以添加、删除和编辑图书信息。
试根据上述说明,分析出该系统所包括的类,绘制出类图。
活动图
在图书借阅系统中,关于管理员删除读者信息的流程如下:
(1)查找读者信息:管理员需要登陆系统,输入待删除读者姓名;
(2)判断读者是否存在:输入待删除读者姓名后,先由业务逻辑组件进行判断。如果读者存在,业务逻辑组件进行下一步操作。如果读者不存在,则显示出错信息;
(3)判断读者是否能够删除:确定读者信息存在后,业务逻辑组件对进行“删除读者”,如果读者消息可以被删除,流程流转至数据库,并显示删除成功信息。如果读者信息不可以被删除,则显示出错信息。
试根据上述说明,绘制该系统相应的活动图。
状态图
现有一款全自动洗衣机,具体功能如下:
(1)开机时,会进入“待机”状态,可以设置洗衣模式以及水量,触发启动按钮后,会进入“工作中”状态;
(2)进入“工作中”状态后,有“加水”、“清洗”、“排水”、“甩干”四个功能。洗衣机会从“加水”开始执行,依次进行“清洗”和“排水”操作,排水完成后,根据清洗次数是否达标,执行“加水”或“甩干”操作;
(3)洗衣机在“工作中”时,无论在进行什么操作,当按下暂停键时,会进入“暂停状态”,再按一次暂停键将继续工作。
试根据上述说明,绘制该系统相应的状态机图。
💬 评论