这是一篇相对较长的文章,如你们所见,比力详细,全长两万字。我不发起你们一次性看完,直接跳目录找你需要的知识点即可。
--------欢迎各位来到我UML国!
一、UML图
统共有如下几种:
- 用例图(Use Case Diagram):描述系统功能和用户交互。
- 类图(Class Diagram):描述系统中的类、接口、它们的属性、方法和关系。
- 序列图(Sequence Diagram):描述对象间的消息交换次序。
- 状态图(State Diagram):描述对象状态的变化。
- 运动图(Activity Diagram):描述业务流程或操作的步骤。
- 组件图(Component Diagram):描述系统的物理结构,展示组件和它们的依赖关系。
- 部署图(Deployment Diagram):描述系统的物理部署,展示硬件和软件组件的分布。
- 通信图(Communication Diagram):序列图的变体,强调对象间的关系。
- 定时图(Timing Diagram):描述对象间交互的时间束缚。
- 交互概览图(Interaction Overview Diagram):组合不同范例的交互图。
- 对象图(Object Diagram):类图的实例,显示对象间的详细交互。
- 包图(Package Diagram):描述系统的逻辑视图,展示包和类的关系。
接下来,小的给小主详细先容一下宫里几位主子:
<1>天子:用例图【Use Case】
1. 界说
- 用例图是表示一个系统中用例与到场者关系之间的图,描述系统中相干用户和系统对不同用户提供的功能和服务。
- 用例就是到场者提出来的要求实现的功能。
2.构成元素
【1】到场者(Actor)**:位于用例的外部,和软件系统有交互的人或者事物。图如下:
【2】系统边界(System Scope)**:表示软件系统的边界,边界内部就是软件必须实现的,边界外部就不需要写代码来实现。图如下:
【3】用例(Use Case)**:描述系统对外提供的功能,用椭圆表示。
【4】关联(Association)**:表示到场者和用例之间的关系,用直线表示。
如何识别到场者?为系统提供输入的人或事物
举例:
为系统提供输入的人 网上市肆:卖家 买家
为系统提供输入的物 教务管理系统 门生宿舍管理系统
吸收系统输出的人或事物 校长吸收全校结果/挂科人数
需要接入的第三方系统或装备 电商系统 付出宝、微信、网络银行系统
时间是否会触发某些变乱 还书超过时间要付补偿金
负责支持或维护系统中信息的人 图书管理员
3.画出到场者、用例之间的关系
3.1 Generalization :泛化关系、继承关系
图形:带空心三角形的实线,指向父类
例如狗和动物,自行车和交通工具
到场者与到场者之间:
用例与用例之间:
3.2 Include:包罗关系
两个用例之间的关系,表示一个用例的实现需要另一个用例的到场。
图形:带箭头的虚线,指向被包罗
例如去餐厅用饭需要付钱,网上购物需要填写收货地址
网络市肆:用户登录(A) 账号暗码登录 (B) 微信登录 (B)
A用例称之为基用例,两个B用例称之为包罗用例;
没有B用例,A用例是不完整的;B用例是必不可少的
3.3 Extend:扩展关系
表示一个用例是另一个用例的可选部分,基本用例是一个完整的用例,即使没有扩展用例 也能完成功能。
图形:带箭头的虚线,指向基用例
打个比方,你去购买商品的时候需要申请折扣,在线预定旅店需要哀求特殊需求,需要一 个母婴房或者是无烟房。就是不是每次都会发生的。
购买商品又叫做基用例,申请折扣是拓展用例;
在线预订旅店是基用例,哀求特殊需求就是拓展用例
图书馆管理系统:归还图书(A) 缴纳罚金(B)
A用例是基用例,B用例称之为扩展用例
A用例是B用例实行的条件;
B用例是A用例实行过程中满足某些条件才实行的
3.4 Association:关联关系
表示两个类之间存在某种联系,是一种拥有的关系,它使一个类知道另一个类的属性和方法。
图形:
- **双向关联**:通常用一条不带箭头的实线表示,表示两个类之间相互关联。
- **单向关联**:用一条带箭头的实线表示,箭头指向被拥有的类。
一个“门生”(Student)类和一个“课程”(Course)类,一个门生可以注册多个课程,一个课程可以有多个门生注册。这种情况下,门生和课程之间的关联关系是双向的。
如果关联关系是单向的,比如一个“老师”(Teacher)类和一个“课程”(Course)类,一个老师可以教授多个课程,但一个课程通常只有一个主要负责人。这种情况下,老师和课程之间的关联关系是单向的,从“老师”指向“课程”。
4.用例规约
表达行业性功能的业务流程的方式:运动图、用例规约
用例图无法表达行业性功能的业务流程,只能用上面两种方式
用例名称
| 用户登录
| 到场者
| 读者、门生、老师
| 用例简述
| 图书馆的各种读者通过用户登录获取其在系统中的合法身份
| 前置条件
| 已经注册了读者身份
| 基本变乱流
| 用户操作
3、用户在登录界面上输入账号、暗码数据,
并提交
| 系统反应
2、系统显示登录界面
4、系统验证账号是否存在,暗码是否正确,系统记录
登录成功的用户的数据;系统显示主界面
| 分支变乱流(n)
| 在基本变乱流第4步发现账号不存在或者暗码错误,进入分支变乱流
回到基本变乱流第3步
|
系统再一次显示登录界面,界面上显示上一次的错误原因
| 后置条件
| 系统记任命户信息,修改用户的状态
|
- 用例规约中的文字禁止利用软件专业术语
- 基本变乱流只写正确实行的主要变乱流,不正确的流程写在分支变乱流
- 变乱流只写用户与系统之间的交互,系统内部不消描述的,将软件系统看成一个黑匣子
5. 用例图的用途
-用例图通过到场者、用例以及它们之间的关系来描述系统的功能,便于开发人员开发。
用于描述系统功能和用户交互
复习题:
<1>上图中的到场者有:
<2>上图中那两个构件事物之间存在包罗关系:
- 门生和读者 2、归还图书和缴纳罚金 3、用户登录和账号暗码登录
<3>考点:包罗关系和扩展关系有什么相同点和不同点?
复习题答案
<1>找火柴人:选1
<2>找include:选3
<3>
相同点:包罗关系和扩展关系都是从现有的用例中抽取出公共的部分信息,作为一个单独的用例,然后通过不同的方法来重用这个公共的用例,以减少模型维护的工作量。
不同点:
1. **实行机会**:
- **包罗关系**:在基用例的基本流实行时,包罗用例肯定会实行。这意味着包罗用例是基用例实行的必要部分。
- **扩展关系**:扩展用例是对基用例的扩展,即使没有扩展用例的到场,基用例也可以完成一个完整的功能。扩展用例只有在基用例满足某种条件的时候才会实行,这使得扩展用例成为基用例的可选部分。
2. **图形表示**:
- **包罗关系**:在用例图中,包罗关系利用带箭头的虚线表示,箭头从基用例指向包罗用例,并在线上标注“<<include>>”。
- **扩展关系**:在用例图中,扩展关系也利用带箭头的虚线表示,但箭头从扩展用例指向基用例,并在线上标注“<<extend>>”。
<2>皇后:类图【Class Diagram】
1. 界说
- 类图用于描述系统中的类、接口、属性、方法以及它们之间的关系。它是面向对象计划的核心,用于展示系统的静态结构。
2.构成元素
【1】类(Class)**:表示具有相同属性和操作的一组对象的蓝图。
类通常用矩形表示,分为三个部分:顶部是类名,中间是属性,底部是操作。
【2】接口(Interface)**:界说了一组操作规范,但不实现这些操作。
【3】 属性(Attributes)**:类中界说的变量,用于存储数据。
【4】 操作(Operations)**:类中界说的函数或方法,用于实行动作。
【5】关系(Relationship)**:
- **关联(Association)**:表示两个类之间的结构性关系。
- **依赖(Dependency)**:表示一个类的变化大概影响另一个类。
- **泛化(Generalization)**:表示继承关系,子类继承父类的属性和操作。
- **实现(Realization)**:表示一个类实现了一个接口。
- **聚合(Aggregation)**:表示团体与部分的关系,部分可以独立于团体存在。
- **组合(Composition)**:表示团体与部分的关系,部分不能独立于团体存在。
【6】可见性(Visibility)
- **+** public:公共的,可以被任何其他类访问。
- **-** private:私有的,只能在界说它的类内部访问。
- **#** protected:受保护的,可以被界说它的类及其子类访问。
- **~** package:包访问权限,只能在界说它的包内部访问。
- 两个类之间相互关联时,关联自身也具有属性和操作。
- 类图主要展示系统的静态结构,但也可以表示动态方面,如对象间的关系和交互。
3.作用
- 提供系统的静态视图,资助明白系统的结构和组成。
- 作为代码实现的蓝图。
- 促进团队成员之间的沟通和明白。
复习题:
某商场会员管理系统包罗一个会员类(Member), 会员的基本信息包罗会员编号、 会员姓名、 联系电话、 电子邮箱、 地址等, 会员可分为金卡会员(GoldMember)和银卡会员(SilverMember)两种, 不同范例的会员在购物时可以享受不同的折扣; 每个会员可以拥有一个或多个订单(Order), 每一个订单又可以包罗至少一条商品销售信息(ProductItem), 商品销售信息包罗订单编号、 商品编号、 商品数量、 商品单价和折扣等; 每一条商品销售信息对应一类商品(Product), 商品信息包罗商品编号、 商品名称、 商品单价、 商品库存量、 商品产地等。
<1>根据以上描述画出类图。
<2>UML类图中,关联和依赖的区别是什么?
A. 关联是有向的,依赖是无向的
B. 关联是无向的,依赖是有向的
C. 关联表示对象之间的关系,依赖表示类之间的继承关系
D. 关联表示类之间的继承关系,依赖表示对象之间的关系
<3>在UML类图中,多重性“1”表示什么含义?
A. 一个类的对象可以与另一个类的对象有多个关联。
B. 一个类的对象必须与另一个类的对象有一个关联。
C. 一个类的对象可以与另一个类的对象有零个或多个关联。
D. 一个类的对象可以与另一个类的对象没有关联。
<4>如果在UML类图中,一个类与另一个类之间的关联多重性标记为“0..*”,则表示:
A. 每个对象至多有一个关联对象。
B. 每个对象至少有一个关联对象。
C. 每个对象可以有零个或多个关联对象。
D. 每个对象必须有多个关联对象。
复习题答案
<1>
<2>C. 关联表示对象之间的关系,依赖表示类之间的继承关系
<3>B. 一个类的对象必须与另一个类的对象有一个关联。
<4>C. 每个对象可以有零个或多个关联对象。
<3>贵妃:序列图【Sequence Diagram】
1.界说
- 序列图通过描述对象之间发送消息的时间次序来显示多个对象之间的动态协作。它在详细计划阶段用于计划对象的交互和举动。
- 它是一个二维图,横轴表示对象,纵轴表示时间,消息在各对象之间横向传递,依照时间次序纵向分列。
2.构成元素
【1】角色(Actor)**:系统角色,可以是人或其他系统,子系统。以一个小人图标表示。
【2】对象(Object)**:对象位于序列图的顶部,以一个矩形表示。对象的定名方式一样平常有三种:对象名和类名、只显示类名(匿名类)、只显示对象名。
【3】生命线(LifeLine)**:每个对象底部中心的垂直虚线,表示对象在一段时间内的存在。
【4】激活(Activation)**:表示对象将实行相应操作的时间段的符号。在C语义中可以解释为一对括号{};用一个小矩形表示,即绿色圈中部分。
【5】消息(Message)**:对象之间传递的信息,用于表示对象之间的交互。消息分为同步消息、异步消息和返回消息。
3. 消息范例
<1>同步消息(Synchronous Message)**:发送者发送消息后,必须等候吸收者处理完毕后才气继承实行。
<2>异步消息(Asynchronous Message)**:发送者发送消息后,不需要等候吸收者的相应,可以继承实行后续操作。
<3>返回消息(Return Message)**:表示一个对象收到消息后实行了相应的操作,并将结果返回给发送消息的对象。
4. 自关联消息
自关联消息是指对象在序列图中发送消息给自己的情况。这种消息表示对象内部的自身举动或交互。
5. 创建和烧毁消息
到场者不肯定在序列图交互的整个持续时间内都存在。可以根据传递的消息创建和烧毁到场者。
复习题:
<1>上图绘制的是客户在主动售货机购买商品的次序图,到场的用户界面类是:
A、出货器 B、前端 C、顾客 D、识别器
<2>正确按照时间次序分列的消息是:
A.交付货币 交付商品信息 识别 出货
B.识别 交付货币 交付商品信息 出货
C.交付货币 识别 交付商品信息 出货
<3>交付货币消息将被实现为 类的方法
出货器 B、前端 C、顾客 D、识别器
复习题答案
<1>B 找和用户有交互接触的类
<2>C 次序图的时间次序一样平常是从左到右,再从上到下
<3>D 消息成为消息指向的类中的方法,就是说 消息指向谁就实现谁的方法
<4>贵妃:状态图【State Diagram】
1. 界说
- 状态图用于描述对象在系统中的所有大概状态及其相互之间的转变关系。它主要用于分析和计划基于变乱驱动的系统,例如嵌入式系统、交互式软件或业务流程。
2.构成元素
【1】状态(State)**:表示对象在其生命周期中的各种条件或情况。用圆角矩形表示,包罗状态名称,可选内部描述包罗进入、退出和持续运动。
【2】初始状态(Initial State)**:系统或对象的起始点,用一个实心圆表示。
【3】终极状态(Final State)**:系统或对象生命周期的停止状态,用一个双圈的实心圆表示。
【4】选择状态(Choice State) **:一样平常用菱形表示
【5】状态转移(Transition)**:表示状态之间的变动,用带箭头的直线连接两个状态,箭头上标注触发变乱、条件和动作。
【6】触发变乱(Triggers)**:Triggers是指引起状态转换的变乱或信号。它们是状态机相应的外部或内部刺激,可以是消息的吸收、时间变乱、条件满足或其他任何可以被状态机识别的变乱。
【7】条件(Guard Condition)**:状态转移的束缚,通常用方括号表示,条件为真时,转移才会发生。
这里有关Triggers和Guard我想增补一下,有些同学会比力狐疑不太能明白。
比如如今咱就是过马路,因为如今是状态图对吧。路灯有红灯,绿灯,黄灯三种状态,咱都知道,一样平常过了一段固定的时间路灯就会变颜色,这个固定的时间就是Triggers,也就是我们说的触发器。这个Guard呢,比如说黄灯转绿灯就要没有车辆靠近,这个没有车辆靠近就是Guard。Triggers是Transition的必要条件,但是Guard不是。
【8】运动(Activity)**:表示在状态中实行的操作,可以细分为入口(entry)、持续(do)和出口(exit)动作。
3.画图
第一步:右击Model根节点
第二步:Add a Model using Wizard 添加新模型
第三步:State Machine选择一个模型 ---> Create pattern
第四步:先画Initial开始状态和Final结束状态
第五步:绘制其他状态State
第六步:画状态之间的转移
留意:一样平常initial、final和一样平常状态之间的转移不需要写转移条件
复习题:
<1>状态图中,以下哪一项是描述状态之间转换的触发因素?
A. 状态 B. 转换 C. 变乱 D. 动作
<2>在状态图中,当对象从一个状态转移到另一个状态,这个过程称为什么?
A. 变乱 B. 转换 C. 动作 D. 状态
<3>下列哪一项不是状态图的核心元素?
A. 对象 B. 状态 C. 转换 D. 变乱
<4>对于在线购物系统中的订单对象,以下哪一状态不大概出如今其状态图中?
A. 待付款 B. 已发货 C. 购物车 D. 已完成
<5>根据以下的描述,绘制“复印机”的状态图。
未接到工作下令时,复印机处理闲置状态,接到复印下令后,转入复印状态,完成复印后又回到闲置状态,等候下令。若复印时发现没纸,则进入缺纸状态,发出警告等候装纸,装纸完成后又进入闲置状态;若复印时发现卡纸,则进入卡纸(故障)状态,发出警告等候清除故障,故障清除后又进入闲置状态。
<6>绘制选课系统中课程(Course)对象的状态图。
经过需求分析,Course课程对象有以下状态:创建(Created),添加到数据库中(In Database),课程(在数据库中)被删除(Deleted),课程被修改(Modified),课程被开设(纳入学期筹划)(In Schedule),不允许选修(选修人数满)(Locked)。
复习题答案
<1>C. 变乱
<2>B. 转换
<3>A. 对象
<4>C. 购物车
<5>
<6>
<5>嫔:运动图【Activity Diagram】
1. 界说
-运动图用于描述系统中业务流程、工作流或系统操作的动态举动。它展示了业务流程中的步骤以及这些步骤之间的控制流。
2. 构成元素
【1】运动(Activity)**:表示一个操作或一个动作的实行,是运动图中的基本单元。
【2】动作状态(Action )**:表示一个动作的实行,是运动图中的一个节点。不可细分!
Activity和action是有区别的,一个Activity可以包罗多个action。比如说你要去上早八,首先你要起床----去买个包子----走路到教室----认真听讲【混日子的就是打王者刷抖音偶尔仰面看一眼老师等用饭】----下课,此中上早八就是Activity。起床/买包子/走路到教室/听讲/下课分别是5个Action。
【3】决议节点(Decision Node)**:具有一个进入控制流和至少两个导出控制流。判断是否满足条件。满足继承,不满足走另一条路。
【4】并发地区(Concurrent Region)**:表示多个运动可以并行实行。
【5】同步条(Synchronization Bar)**:表示多个并行运动的开始或结束。
【6】. 动作流(Action Flow)**:连接运动,表示运动之间的次序实行。
【7】 分叉(Fork)和会合(Join)**:
- 用来对并发的控制流建模
- 分叉用于将运动流分为两个或多个并发运行的分支,会适用于将并行分支的运动流重新合并。
- 所有的子流程都要实行;所有子流程的实行具有并行实行的特点
【8】泳道(Swimlane)**:将运动图分别为不同的地区,每个泳道代表一个责任地区,指明运动是由谁负责的或发起的。
【9】对象流(Object Flows)**:表示动作状态或运动状态与对象之间的依赖关系,表示动作利用对象或动尴尬刁难对象的影响。
【10】开始节点(Initial Node)**:表示流程的开始,通常用一个实心黑色圆点表示。
【11】停止节点(Final Node)**:表示流程的结束,通常用一个半实心球表示。
复习题:
<1>运动图中用于判断节点的多个控制流合并的元素是( ).
A 判断节点 B 泳道 C 合并 D 分叉
<2>下面不是运动图中的基本元素是( ).
A 分叉、合并 B 泳道、对象流 C 用况 状态 D 运动 分支
<3>运动图中用于运动分组的元素是( ).
A 泳道 B 控制流 C 判断节点 D 包
<4>下列建模得当利用运动图的有( ),
A 对业务流程建模 B 对程序流程建模 C 对体系结构建模 D 对数据库建模
<5>请根据以下游程,画一张门生请假的运动图。
门生填写请假单 ===> 班主任审批 ===> (请假时间>1天)学工处审批===>
学工处记录 ===> 班主任关照门生请假结果
<6>请根据以下游程,画一张运动图。
卖家吸收到买家的订单后处理订单的业务流程:
财务部收款 开具发票
仓储部备货 发物流
复习题答案
<1>C
<2>C
<3>A
<4>AB
<5>无脑画initial和final开始和结束-----依赖画Action动作-----利用ControlFlow连接所有动作
<6>嫔:组件图【Component Diagram】
1.界说
- 组件图提供了系统的物理视图,展示了软件组件如何分解以及它们之间的依赖关系。
2.构成元素
【1】组件(Component)**
- 组件是软件的可替换模块,它封装了实现细节,并提供了一个清晰的接口。
- 在组件图中,组件通常用矩形表示,名称通常显示在矩形内部。
【2】接口(Interface)**
- 组件提供的接口用小圆圈表示,位于组件的边界上。
- 接口可以是用于组件间通信的点,也可以是组件提供的服务。
【3】组件之间的关系**
- **依赖关系(Dependency)**:表示一个组件的利用或功能依赖于另一个组件的实现。
- **实现关系(Realization)**:表示一个组件实现或特化了一个接口。
- **聚合关系(Aggregation)**:表示组件间的团体与部分的关系,部分可以独立于团体存在。
- **组合关系(Composition)**:表示组件间的强团体与部分的关系,部分不能独立于团体存在。
【4】可见性(Visibility)
- 接口的可见性可以是公共的(+)或私有的(-),表示接口的访问权限。
【5】部署视图**
- 组件图与部署图(Deployment Diagram)结合利用,可以展示组件在硬件上的部署情况。
复习题:
<1>组件图专注于系统的哪种实现图?
A. 动态 B. 静态 C. 基础 D. 实体
<2>在UML中,哪个元素是被节点实行的事物?
A. 包 B. 组件 C. 接口 D. 节点
<3>组件图通常在软件开发的哪个阶段利用?
A. 实现 B. 需求分析 C. 架构计划 D. 维护
<4>组件图中,哪个元素界说了组件提供或利用的功能?
A. 组件 B. 接口 C. 依赖关系 D. 关联关系
在这个组件图中:
- 用户界面(UI)负责显示册本信息和处理用户订单。
- 订单处理(OP)管理订单逻辑和库存更新。
- 库存管理(IM)跟踪册本库存。
- 付出网关(PG)处理付出事务。
- 册本数据库(BD)存储册本信息和库存数据。
<5>在在线书店系统中,“付出网关(PG)”组件的主要功能是什么?
<6>如果在线书店系统需要添加一个新的功能,允许用户撰写和阅读册本批评,请计划相应的组件
复习题答案
<1> B. 静态
<2> B. 组件
<3>A. 实现
<4>B. 接口
<5>
- 吸收付出哀求:当用户完成购物并选择付出方式后,付出网关吸收来自用户界面的付出哀求。
- 验证付出信息:付出网关验证用户提供的付出信息,如信用卡详情、付出金额等。
- 与银行或付出服务提供商交互:付出网关与外部银行系统或付出服务(如PayPal、Stripe等)进行通信,以完成付出处理。
- 确认付出结果:付出网关将付出结果(成功或失败)返回给订单处理组件,以便更新订单状态。
- 安全性保障:确保所有付出信息的安全传输和处理,遵守相干的付出卡行业(PCI)标准。
- 提供付出日记和陈诉:记录所有付出运动的细节,为审计和陈诉目标提供数据。
<6>新组件名称:批评管理(Review Management)
- 主要功能:
- 批评提交:允许用户提交册本批评,并将其存储在系统中。
- 批评检索:提供接口供用户检索和阅读册本批评。
- 批评存储:将批评数据存储在数据库中,与册本信息和用户信息相干联。
- 批评审核:对用户提交的批评进行审核,确保批评内容符合规定标准。
- 用户反馈:允许用户对批评进行点赞或陈诉不妥内容。
- 与其他组件的关系:
- 用户界面(UI):批评管理组件将与用户界面组件交互,提供批评提交和显示的界面。
- 册本数据库(BD):批评管理组件将与册本数据库组件交互,存储和检索与册本相干的批评。
- 订单处理(OP):如果批评与特定订单相干,批评管理组件大概需要与订单处理组件交互,以获取订单详情。
<7>贵人:部署图【Deployment Diagram】
1.界说
- 部署图(Deployment Diagram)描述了系统的物理架构,包罗硬件节点和在这些节点上运行的软件组件。它展示了系统的硬件配置、硬件部署以及软件如何部署到网络结构中。
2.构成元素
【1】节点(Node)**:代表运行时的物理对象,如服务器、数据库服务器等。节点通常用立方体表示,处理器节点带阴影,装备节点不带阴影。
【2】节点实例(Node Instance)**:表示特定节点的一个实例,名称会有下划线,而且节点范例前会有冒号。
【3】构件(Artifact)**:软件开发过程中的产物,如源代码、可实行程序、文档等。构件通常用带有关键字«artifact»和文档图标的矩形表示。
构件vs节点
- 构件表示软件部件,节点表示硬件部件。构件是到场系统实行的事物,而节点是实行构件的事物。
【4】连接(Association)**:表示节点之间的通信路径,可以是协议如TCP/IP、HTTP等。
【5】处理器(Processor)**:具有计算能力的节点,可以实行软件组件,如服务器。
【6】装备(Device)**:不具有计算能力的节点,通过接口提供服务,如打印机、扫描仪。
3.用途
- 描述一个详细应用的主要部署结构。
- 平衡系统运行时的计算机资源分布。
- 描述组织的硬件网络结构或嵌入式系统的多种硬件和软件相干的系统运行模型。
复习题
<1>在UML中,部署图主要用于展示以下哪项内容?
A. 系统的静态结构 B. 系统的动态举动 C. 系统的物理架构 D. 系统的功能需求
<2>UML部署图中,以下哪个选项不属于部署图中的事物?
A. 节点(Node) B. 构件(Artifact) C. 用例(Use Case) D. 组件(Component)
<3>在UML部署图中,以下哪个选项正确描述了构件实例与节点的关系?
A. 每个构件实例必须部署在多个节点上
B. 一个节点可以包罗多个构件实例
C. 构件实例不能与节点分开
D. 节点是构件实例的抽象表示
复习题答案
<1>C. 系统的物理架构
<2>C. 用例(Use Case)
<3>B. 一个节点可以包罗多个构件实例
<8>常在:通信图/协作图【Communication Diagram】
1.界说
- 通信图用于描述一组对象在协作过程中如何互相通信,强调对象在交互中承担的角色,侧重于展示对象之间的关系。通信图是序列图的变体,强调对象间的关系。它在详细计划阶段用于展示对象间的交互结构。
2.构成元素
【1】对象(Object)**:
- 对象的基本表示形式与次序图中的对象相同,都是类的实例。
- 对象在通信图中的位置没有限制,且不表示对象的创建与烧毁。
-图形为一个方框,加了“:”之后就变成实例化对象
【2】链(Link)**:表示对象之间的关系或连接,用于描述消息传递的路径。
- 链是关联的实例,用于连接对象并传递消息,若两个对象需要发生交互,必须先创建链。
【3】消息(Message)**:
- 消息需要附加在对象之间的链上,通过链连接的两个对象之间才允许在交互实行过程中进行消息传递。
- 短箭头上方的阿拉伯数字表实行次序。
3.画message
<1>先画两个对象
<2>画association
<3>右击选择消息,点击黑框或者绿框,你自己根据情境选择
或者可以把类实例化变成对象之后再进行message的连接,加了“:”之后就变成实例化对象
4. 特性
- 通信图可以表示多态性,展示不同范例的对象如何相应同一消息。
- 通信图可以表示同步和异步消息,通过特定的箭头和符号来区分。
复习题
假设我们正在计划一个电梯系统,该系统需要处理用户的楼层哀求,并根据哀求调理电梯。系统包罗队列(RequestQueue)、电梯(Elevator)、下令、楼层控制器(FloorController)、按钮(Button)等组件。用户通过按钮发出哀求,楼层控制器吸收哀求并调理电梯,电梯根据下令实行上下行操作。
- 用户调用按钮的nextJob()方法发出哀求。
- 按钮调用楼层控制器的create()方法创建一个新的哀求。
- 楼层控制器调用队列的push()方法将哀求添加到队列中。
- 楼层控制器根据队列中的哀求调用电梯的getElevator()方法分配电梯。
- 电梯根据楼层控制器的下令实行moveUp()或moveDown()方法。
<1>请你根据描述画出协作图
阅读以下读者借阅图书用例的协作图,完成习题:
<2>图上用户界面类是:
A 借书窗口
B 图书信息
C 图书借阅信息
D 图书管理员
<3>检查借阅信息这几个消息的时间序列
选择册本 / 添加借阅图书信息 / 显示借阅记录 / 提交借书证和册本
<4>本图中有哪些消息需要循环发送?
复习题答案
<1>
<2>A 用户界面类负责IO,和到场者有交互的类 看消息标注上的前缀
<3>提交借书证和册本 ----- 选择册本 ----- 添加借阅图书信息 -----显示借阅记录
<4>*[所有想要借的图书]选择册本()
<9>常在:定时图【Timing Diagram】
1.界说
- 定时图用于展示对象状态随时间的变化,以及对象间的交互和变乱的时序关系,特殊适用于分析并发系统和实时系统。
--定时图描述对象间交互的时间束缚。它在需要精确时间控制的系统中利用,如实时系统。
2.构成元素
【1】时间轴(Time Axis)**:展示时间的流逝,通常是水平方向。
【2】生命线(Lifeline)**:代表系统中的一个元素,如一个对象或组件,在定时图中通常是垂直方向展示。
- 生命线结束表示对象完成了其生命周期内的所有举动。
【3】状态(State)**:展示生命线上对象在特定时间段的状态。
【4】时间束缚(Time Constraint)**:指定状态持续时间或变乱发生的详细时间。
【5】变乱(Event)**:表示在特定时间点发生的事变,可以是发送或吸收消息,也可以是状态的变动。
【6】条件变乱(Conditional Event)**:表示基于特定条件的变乱,条件可以是布尔表达式,当条件为真时变乱发生。
【7】时间段(Time Interval)**: 表示一个时间段,在这段时间内对象保持特定的状态或实行特定的运动。
【8】同步条(Synchronization Bar)**: 表示多个对象在特定时间点的同步操作,通常用一条粗线表示。
【9】烧毁(Destruction)**:表示对象在某个时间点被烧毁,可以用一个“X”标记在生命线上。
【10】创建(Creation)**:表示对象在某个时间点被创建,可以用一个空心圆圈标记在生命线上。
【11】自变乱(Self-Event)**: 表示对象内部发生的变乱,通常用一个指向自身的箭头表示。
【12】组合片断(Interaction Fragments)**:用于表示消息序列中的选择、迭代和并发等复杂举动。
3. 用途
- 定时图特殊适用于分析并发控制和时间依赖的举动计划。
- 定时图与其他交互图(如次序图和通信图)的主要区别在于它强调时间因素,而次序图强调消息的时间次序,通信图强调对象间的组织结构。
复习题
<1>UML定时图主要用于表示什么?
A. 类之间的关系
B. 对象状态随时间的变化
C. 系统的物理部署
D. 用例的实现细节
<2>在UML定时图中,时间轴通常是如何表示的?
A. 垂直方向 B. 水平方向 C. 对角线方向 D. 无固定方向
<3>生命线在UML定时图中代表什么?
A. 变乱 B. 操作 C. 对象或组件 D. 用例
<4>下列哪个不是UML定时图的基本组成部分?
A. 时间轴 B. 状态 C. 消息序列 D. 时间束缚
<5>定时图中的生命线结束表示什么?
A. 对象被烧毁
B. 系统崩溃
C. 对象状态不再改变
D. 对象完成了其生命周期内的所有举动
复习题答案
<1>B. 对象状态随时间的变化
<2>B. 水平方向
<3>C. 对象或组件
<4>C. 消息序列
<5>D. 对象完成了其生命周期内的所有举动
<10>答应:交互概览图【Interaction Overview Diagram】
1. 界说
- 交互概览图=运动图+次序图
- 交互概览图是运动图的一种形式,其节点代表交互图。它可以明白为细化的运动图,此中的运动通过一些小型的次序图来表示;也可以将其明白为利用标明控制流的运动图分解过的次序图。
2.构成元素
【1】交互发生(Interaction Occurrence)**
- 表示一个特定的交互实例,可以是次序图中的一个片断或其他范例的交互图。
【2】交互利用(Interaction Use)**
- 表示一个通用的交互模式,可以被多个不同的交互发生所重用。
【3】生命线(Lifeline)**
- 表示到场交互的对象,每个对象都有一条垂直的生命线。
【4】消息(Message)**
- 表示对象之间的通信,包罗同步消息、异步消息和返回消息。
- 自关联消息(Self-Message):表示对象发送消息给自己的情况。
【5】扩展地区(Extension Region)**
- 表示扩展用例的片断,用于展示扩展用例如何扩展基础用例。
【6】包罗地区(Include Region)**
- 表示包罗用例的片断,用于展示基础用例如何包罗其他用例。
【7】交互(Interaction)**
- 表示一系列消息交换,可以是次序图、通信图或其他范例的交互图。
【8】时间束缚(Time Constraints)**
- 用于指定消息交换的时间限制。
【9】守卫条件(Guard Conditions)**
- 用于指定分支的条件,只有当条件满足时,相应的分支才会实行。
【10】角色(Actor)**
- 表示与系统交互的外部实体,可以是人或其他系统。
【11】信号(Signal)**
- 表示在特定条件下触发的动作,通常用于表示异步变乱。
【12】时间轴(Timeline)**
- 用于展示时间的流逝,通常在交互概览图的顶部或底部。
【13】交互实行(Interaction Execution)**
- 表示交互的实行路径,可以包罗多个消息和分支。
好无聊啊 做个心情包玩下
复习题
复习什么复习,这个利用频率相对较少,自己找找概念题做一下算了,画图估计不会考
<11>答应:对象图【Object Diagram】
1. 界说
- 对象图展示了类的实例以及这些实例之间的关系,是一种快照,反映了系统的某个特定时刻的状态。
- 对象图是类图的实例,显示对象间的详细交互。它在分析特定场景下的对象状态和关系时利用。
2.构成元素
【1】对象(Object)**:表示类的一个详细实例,用矩形表示,通常包罗对象名和类名。
- - 对象的属性可以列出详细值,用“属性名:属性值”的形式表示。
- - 对象图可以展示对象的方法,但通常不展示方法的详细实现。
- - 表示关联中对象的数量,用在关联的两端,如“1..*”表示“一到多个”。
- - 属性和方法的可见性可以用“+”(public)、“-”(private)、“#”(protected)和“~”(package)表示。
【2】关联(Association)**:表示对象之间的关系,用带标签的线表示。
【3】聚合(Aggregation)**:表示团体与部分的关系,用带有菱形或实心点的线表示。
【4】组合(Composition)**:表示更猛烈的团体与部分关系,用带有实心菱形的线表示。
【5】依赖(Dependency)**:表示一个对象的变化大概影响另一个对象,用虚线箭头表示。
【6】继承(Inheritance)**:表示一个类是另一个类的子类,用带空心箭头的线表示。
3. **对象图与类图的区别**
- 类图描述了类的静态结构和类之间的关系,而对象图展示了类的详细实例和实例之间的关系。
复习题
<1>在UML对象图中,以下哪个符号用来表示对象?
A. 矩形 B. 圆圈 C. 三角形 D. 椭圆形
<2>在UML对象图中,哪个符号表示对象之间的关联关系?
A. 实线 B. 虚线 C. 带箭头的线 D. 点划线
<3>在UML对象图中,多重性是如何表示的?
A. 利用数字表示 B. 利用文本描述 C. 利用图标表示 D. 不能表示
<4>在该UML对象图中,一个“Student”对象可以与多少个“Course”对象相干联?
复习题答案
<1>A
<2>A
<3>A
<4>一个“Student”对象可以与2个“Course”对象相干联。
<12>宫女:包图【Package Diagram】
1. 界说
- 包图(Package Diagram)用于描述模型中的包及其关系,展示了系统的模块化结构和包之间的依赖关系。
2.构成元素
【1】包(Package)**
- 包是包图的主要元素,用于组织和封装其他模型元素,如类、用例、组件、其他包等。
- 在包图中,包通常用一个矩形表示,矩形内部可以包罗包的名称。
- 包中的元素可见性包罗公有(public)、私有(private)和保护(protected),分别用 “+”、“-”和“#”表示。
- 包可以嵌套利用,表达系统模型元素的静态结构关系。
- 允许一个包中的元素访问另一个包中的元素,用虚线带箭头表示,箭头指向被导入的包。
【2】节点(Node)**:
- 在包图中,节点可以表示处理器或装备,类似于部署图中的节点。
【3】元素(Elements)**
- 包内可以包罗各种UML模型元素,如类、用例、接口、组件、节点等。
【4】依赖关系(Dependency)**
- 表示两个包之间的依赖关系,即一个包的变化大概影响到另一个包。
- 在包图中,依赖关系用一条带箭头的虚线表示,箭头指向依赖的方向。
【5】导入关系(Import)**
- 允许一个包导入另一个包中的元素,使得导入包可以访问被导入包的元素。
【6】泛化关系(Generalization)**
- 表示包之间的继承关系,子包继承父包中的元素。
- 在包图中,泛化关系用一条带空心箭头的实线表示,箭头指向父包。
【7】 子包(Subpackage)**
- 包内可以包罗子包,形成包的条理结构。
- 包可以有自己的属性,如版本信息、作者等。
- 包可以有自己的操作,这些操作可以应用于包内的所有元素。
复习题
<1>下列哪个是用于把元素组织成组的通用机制?
A. 类
B. 包
C. 接口
D. 组件
<2>在UML提供的图中,哪个用于描述系统与外部系统及用户之间的交互?
A. 用例图
B. 类图
C. 对象图
D. 部署图
<3>在UML中,包和包之间的关系是什么?
A. 泛化
B. 实现
C. 依赖
D. 关联
<4>包图中,包的表示方法是?
A. 用一个带有下划线的类名
B. 用一个带有双下划线的类名
C. 用一个圆圈表示
D. 用一个矩形表示
<5>在UML中,哪个图用于展示系统的静态实现视图?
A. 部署图
B. 组件图
C. 包图
D. 用例图
复习题答案
<1>B. 包
<2>A. 用例图
<3>C. 依赖
<4>D. 用一个矩形表示
<5>C. 包图
二、应用场景以及区别
1. 用例图(Use Case Diagram)
- 描述系统的功能和用户(到场者)如何与这些功能交互。
- 强调系统的功能需求和用户视角。
2. 类图(Class Diagram)
- 描述系统的静态结构,包罗类、接口、属性、方法以及它们之间的关系。
- 强调系统的结构和类之间的关系。
3. 对象图(Object Diagram)
- 展示特定时刻系统中对象的实例和它们之间的关系。
- 是类图的实例化,强调系统的动态状态。
4. 状态图(State Diagram)
- 描述对象在其生命周期内的状态变化以及触发状态变化的变乱。
- 强调对象的状态和举动。
5. 运动图(Activity Diagram)
- 描述业务流程或操作的步骤和流程。
- 强调系统的动态举动和流程。
6. 序列图(Sequence Diagram)
- 描述对象之间交互的消息次序。
- 强调对象间通信的时间次序。
7. 通信图(Communication Diagram)
- 描述对象之间的交互和协作关系。
- 类似于序列图,但更强调对象的结构。
8. 定时图(Timing Diagram)
- 描述对象状态变化和变乱的时间束缚。
- 强调时间因素和时序关系。
9. 组件图(Component Diagram)
- 描述系统的物理结构,包罗组件和它们的依赖关系。
- 强调系统的物理实现和组件化。
10. 部署图(Deployment Diagram)
- 描述系统的物理部署,包罗硬件和软件的分布。
- 强调系统的物理配置。
11. 包图(Package Diagram)
- 描述系统的逻辑结构,包罗包和类的组织。
- 强调系统的模块化和组织结构。
12. 交互概览图(Interaction Overview Diagram)
- 结合不同范例的交互图,提供对复杂交互过程的团体视图。
- 强调交互的组织和概览。
三、各个类之间的关系
1.关联(Association)
举例:
门生和课程: 一个门生可以注册多个课程,一个课程可以有多个门生注册。
汽车与制造商: 一辆汽车由一个制造商制造,但一个制造商可以制造多种型号的汽车。
册本与作者: 一本书可以有一个或多个作者,一个作者可以写多本书。
医生与病人: 一个医生可以治疗多个病人,一个病人可以由多个医生治疗。
图形最简单的 就一条实线
多重性:它可以是一对一(One-to-One)、一对多(One-to-Many)、多对多(Many-to-Many)的关系。
2.聚合(Aggregation)
举例:
汽车与轮胎:一辆汽车由多个轮胎组成,但轮胎脱离汽车后仍可独立存在。
公司与部分:一个公司包罗多个部分,但部分在公司解散后仍可作为一个独立的实体存在。
门生与学校:一个学校由多个门生组成,门生可以上过多个学校,小学初中高中大学,学校倒闭,门生不会丢掉性命,嘻嘻。
乐队与音乐家::一个乐队由多个音乐家组成,但音乐家脱离乐队后仍可独立作为艺术家存在。
图形是一条带有菱形的实线,菱形指向团体(指大的)
部分独立于团体存在,团体烧毁不会影响部分,部分可以单独存在。
3.组合(Composition)
举例:
人类和心脏类:心死的时候没有一个人类是无辜的。
电脑与CPU:死电脑,看我干烧你。电脑包罗一个中央处理器,CPU是电脑的核心部件,不能独立于电脑存在。
机器与零件:没有零件就没有机器。机器由多个零件组成,零件是机器的组成部分,不能独立于机器存在。
汽车与引擎:汽车包罗一个引擎,引擎是汽车不可或缺的部分,不能独立于汽车存在。
图形:一条带有实心菱形的实线,菱形指向团体(指大的)
团体类包罗多个部分类,A类和B类首先是聚合关系,A类对象和B类对象的生命周期是划一的。团体被烧毁时,部分也被烧毁。 部分无法单独存在。
4.泛化(Generalization)
举例:
动物和鸟类:鸟类是动物的一种,因此鸟类继承了动物的属性和举动,如呼吸和进食,同时鸟类另有自己特有的属性,如飞行。
交通工具和汽车:汽车是一种交通工具,因此汽车继承了交通工具的属性和举动,如移动和停止,同时汽车另有自己特有的属性,如品牌和型号。
册本和小说:小说是一种册本,因此小说继承了册本的属性和举动,如作者和标题,同时小说另有自己特有的属性,如情节和角色。
图形:一条带有空心箭头的实线,箭头指向父类
A类是B类中的一种,A类继承B类
5.实现(Realization)
举例:
门锁和可锁定接口:门锁类实现了可锁定接口,意味着门锁具有可锁定接口界说的所有举动,如锁定息争锁。
打印机和打印接口:激光打印机类实现了打印接口,表示激光打印机能够实行打印操作。
音频播放器和播放控制接口:MP3播放器类实现了播放控制接口,意味着MP3播放器具有播放、暂停和停止等控制功能。
图形:一条带有空心箭头的虚线,箭头指向接口
实现关系表明一个类详细化了一个接口的规范,确保类提供了接口所要求的所有举动。
6.依赖(Dependency)
举例:
咖啡制作与咖啡机:咖啡制作过程依赖于咖啡机的功能,如果咖啡机发生变化(如升级或维修),大概会影响咖啡的制作方式。
用户界面与数据模型:用户界面显示数据模型中的数据,如果数据模型发生变化,用户界面大概需要更新以反映这些变化。
餐厅订单与厨房:餐厅订单的准备依赖于厨房的工作,厨房的服从直接影响订单的完成时间。
图形:一条带有箭头的虚线,箭头指向依赖的方向
A类对象需要调用B类对象的方法
7.友元(Friend)
举例:
银行账户和账单打印:银行账户类管理账户的余额和交易记录,而账单打印类需要访问这些私有信息来天生账户的月度账单。在C++中,可以将账单打印声明为银行账户的友元类,使其能够访问银行账户的私有成员。
图形和绘图工具:图形类包罗绘制自身的逻辑,而绘图工具类需要访问图形的内部数据来实行绘制操作。在C++中,可以将绘图工具声明为图形的友元类,使其能够直接访问图形的私有数据。
图形:在UML中没有标准表示,但偶然用带有“友元”标签的虚线表示。
友元(Friend)关系是一种特殊的类间关系,它允许一个类访问另一个类的私有(private)和保护(protected)成员。
其次我想分析的是,UML图一样平常注意的是系统团体的规划,不是详细的实现。
8.包罗关系(Include)
举例:
保存文档和备份文档:当用户实行保存操作时,除了将文档保存到指定位置外,系统还会主动进行备份。
取款和检查余额: 在银行账户管理系统中,用户进行取款操作时,系统首先需要检查账户余额是否充足,再根据用户需求取钱。
图形:一条带有“<<include>>”标签的虚线
一个用例的实行必然涉及到另一个用例的实行。
9.扩展关系(Extend)
举例:
检察商品和添加商品到购物车:不是每次检察都会添加
取款和打印取款凭证:不是每一次都会打印
提交试卷和评分:不是每次都评分,看老师,也看老师心情
图形:一条带有“<<extend>>”标签的虚线
扩展用例是基础用例的可选扩展,它为基本用例添加了新的举动,但不是基础用例实行的必要部分。不是每次都需要实行。
增补:
降低因为依赖关系导致的耦合度:接口分离原则
接口和接口之间的关系:泛化关系
类和接口之间的关系:实现关系
四、考试秘籍
“三长一短选最短,三短一长选最长,是非不一就选C,参差不齐就选B,如果一样就选D。”
知道吗?朋侪。我只能帮你到这里了。再见。
祝你考试顺利,考的全会,蒙的全对!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |