|
. X# ~8 l0 ]7 @《面向对象的程序设计》期末考试A卷1 o7 w* ] W" j& w, h6 C
9 b, g3 F, M& E$ x0 B" w
姓名: ]* B1 u# \! e, I. l4 \9 @
专业:
_4 f+ z: ~- } n/ G: E+ A: M学号:
0 v8 x# C, R o4 D/ }( ]学习中心:: p% f n% V9 D5 @) } U8 I
% |; `2 w, ^: I7 n; p5 ?5 w1 e& k
一、单选题 (请将资料填在下表中,共25题,每题2分,共50分)4 D6 k3 a A/ t' d- P; y* n
1 2 3 4 5 6 7 8 9 10
+ a+ W; g6 N2 a1 N3 j
$ q8 K& W. h$ b11 2 13 14 15 16 17 18 19 20
2 Q% B1 B p7 z' t) V$ [ + z, w7 c% {; y6 c2 l
21 22 23 24 252 E0 [4 k, s! ~" s4 ^8 B
2 H* M2 g; J( N% c1、Observer模式不适用于()。! F0 F& p+ L$ z" t. O# e
A.当一个抽象模型存在两个方面,其中一个方面依赖于另一方面,将这二者封装在独立的对象中以使它们可以各自独立的改变和复用
% t* _& b6 L! P6 m S1 a. Y( O0 ?B.当对一个对象的改变需要同时改变其他对象,而不知道具体有多少个对象有待改变时
# d F h. V+ I1 TC.当一个对象必须通知其它对象,而它又不能假定其它对象是谁,也就是说你不希望这些对象是紧耦合的7 _+ t3 q+ [' E/ e
D.一个对象结构包含很多类对象,它们有不同的接口,而想对这些对象实施一些依赖于其具体类的操作+ y6 n7 ]9 z& w. d8 w$ ~% ^, w) G
4 d9 Z1 i- Y J/ p& D2、顺序图由类角色,生命线,激活期和()组成。3 q4 U! g# V2 k
A.关系
9 [2 x S9 U% g7 W: @8 GB.消息, v' H" I" O% S; K3 @2 Y+ {0 b* O! z
C.用例, F, p& H# J/ D
D.实体: {! }7 R' K4 S* m, L0 K
" _1 J( J. w: I, \# w
3、UML中类的有三种,下面哪个不是其中之一()- r! w5 _1 E. x: N6 Q, X! ^
A.实体类6 H; G4 i# {' f0 I
B.抽象类
7 @1 D8 \0 K! [C.控制类( r. m. w' B' l( Z; B* g; I+ V% q
D.边界类
7 S. h, w6 x- |) P* q2 {9 V+ E9 H
- `: A6 S1 G; }0 l$ x4、如果用例A与用例B相似,但A的功能较B多,A的动作序列是通过在B的动作序列中的某些执行点上插入附加的动作序列而构成的,则称()。
5 X: ~2 a, C- g; Z( B8 |# QA.用例A实现用例B& \" v1 ]9 `" z; }5 D5 d
B.用例A继承用例B/ C5 s, H; [7 Z& w
C.用例A扩展用例B
: e8 h. d, V; U% iD.用例A包括用例B* l, ~: @( J6 B9 ?
) @( t1 P; m! C8 R- h
5、( )技术是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。1 E. v! K, W: U4 ]2 \+ U
A.泳道
4 u# R& [: h' ~/ M2 ?5 f dB.分叉汇合& S0 A8 h# w" k- D( P9 H
C.分支9 W/ J/ }9 e7 L6 W: i
D.转移
8 T5 [. W _7 U* q y2 i7 B
8 [1 l$ g% @/ H9 c6、关于继承表述错误的是:()。) M) ~! z ~4 B0 Q! B* o
A.继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法 a: X7 l6 a/ J
B.泛化类(超类)可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加属性和方法来进行实现的扩展2 k# X' a9 i6 y4 X$ \/ Z1 k$ ]
C.在一定意义上说破坏了封装性,因为这会将父类的实现细节暴露给子类, i9 `- g! s4 F* k( I
D.继承本质上是“白盒复用”,对父类的修改,不会影响到子类/ ?$ b2 Z$ j& [* A* v
/ |8 L+ p# @, X7、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。
/ f& y l( V5 G( d, O* bA.创建型
$ ~8 U& N# ~7 h& JB.结构型
* \9 ]. o& |* ]5 }0 [/ mC.行为型
b, ]: A! m" g4 j/ h' b# m- VD.以上都可以9 h" v5 @# I! V4 W) L6 Q
# K! [; }& }. E: n
8、类和接口的关系类似于下面哪种类型的关系()。
1 {, s, c, g! l, UA.关联(association)和聚集(aggregation)
9 v+ M- _5 {" t( f1 ^; F) ]B.关联(association)和组合(composition)
6 a" w$ x4 a8 S! y3 d4 wC.脚本(scenario)和用例(use case)
" X) Y, t. x3 @5 t5 z& gD.包(Package)和子系统(subsystem)
/ w! C& B, h0 z% z$ a s
! R7 z: ?* f3 c7 U" F7 P( s9、如果用例B是用例A的某项子功能,并且建模者确切地知道在A所对应的动作序列中何时将调用B,则称()。
8 I1 U* J4 f! n: g$ ~6 O: \+ `A.用例A扩展用例B' x" k8 u% M: `, v! m- A
B.用例A继承用例B7 g0 b1 F0 ~1 q" r1 w2 ]+ ^9 q9 z+ O
C.用例A包括用例B' |( | c# h8 ?' W5 ~+ u4 ]8 p
D.用例A实现用例B- @ m9 Y6 u2 [6 n4 J
# k# ~" l4 @( e2 F! P10、组成UML有三种基本的建筑块是:( ),事物和图。3 ~0 C1 M) O7 S, E+ s; x: E/ g
A.关系
4 K9 E1 x4 x, ~. j' I- PB.类
8 p2 K. v+ {! \0 cC.用例; ^3 f. q9 @* M$ j% c1 n( t
D.实体
5 w1 k2 [( I- u: l! ?6 R! q; O6 k; @) K" ~5 B6 U
11、设计模式一般用来解决什么样的问题()。( Z p" X: ]9 V3 O- c
A.同一问题的不同表相+ W9 h/ T4 y1 C7 J( c+ _; I/ h' ?
B.不同问题的同一表相
" k) D q( g; j: Z0 t6 G( a+ M) W; tC.不同问题的不同表相7 y+ ~- K' @! ~2 m' y3 F. w
D.以上都不是" e* T4 m, ^& W
) ~; e0 H. O& V/ K7 r$ w3 g12、若将活动状态比作方法,那么动作状态即()。
+ N5 P4 s3 I) e4 \: GA.方法名) z7 m- J7 S! L4 }7 g
B.方法返回值
) T6 {9 w* r7 d8 ` tC.方法体中的每一条语句
( O( {5 ?4 ?3 T' ^. k; d! zD.方法的可见性
! S: t) g4 W1 W4 ]
9 h2 ` }8 Q4 i7 V4 V13、()是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。; b. J/ Z; @6 F2 [4 O2 V6 w
A.对象图
$ z+ ^" P6 }% kB.组件图6 t9 A4 o& z% L2 p' h) P
C.类图
) a9 d( W k" E9 ID.状态图
5 b2 M. J" L9 S! y) K/ a/ Q
3 A; ~- k/ W8 O7 a14、()使用类图的一个子集,用于强化某个时间点类实例之间的关系。& {5 m9 L5 @- { _) m( Z
A.交互图
5 M5 j/ {! O; s9 r2 T& c3 m$ HB.协作图+ H2 k% a* E8 c5 o; G/ J2 Y
C.对象图
& k. A& q' S) n3 \! _+ ED.状态图, e* S( u2 J7 r$ Z" F9 w6 v: F
9 i2 s$ v3 ], S7 O
15、40、在UML中()表示参与者为达成一项相对独立、完整的业务目标而要求软件系统完成的功能。5 _2 V8 R3 e. E6 N8 i/ S
A.用例图5 [7 U9 h* K- |. \/ r
B.边3 `, Z- n; l! P3 h) R4 l
C.执行者 i* y. @6 ?% u) Y/ Z
D.用例
3 x/ M3 G7 w4 {
8 x2 c" }0 P% V9 p16、通常对象有很多属性,下面仅能在对象内部访问的属性可见性限制是()。9 {: }4 H& _' m. P7 L
A.公有的(public)
+ I. P A5 v* N ~" AB.受保护的(protected)
' [& J8 i5 Y, L8 u" I" ^ `. iC.友员(friendly)
: W6 H8 D/ y6 y. x6 k# C1 b2 RD.私有的(private)
; s) j) T; a5 i r2 g" H( `
5 ?- i, D3 J: J, Z# M: }17、生命线是UML视图中哪个图形的组成部分()。
1 a2 F# u0 {1 \1 eA.类图' Z& |. o% L+ V5 ^7 m' j$ D
B.状态图, }4 ]+ g" t( H) t* s$ d$ X
C.活动图; {0 M) ~ S. ?/ ]4 g- i3 d) \, O
D.顺序图 H# X! X, \2 `3 F* H9 z
, c- s" R8 r3 T1 b18、下面()不是UML的基本构成元素。()
G8 t! f* {6 Y% V% i% G# {A.控制语言
) l" D* q6 O$ f: T0 \, MB.基本构造块
! j1 m1 T$ p- W2 b0 ]C.规则
1 e0 o. J8 r6 X5 \3 mD.公共机制
* b; T% _) D6 [; }9 a z* Y2 s5 j- k- t4 u. C
19、在用例之间,会有三种不同的关系,下列哪个不是它们之间可能的关系( )
5 H }! L( W0 f! m8 U$ [A.包含(include)8 ?: Y# [8 y6 Q% I
B.扩展(extend): I, S" d7 g7 _) }) p# C5 P% b
C.泛化(generalization)6 |7 P$ y4 I6 ~) N8 l! p$ K) j
D.关联(connect)( p+ O. s6 a' O# A! Y
/ c- e" ?3 O6 K! x$ G9 E
20、面向对象程序设计将描述事物的数据与 () 封装在一起,作为一个相互依存、不可分割的整体来处理。6 K' J% E$ R& i4 T! c
A.信息! @- Z* F5 p) O5 ?; Y7 l
B.数据隐藏8 [$ ~/ y5 s7 b' |9 p4 o2 w% U9 {
C.对数据的操, K( t4 W/ r D* K
D.数据抽象
$ E5 u8 ^2 Q* y8 Y. ?% c( `+ G+ r6 w' B" I$ N- G( J8 x$ v
21、下面哪个视图属于UML语言的交互图()。
1 Q$ _* o/ }# _: a v: _A.行为图
7 |; v0 m& B+ |% gB.状态图
/ A( Y) i7 G2 s/ W; Y! b& nC.实现图5 B9 m5 o& W, F3 c3 N* q/ U
D.顺序图
/ [( Y1 Q4 A/ M
' d; _/ f9 v3 q$ m22、()模型的缺点是缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
+ A. x1 z" Q" H: S4 g* MA.瀑布模型
1 c d9 o7 E3 t0 Q2 hB.原型模型
" ~- p: [9 J! ^7 Y' gC.增量模型
0 @; Z5 M* ~4 t! d( x9 wD.螺旋模型& N, o. C5 K2 M
. k: N& M4 B3 j" z3 N1 y8 H+ L23、在UML中,有3种基本构造块,分别是(): x; a2 v, ~6 ]% b+ V3 N
A.事物、关系和图
7 h0 t) b8 ?& z+ `) [' b' nB.注释、关系和图
, A' L9 H# ]0 {) DC.事物、关系和结构& i% h' X8 l5 S( D( n- f
D.注释、关系和结构4 ]- X/ g) b4 o1 m; A+ l
% W2 W+ v/ ^' r
24、以下属于创建型模式的是()。# _- I# ]" `1 `7 `, i: t6 w
A.抽象工厂模式(Abstract Factory)
) }( j: _3 ~- Z. r( WB.装饰模式(Decorator)) A1 u$ b7 {6 l7 ]3 v6 I
C.外观模式(Facade)
9 X( |) ~$ B) s* P2 W2 U& ID.桥接模式(Bridge). |& h a9 l4 G: a6 s8 o" ^
, N5 t& w- s; ~2 @/ M
25、Façade(外观)模式的意图是()。
, O7 n+ L: l: O3 SA.希望简化现有系统的使用方法。你需要定义自己的借口- z' V. g1 {: [* h' b. L
B.将一个无法控制的现有对象与一个特定借口相匹配6 t' {" H0 ~7 j. P2 J% d7 e& [
C.将一组实现部分从另一组使用它们的对象中分离出来
6 v; ?: V* a$ f' _D.你需要为特定的客户(或情况)提供特定系列的对象
" W& ?6 X4 C% d5 }* f0 q
, N! {; R. h6 O, w" H
) E$ F) ^7 c5 P7 ~0 O q* r! P& \& b二、资料来源:谋学网(www.mouxue.com) (请将资料填在下表中,共10题,每题2分,共20分)
: U) l8 ?7 \- Q26 27 28 29 30 31 32 33 34 353 A1 W+ R) Q5 r" J& q5 I) Q S. P. v
8 D- S+ t1 u! @26、抽象工厂模式提供了一系列相关或相互依赖对象的接口且必须指定他们具体的类。 ( )) z: Q i4 e' D* t
27、Decorator(装饰)模式适用性是表示对象的部分-整体层次结构。 ( )
; H6 B; j' w/ `28、一个状态图最多只能由一个初态和一个终态。 ( )
3 J+ _* K4 a, R( g9 [29、类A和类B之间的关系如图1所示,则称类B中的getName()方法是对类A中的getName()方法的重载(overload)。
& C" H1 o1 q& F9 U: H1 \& l6 U ; B9 R9 }+ U" x8 [1 m6 P% Y
图 getName()方法之间的关系 ( ), E' l! O9 W0 X( r- T: \
30、Adapter模式不是必须针对某个接口进行设计。 ( ) z$ {3 `; [+ t+ P' u+ t4 P+ P
31、对象适配器模式是合成聚合复用原则的典型应用。 ( )
! E* b7 ?1 G/ i9 V' T& u' L32、Decorator(装饰)模式的意图是为一个对象连接附加的职责。 ( )
0 t/ a _/ @; N, d7 c6 Z8 w33、在设计模式中,“效果”只是指“原因和结果”。 ( )7 x2 D+ @/ V; Z$ _: f" i
34、Façade外观模式只能为方法调用创建更简单的接口,不能减少客户必须处理的对象数量。 ( )* T& C( U- [3 |5 s! e. d
35、UML由用例视图、物理视图、组件视图、进度视图和配置视图组成。 ( )2 D! [$ S. M6 h- D9 C
& M. P" h' b4 i- ~# O/ y# G- c三、更多资料下载:谋学网(www.mouxue.com) (共4题,每题5分,共20分): A& y% b8 c [5 v
36、信用卡可能处于“开放”和“关闭”状态,其中“开放”状态可以直接进入“关闭”状态,而从“关闭”状态必须提供密码验证才能进入“开放”状态。“开放”状态又包括“透支”和“正常”状态之间的变化,当剩余金额少于零、或者使用额度大于剩余金额、或者结算余额小于零时进入透支状态,反之则为正常状态。画出信用卡的状态图。$ M, f5 Y: F# n, c: O
/ C% n* @2 z& d# D+ S9 e# U* o$ B' h0 o' c+ p. a8 W9 n/ h/ _
37、UML2.0前有几种常用图(diagram)?哪些属于静态图,哪些属于动态图?
7 K. u V: W1 y; j" K n" H& D: w6 y
- G6 ` h1 @7 ~4 c. N7 Z
5 p% }6 D G1 {- }38、UML中的交互图有两种,分别是顺序图和协作图,请分析一下两者之间的主要差别和各自的优缺点。掌握利用两种图进行的设计的方法。* Z& Y2 G* Q( S! J5 F% b
v b0 R7 Y t$ o! a+ ^1 z
* z; G4 Z# z6 {% m# q39、说明Observer模式的基本实现方式。如果不用该模式,要达到同样的效果,你会如何做?, C" u/ K$ }0 l5 P u& b- D
/ q) N. o/ N A& P" t2 F4 b3 \) i- W2 S6 T" p, l4 U) t+ ~* ?
7 P% v/ U4 S6 z
四、设计题 (共1题,每题10分,共10分)
% G2 G: @1 D; }3 C40、根据下面的叙述,绘制一幅关于顾客从自动售货机中购买物品的顺序图。" c$ R2 q# J7 ?1 f
顾客(User)先向自动售货机的前端(Front)投币;
8 {9 w& l3 Q2 f5 ?售货机的识别器(Register)识别钱币;
* A0 d# f1 c6 S( A; P售货机前端(Front)根据Register的识别结果产生商品列表;
1 }6 b7 g, c* _9 X+ e顾客选择商品;
1 a) b" s3 V5 Z% w识别器控制的出货器(Dispenser)将所选商品送至前端(Front)。3 i5 Y5 H; b+ x- V
. D6 F" g0 ]# x; q- o( h4 A4 V, M% p4 |6 B4 F) m
" |9 i+ P# U( j4 r$ X# y
|
|