一、考试题型
简答题 6个共30
活动图绘制 10
绘制用例图 20 给定一个涉众概要,绘制用例图。
用例描述题 10 根据上面画出的用例图,任选一用例,写出其用例描述。用例描述格式给定
序列图绘制题 10 根据上面的用例描述,绘制出相应的序列图。建议按照边界类、控制类以及实体类的思想来进行绘制。
类图绘制题 10 根据上面的用例描述,绘制出相应的类图。建议按照边界类、控制类以及实体类的思想来进行绘制。
论述题 10分 如何使用本课程学到的UML知识分析一个项目
二、考点
Ⅰ、简答题
1、简单论述开闭原则并举例(必考5分)
软件实体(模块、类、方法等)应该“对拓展开放,对修改关闭”。即添加一个新的功能,应该是在已有代码的基础上拓展代码(新增模块、类、方法、属性等),而非修改已有代码(新增模块、类、方法、属性等)的方式来完成。
举例:在原有“支付”的接口新增一个实现类为“微信支付”。大部分的设计模式如装饰、策略、模板、状态。
2、类图是什么,如何得到类图?从名词动词分析法的角度和边界类 实体类 控制类的角度来阐述。https://www.zhangshilong.cn/work/191008.html
边界类用于描述外部参与者与系统之间的交互。
边界类是用于建模系统外部环境与其内部行为之间的交互的类。 这些交互包括转换事件,用于记录系统表示的更改,如接口。
实体类是主要存在于数据管理和业务逻辑处理层面的类别
实体类的主要作用是存储和管理系统内部的信息。 此外,虽然行为和行为可能很复杂,但这些行为必须与其所表示的物理对象密切相关。实体类保存要存储在永久存储中的信息。 永久存储是指可以永久存储数据的介质,如数据库或文件。可以在事件流和交互图中检测实体类。 通常,每个实体类都有一个对应于数据库的表,而实体类的属性对应于数据库表中的字段。实体类是用于对需要存储的信息和相关行为建模的类。 用于存储和更新有关某些现象的信息,如实体对象(实体类的实例)、事件、人或现实对象。
控件类描述用例的事件流控制行为,并控制用例中事件的顺序
控件类是控制其他类行为的类。 每个用例通常都有一个控制类,用于控制用例中事件的顺序。 控制类也可以在多个用例之间共享。 其他类不向控制类发送很多消息,而控制类发送很多消息。
3、依赖关系和关联关系的区别。(必考)(https://www.cnblogs.com/itplay/p/10671715.html)
依赖(dependency)关系也是表示类与类之间的连接,表示一个类依赖于另外一个类的定义,依赖关系时是单向的。简单理解就是类A使用到了类B,这种依赖具有偶然性、临时性,是非常弱的关系。但是类B的变化会影响到类A。举个例子,如某人要过河,则人与船的关系就是依赖,人过河之后,与船的关系就解除了,因此是一种弱的连接。在代码层面,为类B作为参数被类A在某个方法中使用。在java中,依赖表现为:局部变量,方法中的参数和对静态方法的调用。
关联(association)关系表示类与类之间的连接,它使得一个类知道另外一个类的属性和方法。关联可以使用单箭头表示单向关联,使用双箭头或者不适用箭头表示双向关联,不建议使用双向关联,关联有两个端点,每个端点可以有一个基数,表示这个关联的类可以有几个实例。0..1 表示可以有0个或者1个实例
0..* 表示对实例的数目没有限制; 1 表示只能有一个实例; 1..* 表示至少有一个实例。
关联关系体现的是两个类,或者类与接口之间的强依赖关系,这种关系很强烈,比依赖更强,不是偶然性的,也不是临时性的,而是一种长期性,相对平等的关系,表现在代码层面,为被关联的类B以类属性的形式出现在类A中,也可能是关联类A引用了被关联类B的全局变量。在Java中,关联关系是使用实例变量来实现的。
4、聚合关系和组合关系的区别,根据要求画出聚合关系、组合关系图。(必考)
聚合(aggregation)是关联关系的特例,是强的关联关系,聚合是整个与个体的关系,即has-a关系,此时整体和部分是可以分离的,他们具有各自的生命周期,部分可以属于多个对象,也可以被多个对象共享;比如计算机和CPU,公司与员工的关系;在代码层面聚合与关联是一致的,只能从语义上来区分。
组合(compostion)也是关联关系的一种特例,体现的是一种contain-a关系,比聚合更强,是一种强聚合关系。它同样体现整体与部分的关系,但此时整体与部分是不可分的,整体生命周期的结束也意味着部分生命周期的结束,反之亦然。如大脑和人类。体现在代码层面与关联时一致的,只能从语义来区分。
5、会根据要求画出泛化关系图,汽车与交通工具、货车与运输工具。(必考)
包含和泛化区分:A包含B——A当中包括B,但是B单体并不是合法的A。B并不是A的子集,而是A的组成部分。(也就是B是A当中元素的局部,是元素的组成部分);A是B的泛化——所有的B都是合法的A,但是有部分A并不是B
泛化(generalization)关系时指一个类(子类、子接口)继承另外一个类(称为父类、父接口)的功能,并可以增加它自己新功能的能力,继承是类与类或者接口与接口最常见的关系,在Java中通过关键字extends来表示。
6、用例图之间的关系有哪些?(必考)
泛化、实现、依赖、关联、聚合、组合
7、包含关系和拓展关系的区别。(必考)(https://blog.csdn.net/wzygis/article/details/114994395)
包含的例子:教师录入成绩和修改成绩时,都需要保存成绩。
拓展的例子:借阅者还书的时候如果违约需要缴纳罚款。
扩展关系(Extend):当某个新用例在原来的用例基础上增加了新的步骤序列,则原来用例被称为基用例,这种关系称为扩展关系,可以这样理解这里的基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能,只有当扩展点被激活时,子用例才会被执行。由子用例指向基用例,比如说充值金额查询用例中有导出Excel子用例,离开子用例不影响充值金额查询的功能,这就是扩展关系。
包含关系(include):几个用例可以提取他们共用的用例作为子用例,使其成为自己行为的一部分,因为子用例被提出,基用例并非一个完整的用例,所以include关系中的基用例必须和子用例一起使用才够完整,子用例也必然被执行。由基用例指向子用例,比如几个用例都要用到登录子用例,登录作为子用例没有它的参与,其他用例也无法执行,这就是包含关系。
比较:容易混淆的原因在于不理解扩展和包含的含义,所谓扩展是从基用例的基础上扩展出新的功能(子用例),子用例不影响基用例,基用例本身是完整的,没有子用例的参与也可以完成自己的功能,而包含关系是提取出来的用例是基用例的一部分基用例和子用例必须一起使用才完整。二者的关键在于离开子用例,基用例是否可以完成一个完整的功能。
深入理解:https://www.jianshu.com/p/8833815067eb/
8、在 UML 中包含哪些视图?这些视图都对应哪些图?
在 UML 中主要包括的视图为静态视图、用例视图、交互视图、状态机视图、 活动视图、部署视图和模型管理视图。静态视图包括类图;用例视图包括用例图; 实现视图包括构件图;部署视图包括部署图;状态机视图包括状态机图;活动视 图包括活地图;交互视图包括顺序图和协作图;模型管理视图包括类图。
9、UML 中都包含哪些图?简述这些图的作用。
最常用的 UML 图包括:用例图、类图、序列图、状态图、活动图、构件图和部署图。
用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的功 能需求,包括基于基本流程的“角色”关系,以及系统内用例之间的关系;
类图显示了系统的静态结构,表示不同的实体(人、事物和数据)是如何彼此相关联的;
序列图显示了一个具体用例或者用例的一部分的一个详细流程;
状态图表示某个类所处的不同状态以及该类在这些状态中的转换过程;
活动图是用来表示两个或者更多的对象之间在处理某个活动时的过程控制流程;
构件图提供系统的物理视图,它是根据系统的代码构件显示系统代码的整个物理结构;
部署图用于表 示该软件系统如何部署到硬件环境中,它用于显示在系统中的不同构件在何处物理的运行,以及如何进行彼此的通信。
10、UML 中的模型元素的关系主要有哪些?
UML 中主要包含 4 种关系,分别是依赖、关联、泛化和实现;
依赖关系指的是两个事物之间的一种语义关系,当其中一个事物(独立事物)发生变化就会影响另外一个事物(依赖事物)的语义;
关联关系是一种事物之间的结构关系, 用它来描述一组链,链是对象之间的连接;
泛化关系是事物之间的一种特殊/一 般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象,即在面向对象学中常常提起的继承;
实现关系也是 UML 元素之间的一种语义关系,它 描述了一组操作的规约和一组对操作的具体实现之间的语义关系。
11、在 Rational Rose 中可以建立哪几种视图?这些视图都有哪些作用?
使用 Rational Rose 建立的 Rose 模型中分别包括 4 种视图,分别是用例视图 (Use Case View)、逻辑视图(Logical View)、构件视图(Component View)和部署视图(Deployment View);
用例视图关注的是系统功能的高层抽象,适合于对系统进行分析和获取需求,而不关注于系统的具体实现方法;
逻辑视图关注系统如何实现用例中所描述的功能,主要是对系统功能性需求提供支持,即在为用户提供服务方面系统所应该提供的功能;
构件视图用来描述系统中的各个实现模块以及它们之间的依赖关系;
部署视图显示的是系统的实际部署情况,它是为了便于理解系统如何在一组处理节点上的物理分布,而在分析和设计中使用构架视图。在系统中只包含有一个部署视图。
12、什么是用例图?用例图有什么作用?
由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。用例图是从软件需求分析到最终实现的第一 步,它显示了系统的用户和用户希望提供的功能,有利于用户和软件开发人员之间的沟通。用例图可视化地表达了系统的需求,具有直观、规范等优点,克服了纯文字性说明的不足。用例方法是完全从外部来定义系统功能的,它把需求和设计完全的分离开来,使用户不用关心系统内部是如何完成各种功能的。
13、概述用例之间的关系。
用例之间的关系有包含、扩展和泛化等 3 种。包含关系是指用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为做为自身行为的一部分;在一定条件下,把新的行为加入到己有的用例中,获得的新用例叫做扩展用例,原有的用例叫做基础用例,从扩展用例到基础用例的关系就是扩展关系;用例的泛化指的是一个父用例可以被特化形成多个子用例,而父用例和子用例之间的关系就是泛化关系。
14、什么是类图?什么是对象图?说明两种图的作用。
类图是用于对系统中的各种概念进行建模,并描绘出它们之间关系的图。对象图描述系统在某一个特定时间点上的静态结构,是类图的实例和快照,即类图中的各个类在某一个时间点上的实例及其关系的静态写照。类图的作用为:为系统的词汇建模、模型化简单的协作、模型化逻辑数据库模式。对象图的作用为: 说明复杂的数据结构、表示快照中的行为。
15、类之间的关系有哪些?试着描述这些关系。https://www.cnblogs.com/puwei222/archive/2012/12/09/2810408.html
通常认为类与类之间有 4 种关系,分别是依赖关系、泛化关系、关联关系和实现关系。
泛化(Generalization)
A、 是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为,描述了一种“is a kind of” 的关系。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
B、 用带空心箭头的实线表示,箭头指向父类,如下图:
实现(Realization)
A、 是一种类与接口的关系,表示类是接口所有特征和行为的实现。
B、 用带空心箭头的虚线表示,箭头指向接口,如下图:
关联(Association)
A、 一般关联
a、 关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法,指明了事物的对象之间的联系,如:老师与学生、丈夫与妻子。关联可以是双向的,也可以是单向的,还有自身关联。
b、 用带普通箭头的实心线表示。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头,如下图:
B、 聚合(Aggregation)
a、 它是整体与部分(整体 has a 部分)的关系,且部分可以离开整体而单独存在,如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
b、 用带空心菱形的实线表示,菱形指向整体,如下图:
C、 组合(Composition)
a、 它是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
b、 用带实心菱形的实线表示,菱形指向整体,如下图:
依赖(Dependency)
A、 元素A的变化会影响元素B,那么B和A的关系是依赖关系,B依赖A。要避免双向依赖,一般来说,不应该存在双向依赖。关联、实现、泛化都是依赖关系。
B、 用带箭头的虚线表示,箭头指向被依赖元素。
16、什么是序列图?说明该图的作用。
序列图是对对象之间传递消息的时间顺序的可视化表示。序列图从一定程度上更加详细地描述了用例表达的需求,将其转化为进一步、更加正式层次的精细表达,这也是序列图的主要用途之一。序列图的目的在于描述系统中各个对象按照时间顺序的交互过程。
17、序列图有哪些组成部分?
序列图是由对象、生命线、激活和消息等构成的。
18、在序列图中如何创建和销毁对象?
在序列图中,创建对象操作使用带箭头的消息表示,箭头指向被创建对象的框。对象创建之后就会具有生命线,就像序列图中的任何其他对象一样。对象符号下方是对象的生命线,它持续到对象被销毁或者图结束。在序列图中,对象被销毁是使用在对象的生命线上画X表示,在销毁新创建的对象或者序列图中是任何其他对象时,都可以使用,“X”的位置是在导致对象被销毁的信息上 或者在对象自我终结的地方。
19、什么是状态机?什么是状态图?
从广义上讲,状态机是一种记录下给定时刻状态的设备,它可以根据各种不同的输入对每个给定的变化而改变其状态或引发一个动作。在 UML 中,状态机由对象的各个状态和链接这些状态的转换组成,是展示状态与状态转换的图。一 个状态图本质上就是一个状态机,或者是状态机的特殊情况,它基本上是一个状态机中的元素的一个投影,这也就意味着状态图包括状态机的所有特征。状态图描述了一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。
20、状态图的组成要素有哪些?
状态图的组成要素包括:状态、转换、事件、判断、同步、动作、条件等。
21、简述简单状态和组成状态的区别。
状态可以分为简单状态和组成状态。简单状态指的是不包含其他状态的状态,简单状态没有子结构,但是它可以具有内部转换、进入动作、退出动作等。 组成状态是内部嵌套有子状态的状态。一个组成状态包括一系列子状态。组成状态可以使用“与”关系分解为并行子状态,或者通过“或”关系分解为互相排斥的互斥子状态。因此,组成状态可以是并发或者顺序的。
22、什么是活动图?活动图有什么作用?
活动图是一种用于描述系统行为的模型视图,它可用来描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件。活动图可以描述一个操作执行过程中所完成的工作,说明角色、工作流、组织和对象是如何工作的。活动图对用例描述尤其有用,它可建模用例的工作流,显示用例内部和用例之间的路径。活动图显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。活动图对理解业务处理过程十分有用,活动图可以描述复杂过程的算法, 在这种情况下使用的活动图和传统的程序流程图的功能是差不多的。
23、请描述合并和结合的区别。
合并汇合了两个以上的控制路径,在任何执行中每次只走一条,不同路径之间是互斥的关系。而结合则汇合了两条或两条以上的并行控制路径。在执行过程中,所有路径都要走过,先到的控制流要等待其他路径的控制流都到达后才能继续运行。
24、活动图的组成要素有哪些?
活地图中包含的图形元素有:动作状态、活动状态、组合状态、分叉与结合、 泳道、对象流。
Ⅱ、对于指定的用例,会按照边界类、控制类、和实体类的思想来发现类。(画图题)
1、根据用例描述绘制序列图的时候区分边界类、控制类和实体类,类似MVC。
2、根据用例规约画序列图
Ⅳ、论述题:分析一个项目(10分)
分析涉众-->各个参与者以及参与者的责任--->由责任得到用例图--->根据用例图写出各个用例的用例描述--->根据用例描述得到序列图--->根据序列图得到类图(活动图或者某些对象的状态图)。
二三四五六写一遍。