08学年第2学期面向对象分析与设计试卷(B)_答案
- 格式:pdf
- 大小:450.51 KB
- 文档页数:8
面向对象程序设计课后答案(完整版)第二章2-4#includeusing namespace std;Add(int a,int b);int main(){int x,y,sum;cout>x>>y;sum = add(x,y);cout >*p;p++;}p = p-20;for( i=0;i0) countp++;if(*p>age ;try{checkagescore(name,age);}catch( string){cout<<"exception :name is exit"<<endl;continue;}catch(int){cout<<"exception :age is not proper"<<endl;continue;}cout<<"name:"<<name<<" age :"< }return 0;}第三章3-1(1)A (2)C (3)B (4)C (5)C(6)B (7)B (8)C (9)C3-7(1)main()函数中p1.age = 30;语句是错误的。
age 是类的私有成员(2)构造函数应当给常数据成员和引用成员初始化,将构造函数改为:A(int a1,int b1):a(a1),b(b1){}或A(int a1 ):a(a1),b(a){}再将main中的A a(1,2); 改为A a(1);(3)(1)在Test 类中添加语句:void print();void Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}改为void Test::Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}main函数中Init(38,15);改为:A.Init(38,15);Print();改为:A.Print();3-8(1)Constructing AConstructing BDestructing BDestructing A(2)double a,double bpoint & pp.x3-9class box{int len1,len2,len3;public:box(int l1,int l2,int l3){len1 = l1;len2 = l2; len3 = l3;} long volumn(){return len1*len2*len3;}};3-10class Test{int m1,m2;public:void Init(int a,int b){m1 = a;m2 = b;}void Pring(){cout<<m1<<" "<<m2<<endl;}};3-11略3-12}第四章4-6(1)D (2)D (3)D (4)D (5)B(6)D4-7(1)static int count = 0;这样初始化静态成员值是不对的将其改为static int count;在类外,main函数前加int Sample::count = 0;(2)#include//#includeusing namespace std;class Ctest{private:int x; const int y1;public:const int y2;Ctest(int i1,int i2):y1(i1),y2(i2) {y1 =10;//y1 为常量不能赋值x = y1;}int readme() const;};int Ctest::readme ()const{int i;i = x;x++; //常函数内不能改变成员值return x;}int main(){Ctest c(2,8);int i = c.y2;c.y2 = i;//y2为常量,不能改值i = c.y1;//y1私有,类外不能访问return 0;}将出错语句全部注释4-8(1)题中印刷错误,将class C构造函数改为: C(){cout<<"constructor C:";}运行结果为:constructor Aconstructor Bconstructor C(2)40(3)3434-9#include#includeclass Date{int year;int month;int day;public:Date(int y,int m,int d){year=y;month=m;day=d;}void disp(){cout<<year<<" "<<month<<" "<<day<<endl;}friend int count_day(Date &d,int k);friend int l(int year);friend int h(Date &d1,Date &d2);};int count_day(Date &d,int k){static int day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,3 1},{31,29,31,30,31,30,31,31,30,31,30,31}};// 使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年int j,i,s;if(l(d.year))j=1;//闰年,取1else j=0;//非闰年,取0if(k)//K非0时{s=d.day;for(i=1;i<d.month;i++)//d.month为输入的月份s+=day_tab[j][i-1];}else//K为0时{s=day_tab[j][d.month]-d.day;for(i=d.month+1; i<=12; i++)s+=day_tab[j][i-1];}return s;//S为相差的天数}int l(int year){if(year%4==0&&year%100!=0||year%400==0) // 是闰年return 1;else // 不是闰年return 0;}int h(Date &d1,Date &d2){int days,day1,day2,y;if(d1.year<d2.year)//第一个日期年份小于第二个日期年份{days=count_day(d1,0);for(y=d1.year+1;y<d2.year;y++)if(l(y))//闰年。
一、单项选择题1、组成UML有三种基本的建筑块是:(),事物和图A、关系B、类C、用例D、实体2、UML体系包括三个部分:UML基本构造块,()和UML公共机制A、UML规则B、UML命名C、UML模型D、UML约束3、UML中的事物包括:结构事物,分组事物,注释事物和()A、实体事物B、边界事物C、控制事物D、动作事物4、下面哪个不是UML中的静态视图()A.状态图B.用例图C.对象图D.类图5、()技术是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。
A、泳道B、分叉汇合C、分支D、转移6、下列关于状态图的说法中,正确的是()A.状态图是UML中对系统的静态方面进行建模的五种图之一。
B. 状态图是活动图的一个特例,状态图中的多数状态是活动状态C.活动图和状态图是对一个对象的生命周期进行建模,描述对象随时间变化的行为。
D. 状态图强调对有几个对象参与的活动过程建模,而活动图更强调对单个反应型对象建模7、对反应型对象建模一般使用()图A、状态图B、顺序图C、活动图D、类图8、类通常可以分为实体类,()和边界类A、父类B、子类C、控制类D、祖先类9、顺序图由类角色,生命线,激活期和()组成A、关系B、消息C、用例D、实体10、()是系统中遵从一组接口且提供实现的一个物理部件,通常指开发和运行时类的物理实现A、部署图B、类C、接口D、组件11、关于协作图的描述,下列哪个不正确()A.协作图作为一种交互图,强调的是参加交互的对象的组织;B.协作图是顺序图的一种特例C.协作图中有消息流的顺序号;D.在ROSE工具中,协作图可在顺序图的基础上按“F5”键自动生成;12、一个对象和另一个对象之间,通过消息来进行通信。
消息通信在面向对象的语言中即()A、方法实现B、方法嵌套C、方法调用D、方法定义13、()是可复用的,提供明确接口完成特定功能的程序代码块。
A、模块B、函数C、用例D、软件构件14、若将活动状态比作方法,那么动作状态即()A、方法名B、方法返回值C、方法体中的每一条语句D、方法的可见性15、()是用于把元素组织成组的通用机制A、包B、类C、接口D、组件16、下面说法错误的是()A 泛化表示一般和特殊的关系B 用例之间存在泛化关系C 参与者之间存在泛化关系D参与者和用例之间存在泛化关系17、下面说法错误的是()A 参与者是与所建立系统交互的人或物B 参与者可以是人,也可以是其他系统C 参与者是系统的一部分,是用例图的重要组成部分D 参与者之间存在泛化关系18、下面几个模型图中,(D)能够正确地表示出“一个雇员最多由一个经理管理,经理可以管理多个雇员,也可以不管理一个雇员”这样的意思。
面向对象程序设计试卷及答案.)答案考试试卷A(面向对象程序设计注意事项:请考生按要求在试卷装订线内填写姓名、学号1.和年级专业。
请仔细阅读各种题目的回答要求,在规定的位2.置填写答案。
不要在试卷上乱写乱画,不要在装订线内填写3.无关的内容。
分钟。
100分,考试时间为1204. 满统分得单项选择一.分分,共小题,每小题3(本大题共10 评分) 30分人) B 中每个int类型的变量占用(1. C# 个字节的内存。
)C (( B)4 8 (A)1 )(D 2) A 2. 面向对象的特点是(态装封、继承、多(A)(B)抽象、封装、多态封继承、(C )抽装象、)抽象、多态、重载(D 3. C#控制台程序的主入口点是() C)C Run Page_Load(A)函数(B)函数( Main函数函数)(DForm_Load引用类型存储在()中。
B 4.))(堆内存B 堆栈)(A () C队列D (列表表示一个字符串的变量应使用以下哪在5. C#中,)B 条语句定义(.(A)CString str (B)string str(C)Dim str as string (D)char*str6.在中,用来与数据源建立连接的对象是( A )。
(A)Connection对象(B)Command 对象(C)DataAdapter对象(D)DataSet 对象7. 在类的定义中,类的( B )描述了该类的对象的行为特征。
(A)类名(B)方法(C)所属的名字空间(D)私有域8. 如果未显式赋值,则将整型值( B )赋给枚举中的第一个元素。
(A)1 (B)0 (C)23)(D)类型类型的值可以隐式转换成(9. float C的值而保持值不被改变。
double )C( long )B( char )A(int )D(是IExample而,是一个类Class1假设,中在C#10.A 下面的(,一个接口)类声明是正确的。
class Employee: Class1, IExample )A(.class Employee: IExample, Class1 B)(class Employee- Class1, IExample )(Cclass Employee: Class1/IExample )(D得.判断题二分15共每小题小题,3分,(本大题共5 评)分分中子类可以继承多个基类,也可以1. C人)×继承一个接口。
面向对象程序设计试卷及答案开发环境为,运行结果有截图,若发现错误欢迎指正实验一、程序开发环境及简单程序设计。
题目、简单程序任务:按提示的操作步骤输入下面的代码,编译连接并执行。
源程序代码:""(){ <<"!\";<<"!"<<;<<" "<<;}运行结果:题目、编写程序,从标准输入读入一个数,把它转化为英文单词输出,如输入,这是输出“ ”。
源程序代码:<>J(){;<<"请输入数字用来转化为英文单词:(){ >>('\');(){<<"";;; ;<<"";;<<"";;<<"";<<"";;<<"";;<<"";;<<"";<<"";<<"";;}}}运行结果:题目、循环结构程序设计任务把一张一元纸币换成一分、二分和五分的硬币,假如每一种至少一枚,文友多少种换法,编程将各种换法显小出来。
源程序代码:<>J() {J<<"一角"<<"两角"<<"三角"<<;(<)(<)(<)(**){<<<<" "<<<<" ”<<<<"<<;}<<"换法的总数为:"<<<<;}运行结果:实验二、函数题目、内联函数任务(1)定义内敛函数(),求两个整数中的最大值,然后在()函数中惊醒调用(2)定义内联函数()和一般函数(),使整型参数值加,然后在()函数中惊醒调用;源程序代码: <>J();();();(){<<<<","<<<<"中最大的是:"<<()<<;<<<<"加后为:"<<()<<;<<<<"加后为:"<<()<<;}(){(>);;}(){ ;}(){ ;}运行结果:题目、函数参数的传递机制、重载函数(1)编写重载函数()可分别求个整数、个整数、个双精度和双精度数的最大值。
1.一台自动售货机能提供6种不同的饮料,售货机上有6个不同的按钮,分别对应这6种不同的饮料,顾客通过这些按钮选择不同的饮料。
售货机有一个硬币槽和找零槽,分别用来收钱和找钱。
现在为这个系统设计一个用例图?
2.现有一个产品销售系统,其总体需求如下:
系统允许管理员生成存货清单报告。
管理员可以更新存货清单。
销售员记录正常的销售情况。
交易可以使用信用卡或支标,系统需要对其进行验证。
每次交易后都需要更新存货清单。
分析其总体需求,并绘制出其用例图?
3.绘制用例图,为如下的每个事件显示酒店管理系统中的用例,并描述各用例的基本操作流程。
客人预订房间。
客人登记。
客人的承担服务费用。
生成最终账单
客人结账
客人支付账单。
面向对象分析与设计试题 B 卷一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
每小题 2 分,共20 分)/* 上个世纪80 年代开始至今还盛行的以Smalltalk,C++等为代表的面向对象软件开发方法(00)*/1. 到20 世纪末,面向对象软件工程已经逐渐发展成熟,特别是( D )的形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。
A. Simula67 语言(20 世纪70 年代的Simula-67 是第一个面向对象的语言)B. Smalltalk 语言(80 年代初的Smalltalk 语言)C. Java 语言(对流行的语言进行面向对象的扩充得到的语言或C++)D. 统一建模语言(UML)的标准2. 面向对象的运动产生了多种面向对象的语言, 其中(C )是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。
A. SmalltalkB. EiffelC. C++D. Java3.下列不属于面向对象技术的基本特征的是(B )。
A. 封装性B. 模块性C. 多态性D. 继承性4. 面向对象程序设计将描述事物的数据与( C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。
A. 信息B. 数据隐藏C. 对数据的操作D. 数据抽象5. 关于面向对象方法的优点,下列不正确的叙述是(C )。
A. 与人类习惯的思维方法比较一致B. 可重用性好C. 以数据操作为中心D.可维护性好6.(D )是从用户使用系统的角度描述系统功能的图形表达方法。
A. 类图B. 对象图C. 序列图D. 用例图7. (C ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。
A.对象图 B. 组件图 C. 类图 D. 配置图**8.(D)描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。
考试试卷A(答案)面向对象程序设计注意事项:1、请考生按要求在试卷装订线内填写姓名、学号与年级专业.2、请仔细阅读各种题目得回答要求,在规定得位置填写答案.3、不要在试卷上乱写乱画,不要在装订线内填写无关得内容。
(C)2 (D)12、面向对象得特点就是( A )(A)封装、继承、多态(B)抽象、封装、多态(C)抽象、继承、封装(D)抽象、多态、重载3、C#控制台程序得主入口点就是( C)(A)Page_Load函数(B)Run函数(C)Main函数(D)Form_L oad函数4、引用类型存储在(B )中。
(A)堆栈(B)堆内存(C)队列(D)列表5、在C#中,表示一个字符串得变量应使用以下哪条语句定义(B)(A)CString str (B)string str(C)Dim stras string(D)char *str6、在ADO、NET中,用来与数据源建立连接得对象就是(A )。
(A)Connection对象(B)mand对象(C)DataAdapter对象(D)DataSet对象7、在类得定义中,类得( B )描述了该类得对象得行为特征。
(A)类名(B)方法(C)所属得名字空间(D)私有域8、如果未显式赋值,则将整型值( B )赋给枚举中得第一个元素。
(A)1(B)0 (C)2 (D)39、float类型得值可以隐式转换成( C )类型得值而保持值不被改变.(A)char(B)long(C)double (D)int10、在C#中,假设Class1就是一个类,而IExample就是一个接口,下面得( A)类声明就是正确得。
(A)classEmployee:Class1,IExample(B)classEmployee:IExample,Class1(C)class Employee— Class1, IExample(D)class Employee:Class1/IExample二、判断题(本大题共5小题,每小题3分,共15分)1、C#中子类可以继承多个基类,也可以继承一个接口。
08/09 学年第 1 学期末考试试题答案及评分标准(B卷)UML建模与分析使用班级: 06060541、06060542、06060543一、填空题:(每空2分,共10分)1、用户2、子类3、属性4、多个5、以体系结构为中心二、判断题:(判断对错,并改正。
每小题3分,共15分)1、正确。
(3分)2、正确。
(3分)3、错误。
(1分)是覆盖而不是重载。
(2分)4、错误。
(1分)目前在Rose2003中,还不能通过逆向工程得到顺序图。
(2分)5、错误。
(1分)RUP中有9个核心工作流。
初始阶段、细化阶段、构造阶段和移交阶段是对软件开发周期中每个循环的阶段划分。
(2分)四、简答题. (每小题5分,共25分)1、简述面向对象的四个基本特征?(1)抽象:就是过滤掉对象与当前开发工作无关部分特性,只剩下所需要的属性和操作。
(2分)(2)继承:是指一个对象直接从一个类中得到的属性和方法。
(1分)(3)多态:不同的类有时具有相同名称的操作。
(1分)(4)封装:实质是当一个对象执行自己的操作时,它对外界隐藏了操作的细节。
(1分)2、类图与对象图的区别?(1)类图描述系统中类的静态结构。
类图不但定义了系统中的类,表示了类之间的联系(如关联、依赖、聚合等),还描述了类的内部结构(类的属性和操作)。
(1分)类图描述的是一种静态关系,在系统的整个生命周期都是有效的。
(1分)(3)对象图是类图的实例,使用与类图类似的标识。
(1分)(4)它们的不同点在于对象图显示类的多个对象实例,而不是实际的类。
一个对象图是类图的一个实例。
由于对象存在生命周期,因此对象图只能在系统某一时间段存在。
(2分)3、UML与开发语言的区别?(1)UML是一种可视化建模语言,而不是可视化程序设计语言,它不能代替其他的程序设计语言;(3分)(2)UML只是一种工具和程序设计的基础。
(2分)4、简述泛化关系中的抽象类、叶子类和根类?用于对类的网格结构建模,其中有位于顶层的较为一般的抽象和位于底层的较为特殊的抽象。
《面向对象程序设计》课程试题(B卷)本试卷适用于2016级信息与计算科学专业(时量:120分钟;总分为100分)命题人:戴亚滨注意:1、所有答案和解答均应写在答题纸上,答在试卷上不记分2、答案必须写明题目序号,并按题号顺序答题3、请保持行距,保持卷面整洁一、选择:(每题2分,共20分)1.下列变量名中,()是合法的。
A CHINAB byte-sizeC doubleD A+a2.C++的数组定义可以有多种形式。
下面定义中不正确的是:____A. char ac[4];B. char ac[4] = ['a','d','e'];C. char ac[] = {'a', 'd', 'e'};D. char ac[] = "ade";3.下列()是正确的语句。
A ;B a=17C x+yD cout<<"\n"4.循环while(int i=0) i--;执行次数是()。
A 0B 1C 5D 无限5.设int f(int);和int g(int);是函数f和g的原形,以下将f作为语句调用的是()。
A g(f(3));B f(g(3));C g(f(3)+2);D p= f(g(3)+1);6.设int * p2=&x,* p1=a;p2= *b;则a和b的类型分别是()。
A int * 和intB int * 和int **C int 和int *D int * 和int *7.设int x;,则经过()后,语句*px=0;可将x值置为0。
A int * px;B int const * px=&x;C int * const px=&x;D const int * px=&x;8.设void f1(int * m,long & n);int a;long b;则以下调用合法的是()。
1、下列哪个是Java应用程序主类中正确的main方法(D )。
A、public void main(String args[])B、static void main(String args[])C、public static void main(String args)D、public static void main(String args[])2、下列哪个是JDK提供的编译器(B)。
A、java.exeB、javac.exeC、javap.exeD、javaw.exe3、下列那个可以作为Java标识符(D )。
A、boy-girlB、2int_ longC、byteD、$Boy4、正则表达式([0-9]{3})-([a-z]{3})-([a-z]*?ab) 与下列哪个字符串相匹配(D)。
A、123-abc{3}-cabB、123{3}-abc-cabC、123-abc-cbD、123-abc-ccab5、下列那个类的声明是错误的(A)。
A、final abstract class AB、final class AC、abstract class AD、public class A6、下列叙述那个是正确的(A)。
A、final 类不可以有子类B、abstract类中只可以没有abstract方法C、abstract类中可以有非abstract方法,但该方法不可以用final修饰D、可以同是用final 和abstract修饰一个方法7、下列叙述那个是错误的(C)。
A、String类是final类,不可有子类B、String类在ng包中C、"abc"=="abc"的值是falseD、"abc".equals("abc")的值是ture8、下列叙述那个是正确的(B)。
A、Frame类对象的默认的布局是FlowLayout布局B、Panel类对象的默认的布局是FlowLayout布局C、Button类的直接父类是ContainerD、TextField对象可以触发ItemEvent事件9、假设组建com的宽和高分别为w和h,要讲组件的中心放置在(x,y)坐标点上,请问下列那个是正确的放置方法(A)。