FXTGbackup 01141434 增加了昨天期末考试最后一道题解答Word下载.docx
《FXTGbackup 01141434 增加了昨天期末考试最后一道题解答Word下载.docx》由会员分享,可在线阅读,更多相关《FXTGbackup 01141434 增加了昨天期末考试最后一道题解答Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
(√)
③在面向对象技术系统分析中不使用数据流图。
④一个对象的方法只能改变本对象的属性值。
⑤一个对象内存在另一个对象的关系称为包容关系。
)(原因:
有可能是派生)
⑥含有定性的属性的类就是抽象类。
⑦当使用一个类方法时,消息是传向一个类的。
⑧一个对象所呈现的不同状态称为多态。
⑨静态链接是在面向对象技术语言编译时建立的对象关系。
⑩RUP的开发周期由三个阶段所构成。
)(六个阶段)
⑩+1RUP中的系统行为是对其全部的外来激励进行作用和反作用。
⑩+2RUP中的系统行为可以从对象模型中获得。
⒊单项选择题
1.面向对象技术是(A)。
(A)指导构建软件的系列法则
(B)一种探索可被认同的新理论
(C)由GradyBooch提出的一种动态的新语言
(D)基于抽象与模块化原理的新技术
2.一个模型(C)。
(A)对于十分理解其工作内容的团队成员可以不使用。
(B)必须是有结构的和动作的体系。
(C)是一个实例的简化。
(D)一个建构精确计划的原由。
3.建模的根本目的是(D)。
(A)有助与于一个系统的可视化。
(B)获得一个准备构建系统的模板。
(C)见证设计成果。
(D)上述三条的总合。
4.最好的模型将与(B)联系在一起。
(A)Java-Script代码(B)实体
(C)C++(D)与面向对象开发者联系在一起的命题
5.(B)项目对建模的要求度最小。
(A)立交桥(B)沙发(C)列车(D)光盘
6.以下RUP中的(D)视聚焦在结构问题上。
(A)用例(B)处理(C)实现(D)逻辑
7.使用UML建模时(C)的处理不是其最基本特征。
(A)迭代与增量(B)用例驱动(C)弹性设计(D)以架构为核心
8.一个对象的状态(C)。
(A)是一个被称为“状态”的属性或属性集
(B)始终不发生常规的变化
(C)被描述成对象的属性和关系
(D)仅是一个对象可能存在的条件
⒋分析题
1指出下列对象之间的关系
地球与太阳(关联关系)
家庭影院与音箱(包容关系)
信息与印刷品(继承关系)
钥匙与锁(关联关系)
灯泡与灯丝(包容关系)
计算机与打印机(关联关系)
公司与雇员(包容关系)
建筑体与墙(包容/继承关系)
②试在下图给定的括号内写出已知关联关系的作用名(RoleName):
张三(通知人)(被通知人)李四
人(老板)
(雇员)
③根据给定的C++程序绘制对象模型图
阅读下述C++程序后试在其右侧对应的对象图中填充描述其关系的对象模型符号。
#include<
iostream>
usingnamespacestd;
classA
{
protected:
inti;
public:
A(intx):
i(x){}
intvirtualoperator!
()=0;
};
classB:
publicA
A*p;
B(intx,A*y=NULL):
A(x){p=y;
}
intoperator!
()
{
if(p)return!
*p;
elsereturn1;
}
voidmain()
A*p1=newB
(1);
A*p2=newB(2,(A*)p1);
cout<
<
!
*p2<
endl;
④已知下图所示的某系统中关于A和B的顺序图,图中给出了关于classA的3个不同状态,试绘制与该类对应的状态图,设没有明示的状态迁移视为可通达。
解:
经过对图中已知的消息逻辑,绘制出如下图所示的状态图:
⒌C++语言综合题
①设下述C++程序运行于字长为32位的硬件环境中,请在以下C++程序的右侧写出将该源程序变为类模板的对应程序代码。
intorder;
A(){cout<
"
Thecurrentorderis"
;
cin>
>
order;
order(x){}
(){returnorder;
classB
B(intx){p=newA[x];
intGetOrder(intx){return!
p[x];
~B(){if(p)delete[]p;
Bb
(2);
for(inti=0;
i<
2;
i++){cout<
b.GetOrder(i)<
cin.get();
改写后成为:
template<
classT1>
T1order;
A(){cout<
Thecurrentorder’svalueis"
A(T1x):
T1operator!
classT2,classT3>
classB
T2*p;
B(intx){p=newT2[x];
T3GetOrder(intx){return!
B<
A<
int>
int>
b(3);
for(inti=0;
3;
cin.get();
另一种改法(不保证老师喜欢):
template<
typenameT>
Torder;
A(Tx):
Toperator!
A<
T>
*p;
B(intx){p=newA<
[x];
TGetOrder(intx){return!
b
(2);
②下述C++程序存在若干处错误,以不改变程序结构为前提,请在出错的行首做一标记(如*),并将改动最少的正确语句写在所在行或出错部位的右侧。
例1:
virtualintoperator!
virtualintoperator~()=0;
//补充定义虚基函数,使基类能访问派生类同名成员函数
B(intx,inty):
i(x),A(y){}
(){returni;
intoperator~(){returnA:
:
i;
A*p=newB(2,1);
I="
(*p)<
//Display:
I=1
cout<
~(*p)<
//Display:
//由newB(2,1)知,只有B的基类A中i为1,因此需要调用成员函数operator~()访问基类A中i。
原代码中调用operator!
(),返回值是2,不合要求。
此处~(*p)等价于(*p).operator~()
例2:
virtualintoperator~()=0;
virtualintoperator!
//补充定义虚基函数,使基类能访问派生类同名成员函数
A*p;
i(x),A(y){p=(A*)this;
intoperator~(){returnp->
}//标准规则限制必须用基类强制
intoperator~(){returnA:
}//强制使用基类中i
A*p=newB(1,2);
*p<
1
~*p;
//Displaay:
2
③下述C++程序尚未完成,试根据已知条件补上类A中欠缺的成员函数。
A():
p(NULL){}
i(x){p=newA[x];
A&
operator[](intx){returnp[x];
}//补充定义operator[](int)
voidoperator=(intx){i=x;
}//补充定义operator=(int)
}//补充定义operator!
~A(){if(p)delete[]p;
}//因有动态内存分配,补充定义析构函数,释放内存
Aa(5);
5;
i++)
a[i]=i;
//此处等价于a.operator[](i).operator=(i);
cout<
a[i];
//displayresult:
01234
//此处等价于a.operator[](i).operator!
();
Pleaseinputthevalue:
booloperator==(constA&
rhs)const{returni==rhs.i;
//补充定义相等运算符,比较两个A对象
Aa,b;
if(a==b)cout<
Thecomparedresultistrue."
elsecout<
Thecomparedresultisfalse."
补充:
2011.01.13考试题
下面的程序中有一些错误,请对程序进行修改,使其能最好地完成预期功能。
#include<
A(intx=0):
intget(){returni;
B(intx=1):
A(x){}
voidoperator!
(){cout<
i="
get()<
classC:
publicB
C(intx=2,inty):
B(x),i(y){}
intoperator+=(A&
x){returni+=x.get();
p1=*(A*)newB();
p2=*(A*)newC(10);
!
*p1;
//结果:
i=1
p2{i}="
p2+=p1<
p2{i}=11
p2.get()<
改过之后:
//main.cpp
//intget(){returni;
virtualintget(){returni;
virtualvoidoperator!
virtualintoperator+=(A&
x){return0;
virtual~A(){}
//voidoperator!
A:
//C(intx=2,inty):
C(inty,intx=2):
//intoperator+=(A&
x){returni+=x.A:
get();
//!
p1;
//cout<
(p2+=p1)<
//insert
delete&
p2;
四.考试时间与考场安排
考试时间:
2011年1月13日(星期四)晚18:
00-20:
00
考场学号分配表
考试教室编号
学号范围分布
实际安排人数
3-117/118
2009级学生、105002-105173
92
3-129/130
105174-105334
108
3-131/132
105335-105504
102
3-232/233
105510-105853
106
3-234/235
105885-106309
3-236/237
106312以后全部学号
考试要求:
(要在考前向学生再宣布)
⒈开卷考试,时间为120分钟。
可以查阅书籍、资料,但不能相互传递。
因场地空间限制,请不要带入笔记本电脑等可视化的电子设备;
⒉有问题举手示意,但不得离开座位;
⒊考生在考试期间不得交谈;
⒋带本人学生证件备查;