最新面向对象的分析与设计期末考试试卷(F卷)

合集下载

面向对象程序设计期末复习题及答案

面向对象程序设计期末复习题及答案

C++面向对象程序设计复习试题类型1、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。

15题,每小题2分,共30分) [主要从作业题目中抽出来]2. 填空题。

(10题,每小题3分,共30分)3、阅读程序,写出程序运行结果。

【也称计算题】(3题,每小题5分,共15分)4、程序编制题【也称综合分析题】。

(第1、2题每题8分,第3题9分,共25分) 重点复习内容打*号是重点,打▲号是编程题出题范围* 基本概念,对象,消息,类。

面向对象系统特性,封装性,继承性,多态性。

*▲C++类的构成,类与对象,构造与析构,动态存储,类嵌套。

静态成员,对象数组,友元。

*函数重载。

运算符重载。

*引用定义与引用参数* 基类与派生类的定义。

* 基类及派生类的访问权(含派生类对基类的访问、通过派生类对象对基类的访问)和初始化。

多继承与虚基类。

*多态性与虚函数。

纯虚函数、抽象类。

*▲函数模板。

*▲使用类来定义对象并在程序中的应用题型样题填空题 1. 假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为_________。

答案:102.可以用p.a的形式访问派生类对象P的基类成员a,其中a是_________。

答案:公有继承的公有成员3.能作为重载函数的调用的依据是_________。

答案:参数个数、参数类型4.在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流是否结束状态的操作函数名称是_________答案:eof5.函数重载是指_________。

答案:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同6.在派生类中重新定义虚函数时必须在_________ 方面与基类保持一致。

答案:参数个数阅读程序例题【计算题】1.分析以下程序的执行结果#include<iostream.h>class Sample{int x,y;public:Sample() {x=y=0;}Sample(int a,int b) {x=a;y=b;}~Sample(){if(x==y)cout<<“x=y”<<endl;elsecout<<“x!=y”<<endl;}void disp(){cout<<“x=”<<x<<“,y”=<<y<<endl;}};void main(){Sample s1,s2(2,3);s1.disp();s2.disp();}解:x=0,y=0x=2,y=3x!=yx=y2.分析以下程序的执行结果#include<iostream.h>int add(int x,int y){return x+y;}int add(int x,int y,int z){return x+y+z;}void main(){int a=4,b=6,c=10;cout<<add(a,b)<<,<<add(a,b,c)<<endl; }解:10,20 3.分析以下程序执行结果#include<iostream.h>int add(int x,int y){return x+y;}double add(double x,double y){return x+y;}void main(){int a=4,b=6;double c=2.6,d=7.4;cout<<add(a,b)<<","<<add(c,d)<<endl; }解:10,104.分析以下程序执行的结果#include<iostream.h>class Sample{int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;}void disp(){cout<<"x="<<x<<",y="<<y<<endl;}};void main(){Sample s1,s2(1,2),s3(10,20);Sample *pa[3]={&s1,&s2,&s3};for(int i=0;i<3;i++)pa[i]->disp();}解:x=0,y=0x=1,y=2x=10,y=20 5. 分析以下程序的执行结果:#include<iostream.h>class base{int n;public:base(){};base (int a){cout << "constructing base class" << endl; n=a;cout << "n= "<< n << endl;}~base() { cout << "destructing base class" << endl; }};class subs : public base{int m;public:subs(int a, int b) : base(a){cout << "constructing sub class "<< endl; m=b;cout << "m= "<< m << endl;}~subs() { cout << "destructing sub class "<< endl; }};void main (){subs s(1,2);}解:constructing base classn= 1constructing sub classm= 2destructing sub classdestructing base class6.分析以下程序的执行结果:#include <iostream.h>class Sample{protected:int x;public:Sample() { x=0; }Sample(int val) { x=val; }void operator++() { x++; }};class Derived:public Sample{int y;public:Derived():Sample(){ y=0; }Derived(int val1,int val2):Sample(val1){ y=val2; }void operator--(){ x--;y--;}void disp(){cout<<"x="<< x << ",y=" << y << endl; }};void main (){Derived d(3,5);d.disp();d++;d.disp ();d--;d--;d.disp();}解:x=3,y=5x=4,y=5x=2,y=37 分析以下程序执行结果:#include <iostream.h>class A{public:A(char *s) { cout << s << endl; }~A() {}};class B:public A {public:B(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class C:public A{public:C(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class D:public B,public C{public:D(char *sl,char *s2,char *s3,char *s4) :B(sl,s2),C(sl,s3){cout << s4 << endl;}};void main (){D d("class A","class B","class C","class D");}解:class Aclass Bclass Aclass Cclass D 补充例题1.分析以下程序的执行结果#include<iostream.h>template <class T>T max(T x,T y){ return (x>y?x:y); }void main(){ cout<<max(2,5)<<“,”<<max(3.5,2.8)<<endl; }解答:5,3.5 2.分析以下程序的执行结果#include<iostream.h>void main(){int a[]={10,20,30,40},*pa=a;int *&pb=pa;pb++;cout<<*pa<<endl;}解答:输出为:20 3.分析以下程序的执行结果#include<iostream.h>template <class T>T abs(T x){ return (x>0?x:-x); }void main(){ cout<<abs(-3)<<“,”<<abs(-2.6)<<endl; }解答:输出为:3,2.64.分析以下程序的执行结果#include<iostream.h>class Sample{char c1,c2;public:Sample(char a){c2=(c1=a)-32;}void disp(){ cout<<c1<<“转换为”<<c2<<endl; } };void main(){Sample a('a'),b('b');a.disp();b.disp();}解答:a转换为Ab转换为B 5.分析以下程序的执行结果#include<iostream.h>void main(){int a;int &b=a; // 变量引用b=10;cout<<“a=”<<a<<endl;} 解答:输出为:a=10 6.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x++ +10;}void disp(){cout<<“x=”<<x<<endl; }};void main(){ Sample s1(2),s2(s1);s1.disp();s2.disp();}解答:x=3 // ++运算的结果x=12 // 2+107.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x+1;}void disp(){cout<<“x=”<<x<<endl; } };void main(){ Sample s1(2),s2(s1);s2.disp();}解答:输出为:x=3。

面向对象的分析与设计期末考试试卷F卷

面向对象的分析与设计期末考试试卷F卷

面向对象的分析与设计期末考试试卷F卷面向对象的分析与设计期末考试试卷(F卷)一、选择题(30分)说明:每题2分,只有1个正确答案,请将正确答案填写在下面表格中。

1. 一个设计得好的面向对象系统具有()特征。

A 低内聚、低耦合B 高内聚、低耦合C 高内聚、高耦合D 低内聚、高耦合2.构成对象的两个主要因素是()。

A 属性和服务B 标识和内容C 继承和多态D 消息和封装3. 下面描述中()不是使用软件模型的目的。

A 能够更好地理解问题B 能够更早地发现错误或疏漏的地方C 能够为最后代码的生成提供依据D 在开发过程中使用面向对象方法4. 下列事物中一般不是目标系统的外部参与者的是()。

A 人B 外部设备C 外部系统D 数据存储5. 下面()能够描述一个用例中多个对象之间的相互协作关系以及协作过程的行为次序。

A 交互图B 状态图C 对象图D 用例图6. 统一过程(或称RUP)所提出的迭代开发过程是()。

A 一种结构化开发方法,该方法给出了功能分解有具体步骤B 一种管理软件开发的过程复杂性和对变更进行规划的技术C 一种自顶向下的开发过程,且开发过程没有使用数据流图D 是RUP中最重要的特点7. 下列描述中正确的是()。

A 消息能够由被动对象发送到主动对象B 状态图中,动作能够被中断而活动不能被中断C 构件图中,一个构件和一个接口之间只能存在实现关系D 状态图不适合于描述跨多个用例的单个对象的行为,而适合描述多个对象之间的行为协作8. 根据下面的代码,能够确定类A与类B之间存在()关系。

public class A {private B theB;public void aMethod(){ theB.doSomthing(); }}A 关联B 泛化C 实现D 包含9. 面向对象的特点主要概括为()。

A 可分解性、可组合性、可分类性B 继承性、封装性、多态性C 抽象性、继承性、封装性、多态性D 封装性、易维护性、可扩展性、可重用性10.关于面向对象分析与设计的叙述中正确的是()。

2020年新编《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案名师精品资料.

2020年新编《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案名师精品资料.

2020年新编《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案名师精品资料.一、单选题1.在下列概念中,Java语言只保留了DA.运算符重载B.结构和联合C.指针D.方法重载2.下列类定义中,不正确的是BA.class x { .... } B.static class x implements y1,y2 { .... }C.public class x extends Applet { .... } D.class x extends y { .... } 3.下列语句序列执行后,k 的值是Bint m=3, n=6, k=0;while( (m++) < (- - n) ) ++k;i++先把i的初值赋给表达式(i++),作为表达式(i++)的值,然后i 自增1作为i的值。

如i=1,则表达式(i++)的值等于1,而i的值变为2。

++ii先自增1,再把自增后的值赋给表达式(++i)。

如i=1,则表达式(++i)的值等于2,i的值也为2,A.0 B.1 C.2 D.34.设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是AA.a[0] = 7; B.i = i + 2 C.i++ - --j; D.a(0) = 66;5.Java语言的类间的继承关系是BA.多重的B.单重的C.线程的D.不能继承6.下列语句序列执行后,k 的值是Cint i=10, j=18, k=30;switch( j - i ) {case 8 : k++;case 9 : k+=2;case 10: k+=3;default : k/=j;}A.31 B.3 C.2 D.337.设有定义 float x=3.5f, y=4.6f, z=5.7f;则以下的表达式中,值为true的是CA.x > y || x > z B.z > ( y + x ) C.x != y D.x < y & ! ( x < z )8.下列修饰符中,定义类头时能使用的修饰符是CA.private B.static C.abstract D.protected 9.设i、j、k为类x中定义的int型变量名,下列类x的构造函数中不正确的是B A.x( int m){ ... } B.void x( int m){ ... }C.x( int m, int n){ ... } D.x( int h,int m,int n){ ... } 10.下列对封装性的描述中,错误的是 DA.封装体包含了属性和行为B.封装使得抽象的数据类型提高了可重用性C.被封装的某些信息在封装体外是不可见的D.封装体中的属性和行为的访问权限是相同的11.下列关于包的描述中,错误的是BA.包是若干个类的集合B.包是一种特殊的类型C.包是使用package语句创建的D.包有有名包和无名包两种12.下列关于Applet程序的描述中,错误的是 CA.Applet程序的主类必须是Applet类得子类B.Applet不是完整的独立程序C.Applet程序的主类中应有一个main()方法D.Applet的字节码文件必须嵌套在一个HTML文件中13.下列界面元素中,不是容器的是CA. Dialog B.Frame C.List D.Panel14.下列关于异常处理的描述中,错误的是DA.程序运行时异常由Java虚拟机自动进行处理B.使用try-catch-finally语句捕获异常C.使用throw语句抛出异常D.捕获到的异常只能在当前方法中处理,不能在其他方法中处理15.以下方法不属于迭代器(Iterator)接口所定义的方法的是DA.hasNext()B.next()C.remove()D.nextElement ()16.主线程属于(C )A.守护线程B.Thread线程C.用户线程D.Runnable线程二、填空题1.三目运算符的3个操作数中,第一个操作数的类型必须是逻辑型的。

面向对象期末考试题及答案

面向对象期末考试题及答案

面向对象期末考试题及答案一、选择题(每题2分,共20分)1. 面向对象编程中的三大特性是?A. 封装、继承、多态B. 抽象、继承、封装C. 继承、封装、多态D. 封装、抽象、多态答案:A2. 在Java中,哪个关键字用于定义类?A. classB. structC. typeD. interface答案:A3. 以下哪个不是面向对象设计原则?A. 单一职责原则B. 开闭原则C. 里氏替换原则D. 模块化原则答案:D4. 在面向对象编程中,构造函数的作用是什么?A. 用于创建对象B. 用于销毁对象C. 用于实现继承D. 用于实现多态答案:A5. 以下哪个是Java中的访问修饰符?A. privateB. publicC. protectedD. 全部都是答案:D...(此处省略剩余选择题)二、简答题(每题10分,共30分)1. 简述面向对象编程的基本思想。

答案:面向对象编程是一种编程范式,它将现实世界中的实体抽象成对象,这些对象具有属性和行为。

面向对象编程的基本思想是将数据和处理数据的方法结合在一起,形成对象。

通过对象之间的交互来实现程序的功能。

2. 解释什么是多态性,并给出一个简单的例子。

答案:多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。

例如,在Java中,可以通过重载和重写来实现多态。

假设有一个动物类Animal,它有一个方法makeSound()。

然后有一个子类Dog,它重写了makeSound()方法。

当我们创建一个Dog对象并调用makeSound()时,会执行Dog类中的makeSound()方法,而不是Animal类中的。

3. 什么是封装?封装的好处是什么?答案:封装是将对象的数据(属性)和行为(方法)组合在一起,并隐藏对象的内部细节,只暴露出一个可以被外界访问的接口。

封装的好处包括:保护数据、减少错误、提高代码的重用性、增强模块化。

三、编程题(每题25分,共50分)1. 编写一个Java程序,实现一个简单的银行账户类Account,包含以下特性:- 私有属性:账户余额balance- 公共方法:存款deposit(double amount)、取款withdraw(double amount)、获取余额getBalance()答案:```javapublic class Account {private double balance;public Account() {this.balance = 0;}public void deposit(double amount) {if (amount > 0) {balance += amount;}}public void withdraw(double amount) {if (amount > 0 && balance >= amount) {balance -= amount;}}public double getBalance() {return balance;}}```2. 假设有一个名为Car的类,它有两个属性:品牌brand和颜色color。

C++面向对象程序设计考试试卷(详细讲解)

C++面向对象程序设计考试试卷(详细讲解)

C++面向对象程序设计考试试卷(详细讲解)一、单项选择题(共20题,每题1分,共20分)1、下列关于C++标识符的命名不合法的是 C 与C#一样A. PadB. name_1C. A#bcD. _a122、若有以下类型标识符定义:()Dint x=2; char w='a'; float y=23.45f; double z=45.6712;则表达式w*x+y-z的结果类型是A. floatB. charC. intD. double6、对重载函数形参的描述中,错误的是 D 重载是重点A. 参数的个数可能不同B. 参数的类型可能不同C. 参数的顺序可能不同D. 参数的个数、类型、顺序都相同,只是函数的返回值类型不同7、以下能正确定义数组并正确赋初值的语句是 DA. int N=5,b[N][N];B. int a[2]={{1},{3},{4},{5}};C. int c[2][]={{1,2},{3,4}};D. int d[3][2]={{1,2},{3,4}};8、下列给字符数组进行的初始化中,不正确的是 DA. char s1[]="abcd";B. char s2[3]={'x','y','\0'};C. char s3[]={'a','x','y','\0'};D. char s4[6]={"xyz","mnp"};9、通常的拷贝构造函数的参数是 CA.某个对象名 B.某个对象成员名C.某个对象的引用 D.某个对象的指针名10、关于构造函数特点的描述中,错误的是 AA. 定义构造函数必须指出类型(构造函数特点是无返回类型)B. 构造函数的名字与该类的类名相同C. 一个类中可定义0至多个构造函数(不写构造函数,系统会自动生成一个空的构造函数)D. 构造函数是一种成员函数11、下面程序的运行结果为 C#include <iostream.h>int add(int a,int b);void main(){extern int x,y;cout<<add(x,y)<<endl;}int x=20,y=5;int add(int a,int b){int s=a+b;return s;}A.20 B.5 C.25 D.编译会提示出错信息12、关于常成员的描述中,错误的是 BA. 常成员包含常数据成员和常成员函数两种B. 常数据成员必须是公有的C. 常数据成员要使用构造函数成员初始化列表进行初始化D. 常对象只能调用它的常成员函数,不能调用其它的成员函数13、关于友元函数的描述中,错误的是 BA. 友元函数不是成员函数B. 友元函数只能访问类中私有成员C. 友元函数破坏隐藏性,尽量少用D. 友元函数说明在类体内,使用关键字friend14、如果有int x,*p; float y,*q;则下面操作正确的是 CA.p=x B.p=qC.p=&x D.p=&y16、若数组名作实参而指针变量作形参,函数调用时实参传给形参的是 DA. 数组的长度B. 数组第一个元素的值C. 数组所有元素的值D.数组第一个元素的地址17、对于动态分配内存空间描述正确的是 DA.使用new运算符分配的内存空间的长度必需是常量B.delete运算符可以释放动态的存储空间和静态的存储空间C.由new分配的内存空间是不连续的D.delete运算符只能释放由new分配的动态存储空间18、能够释放对象所占资源的是() AA.析构函数 B.数据成员C.构造函数 D.静态成员函数19、虚函数的定义是在基类中进行的,定义时需要冠以关键字 CA.static B.frendC.virtual D.public20、在C++中串流类是在头文件strstrea.h中定义的,下列不属于串流类的是) C A.strstream B.ostrstreamC.ofstream D.istrstream二、填空题(共9题16空,每空1分,共16分)1、函数重载时,编译系统会根据__形参的类型__ 或__形参的个数__ 来区分。

面向对象分析与设计练习题及参考答案

面向对象分析与设计练习题及参考答案

《面向对象分析与设计》练习题及参考答案一、思考题:1. How many phases are included in system development? (brief description)2. Describe a system and the components of a system model.3. What two key components distinguish an information system from an automated information system?4. What is systems analysis and design?5. Who are the six stakeholder groups in information systems?6. What are a system designer’s and system builder’s roles in information systems development?7. What is the system analyst role in systems development as it related to the other stakeholders?8. List the six steps of the general problem-solving approach.9. List two types of quality certification applicable to information systems.10. What are legacy systems? Name two types of problems encountered in legacy systems.11. What is ERP? What is electronic commerce?12. Differentiate between management information systems and decision support systems.13. What role dose a data warehouse play in a decision support system?14. List three focuses for an information systems.15. What is the role of the network in information systems?16. 面向过程的系统分析与设计存在的问题是什么?通过什么OO技术来解决?17. 请画图说明面向对象系统的基本构造。

面向对象分析与设计试题答案

面向对象分析与设计试题答案

课程考试参考答案与评分标准一、单项选择题一、单项选择题 ( ( 每小题每小题每小题 1 1 分,共分,共分,共 20 20 分 ) 1.D 2. B 3.B 4.C 5. D 6. C 7.D 8.C11.B 12.B 13.B 14.D 15. D 16. C 17.D 18. C 19. C 二、填空题二、填空题 ( ( 每空每空每空 1 1 分,共分,共分,共 20 20 分 ) 1、抽象、抽象 2 2、基础结构、基础结构、基础结构 3 3、用况、用况 4 4、对象5、类、类 6、属性7、继承8、聚合9、参与者1010、模型元素、模型元素、模型元素 三、三、. . 简答题(每小题6分,共30分)分) 1. 简述面象对象有哪些特点?简述面象对象有哪些特点?以面向对象的分析为基础、一般不依赖于结构化分析。

(3分)分) 与相应的OOA 方法共同构成一种OOA&OOD 方法体系。

(1分)分) 较全面地体现了面向对象方法的概念与原则。

(2分)分)大多数OOD 方法独立于编程语言,但具体应用OOD 时,则要考虑特定的编程语言。

2. 简述面向对象技术的三大机制。

简述面向对象技术的三大机制。

答:(答:(11)封装性)封装性(encapsulation) (encapsulation)所谓封装就是把对象的属性和行为结合成一个独立的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接口函数来改变或获取对象的属性数据,这就实现了消息隐蔽。

(取对象的属性数据,这就实现了消息隐蔽。

(22分)分) (2)继承性)继承性如果在一个已定义的类上,如果在一个已定义的类上,增加一些特殊属性或操作,增加一些特殊属性或操作,增加一些特殊属性或操作,可以形成一个新的类,可以形成一个新的类,这个类不仅继承了前一个类的全部特征,这个类不仅继承了前一个类的全部特征,而且具有新的特性,而且具有新的特性,而且具有新的特性,因此可看作前一因此可看作前一个类的特例,是对前一个类的继承。

java面向对象程序设计期末考试题及答案

java面向对象程序设计期末考试题及答案

java面向对象程序设计期末考试题及答案一、单项选择题(每题2分,共20分)1. 在Java中,哪个关键字用于声明一个类?A. classB. structC. interfaceD. enum答案:A2. 下列哪个是Java中的访问修饰符?A. publicB. privateC. protectedD. All of the above答案:D3. 在Java中,哪个关键字用于创建对象?A. newB. createC. makeD. instantiate答案:A4. Java中的继承是通过哪个关键字实现的?A. extendsB. inheritC. deriveD. superclass答案:A5. 在Java中,哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. abstract答案:A6. 下列哪个不是Java中的方法重载的条件?A. 方法名相同B. 参数列表不同C. 返回值类型不同D. 访问修饰符不同答案:C7. 在Java中,哪个关键字用于声明一个抽象方法?A. abstractB. virtualC. overrideD. final答案:A8. Java中的多态性可以通过哪种方式实现?A. 方法重载B. 方法覆盖C. 接口实现D. 继承答案:B9. 在Java中,哪个关键字用于声明一个内部类?A. innerB. nestedC. staticD. inner class答案:B10. Java中的垃圾回收机制是自动的吗?A. YesB. NoC. SometimesD. Depends on the JVM答案:A二、填空题(每题2分,共20分)1. Java中,一个类可以继承另一个类的______方法和属性。

答案:非私有2. Java中的______关键字用于声明一个类是不可被继承的。

答案:final3. 在Java中,______关键字用于声明一个类是抽象的。

面向对象分析与设计复习题(昆明理工大学)

面向对象分析与设计复习题(昆明理工大学)

面向对象分析与设计习题一、单项选择题1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是(D)的形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。

A. Simula67语言B. Smalltalk语言C. Java语言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.对象图 B. 协作图 C. 状态图 D.序列图9.(D)就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。

A.组件图B. 协作图C. 状态图D.配置图10. 使用UML进行关系数据库的(B)时,需要设计出表达持久数据的实体类与其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。

《面向对象系统分析与设计》期末综合练习题(答案版)

《面向对象系统分析与设计》期末综合练习题(答案版)

面向对象系统分析与设计期末综合练习题一、选择题1.Heave学院请Decoder软件公司开发一个新的OO课程系统,院长Tom宣布该系统一定要成为学院的great software,下面对于great software的说法正确的是?()(A)Decoder公司程序员满意软件。

(B)Heave学院师生满意的软件。

(C)价格最贵的软件。

(D)Decoder公司程序员和Heave学院师生都满意的软件。

2.Heave学院准备开发一个新的Java版的OO课程注册系统,该系统可以供学生查询期末成绩、教师统计班级成绩正态分布、教务统计GUITARIO各项能力在各门课程中的落实情况,而且随着历史数据的积累,今后还可能引入数据挖掘技术,为院长提供各届学生的整体进步情况,请问Decoder公司的系统架构师应该采用哪种设计模式来设计成绩统计模块()(A)状态模式(B)观察者模式(C)工厂模式(D)装饰者模式3.Heave学院原有的课程目录系统是用SmallTalk语言开发的,并向外部发不了一套访问接口。

学院为了节约成本,不准备重新开发该目录系统,为此Decoder需要设计一套与之兼容的Java接口对其进行封装。

这样可以更方便地将旧课程目录系统集成到新的系统中,同时为将来的升级留有余地。

请问系统设计师在设计时应该采用哪个设计模式?()(A)模版方法模式(B)适配器模式(C)观察者模式(D)外观模式4.Heave学院新的OO课程注册系统,可以与签约银行联网直接代收学费,但银行的业务逻辑错综复杂,为此Heave学院希望银行能够提供一套新的接口以屏蔽并简化原有业务操作的复杂性。

这套新接口设计上体现了哪个设计模式的思想()(A)适配器模式(B)观察者模式(C)装饰者模式(D)外观模式5.Heave学院的期末成绩统计可以饼状图、柱状图、曲线、表格等多种形式进行显示。

但不论何种形式显示,其统计算法census()需要通过prepareData()、generateChart()、saveChart()、showData()四个步骤,其中第1步与第2步对于不同的显示方式是不同的,那么系统设计师在设计该系统时,会使用哪个设计模式()(A)模版方法模式(B)观察者模式(C)适配器模式(D)外观模式6.Heave学院的历史数据挖掘器的设计很有挑战性,其难点在于院方要求各种形式的挖掘组件可以任意组合,任意拼装,每个挖掘组件完成独立的挖掘任务,互不干扰,组装后的挖掘器套件运行后,会形成一份报表,用以呈现挖掘结果。

面向对象分析与设计习题及部分答案

面向对象分析与设计习题及部分答案

⾯向对象分析与设计习题及部分答案《⾯向对象分析与设计》习题及部分答案第⼀章概论1.什么是⾯向对象⽅法?⾯向对象的基本原则主要有哪些?答:⾯向对象⽅法是⼀种运⽤对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发⽅法。

⾯向对象⽅法的解决问题的思路是从现实世界中的客观对象(如⼈和事物)⼊⼿,尽量运⽤⼈类的⾃然思维⽅式来构造软件系统,这与传统的结构化⽅法从功能⼊⼿和信息⼯程化⽅法从信息⼊⼿是不⼀样的。

⾯向对象的基本思想主要有:1)从现实世界中客观存在的事物出发来建⽴软件系统,强调直接以问题域(现实世界)中的事物为中⼼来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表⽰为系统中的对象,作为系统的基本构成单位。

这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来⾯貌(对象)2)⽤对象的属性表⽰事物的性质;⽤对象的操作表⽰事物的⾏为。

(属性与操作)3)对象的属性与操作结合为⼀体,成为⼀个独⽴的、不可分的实体,对外屏蔽其内部细节。

(对象的封装)4)对事物进⾏分类。

把具有相同属性和相同操作的对象归为⼀类,类是这些对象的抽象描述,每个对象是它的类的⼀个实例。

(分类)5)复杂的对象可以⽤简单的对象作为其构成部分。

(聚合)6)通过在不同程度上运⽤抽象的原则,可以得到较⼀般的类和较特殊的类。

特殊类继承⼀般类的属性与操作,从⽽简化系统的构造过程及其⽂档。

(继承)7)对象之间通过消息进⾏通讯,以实现对象之间的动态联系。

(消息)8)通过关联表⽰类(⼀组对象)之间的静态关系。

(关联)2.与传统开发⽅法⽐,⾯向对象⽅法有什么优点?答:⾯向对象⽅法的解决问题的思路是从现实世界中的客观对象(如⼈和事物)⼊⼿,尽量运⽤⼈类的⾃然思维⽅式来构造软件系统,这与传统的结构化⽅法从功能⼊⼿和信息⼯程化⽅法从信息⼊⼿是不⼀样的。

与传统⽅法相⽐,⾯向对象的⽅法主要优点有:1)从认识论的⾓度可以看出,⾯向对象⽅法改变了⼈们认识世界的⽅式;2)语⾔的发展——鸿沟变窄;3)⾯向对象⽅法使得从问题域到计算机间的鸿沟变窄;4)⾯向对象⽅法有助于软件的维护与复⽤;(1)把易变的数据结构和部分功能封装在对象内并加以隐藏,⼀是保证了对象⾏为的可靠性;⼆是对它们的修改并不会影响其他的对象,有利于维护,对需求变化有较强的适应性。

面向对象的分析与设计期末考试试卷(F卷)

面向对象的分析与设计期末考试试卷(F卷)

面向对象的分析与设计期末考试试卷(F卷)面向对象的分析与设计期末考试试卷(F卷)一、选择题(30分)说明:每题2分,只有1个正确答案,请将正确答案填写在下面表格中。

1. 一个设计得好的面向对象系统具有()特征。

A 低内聚、低耦合B 高内聚、低耦合C 高内聚、高耦合D 低内聚、高耦合2.构成对象的两个主要因素是()。

A 属性和服务B 标识和内容C 继承和多态D 消息和封装3. 下面描述中()不是使用软件模型的目的。

A 可以更好地理解问题B 可以更早地发现错误或疏漏的地方C 可以为最后代码的生成提供依据D 在开发过程中使用面向对象方法4. 下列事物中一般不是目标系统的外部参与者的是()。

关系。

public class A {private B theB;public void aMethod(){ theB.doSomthing(); }}A 关联B 泛化C 实现D 包含9. 面向对象的特点主要概括为()。

A 可分解性、可组合性、可分类性B 继承性、封装性、多态性C 抽象性、继承性、封装性、多态性D 封装性、易维护性、可扩展性、可重用性10.关于面向对象分析与设计的叙述中正确的是()。

A 因为我们要重用类,所以在分析设计过程中不能过早确定领域类B 面向对象方法是针对功能的而不是针对组成部分的C 用例分析是面向对象分析与设计的起点D 通过用例分析和时序分析可以获得全部的问题领域类11.在类设计过程中引入类不变式的目的是达到系统设计的()。

A 正确性B 健壮性C 灵活性D 高效性12.在数据库设计的()阶段开始考虑具体的数据库管理系统(DBMS)的特性A 需求分析B 概念设计C 逻辑设计D 物理设计13.关于在建立软件系统模型过程中业务模型的作用描述中错误的是()。

A 帮助确定什么样的软件系统对机构中的业务过程是最合适的。

B 帮助定义功能性和非功能性的需求。

C 作为分析和设计目标软件系统的基础。

D 建立与软件模型之间的一一对应关系,实现模型转换。

重庆交通大学《面向对象程序设计》2021-2022第二学期期末试卷

重庆交通大学《面向对象程序设计》2021-2022第二学期期末试卷

2021~2022学年度第二学期《面向对象程序设计》期末试卷课程代码:试卷编号:考试日期:年月日答题时限:120分钟考试形式:闭卷笔试得分统计表:题号得分一二三四五一、单项选择题(每题2分,共22分)1.面向对象编程的主要特征是什么()A.封装、继承、多态B.封装、继承、抽象C.封装、多态、抽象D.继承、多态、抽象2.下面哪个选项是正确的关于封装的说法()A.封装允许隐藏内部实现细节B.封装允许子类重写父类的方法C.封装允许对象之间进行交互D.封装允许创建抽象类和接口3.继承是一种机制,它允许子类()A.实现多态性B.重写父类方法C.访问父类的私有字段D.拥有父类相同的构造函数4.抽象是指()A.隐藏内部实现细节B.将类实例化成对象C.关联一个对象到另一个对象D.将类定义为接口或抽象类得分评卷人5.以下哪个选项是正确的关于多态的说法()A.多态允许一个对象具有多种形式B.多态只能应用于接口和抽象类C.多态只能通过封装实现D.多态只能通过继承实现6.在面向对象编程中,消息传递是通过什么实现的()A.函数B.方法C.类D.对象7.哪个关键字允许实现运行时绑定的多态性()A.finalB.staticC.abstractD.virtual8.在Java中,接口是用来()A.定义类的共有字段和方法B.定义子类的构造函数C.定义类的实例变量D.定义类的方法签名9.面向对象编程中的聚合关系和组合关系有什么区别()A.聚合关系是强关联,组合关系是弱关联B.聚合关系是整体与部分的关系,组合关系是整体与部件的关系C.聚合关系是单向关联,组合关系是双向关联D.聚合关系是继承关系,组合关系是实现关系10.在面向对象编程中,什么是类()A.类是对象的实例B.类是对象的身份C.类是对象的模板D.类是对象的属性11.下列哪个选项是正确的关于抽象类的说法()A.抽象类可以直接实例化B.抽象类可以被继承C.抽象类可以有实现代码D.抽象类可以被声明为final二、填空题(每空2分,共16分)1.面向对象程序设计是一种编程方法,它将数据和对数据的操作封装在一个实体中,这个实体被称为。

《面向对象程序设计》期末考试试卷参考

《面向对象程序设计》期末考试试卷参考

《面向对象程序设计C++》期末考试试卷一、选择题(每小题3分,共48分。

)01、下列关于C++函数的叙述中,正确的是( C )。

A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值C)函数在被调用之前必须先声明 D)函数不能自己调用自己02、下列关于类和对象的叙述中,错误的是( A )。

A)一个类只能有一个对象 B)对象是类的具体实例C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系03、在C++中,用于实现运行时多态性的是( D )。

A)内联函数 B)重载函数 C)模板函数 D)虚函数!04、下列关于运算符重载的叙述中,正确的是( B )。

A)通过运算符重载,可以定义新的运算符 B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参05、对于语句 cout<<x<<endl;错误的是描述是( D )。

A)“cout”是一个输出流对象B)“endl”的作用是输出回车换行C)“x”是一个变量D)“<<”称作提取运算符(插入运算符)06、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是( 保护数据成员个数1,保护陈谷原函个数2 )。

( B )class MyBASE{ private: int k;public: void set(int n){ k=n;}int get( )const{ return k;} };class MyDERIVED: protected MyBASE{ protected: int j;public: void set(int m, int n){ MyBASE::set(m); j=n;}int get( ) const { return MyBASE::get( )+j; } };A)4 B)3 C)2 D)107、已知在一个类体中包含如下函数原型: Volume operator-(Volume)const;,下列关于这个函数的叙述中,错误的是( B )。

(完整word版)面向对象技术样题(附答案)

(完整word版)面向对象技术样题(附答案)

北京大学软件与微电子学院期末试题—面向对象分析与设计一、选择题( 20 分,共 10 题,每题 2 分)1.关于方法论与方法的关系的描述错误的是( B )A .方法论是一种观点,是一个有理论意义的架构。

B.方法包括理论与模型两个重要的方面。

C.面向对象的方法论的重要观点是:封装、数据隐藏、多态、关系等。

D.不同的方法可以属于同一种方法论。

2.关于信息隐藏的描述错误的是(C)A .信息隐藏是指对象在与外界的交互中,尽可能地隐藏对象的内部细节,仅保留有限的对外接口与外部进行联系。

B.信息隐藏既可以隐藏属性,也可以隐藏操作。

C.一个对象信息隐藏的内容对任何对象都是一样的,并不随与之交互的对象的不同而改变。

D.信息隐藏的原则是公开不变的操作,隐藏易变的操作。

3.关于多态的描述正确的是(D)A .多态是指在聚合关系中的各个类中名字相同的属性和操作具有不同的意义。

B.多态的实现机制是编译时静态链接。

C.函数名重载 (overload) 会导致多态现象出现。

D.多态可实现接口复用,节省大量的编码工作量.4.关于重载( overload)与覆盖( override)的说法正确的是( D)。

A .如果子类中的成员函数(f x)具有父类中成员函数f(x) 相同的函数名,那么称子类对父类的f(x) 进行了覆盖。

B.如果子类中的成员函数f(x )具有父类中成员函数f(x) 相同的基调,那么称子类对父类的f(x) 进行了重载。

C.重载导致多态,覆盖与多态无关。

D.覆盖由动态链接实现,重载由静态链接实现。

5.关于用况图与类图的描述正确的是( D)。

A.参与者是用况图中的元素,类是类图中的元素,二者没有关系。

B.用况图中用况应全部识别为类图中的同名类。

C.用况图中参与者应全部识别为类图中的同名类。

D.用况图中参与者有可能识别为类图中的主动类6.关于状态图的陈述正确的是( C)A.一个对象自身的属性值变化不能作为其状态图中的事件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象的分析与设计期末考试试卷(F卷)一、选择题(30分)
说明:每题2分,只有1个正确答案,请将正确答案填写在下面表格中。

1. 一个设计得好的面向对象系统具有()特征。

A 低内聚、低耦合
B 高内聚、低耦合
C 高内聚、高耦合
D 低内聚、高耦合2.构成对象的两个主要因素是()。

A 属性和服务
B 标识和内容
C 继承和多态
D 消息和封装
3. 下面描述中()不是使用软件模型的目的。

A 可以更好地理解问题
B 可以更早地发现错误或疏漏的地方
C 可以为最后代码的生成提供依据
D 在开发过程中使用面向对象方法
4. 下列事物中一般不是目标系统的外部参与者的是()。

A 人
B 外部设备
C 外部系统
D 数据存储
5. 下面()可以描述一个用例中多个对象之间的相互协作关系以及协作过程的行为次序。

A 交互图
B 状态图
C 对象图
D 用例图
6. 统一过程(或称RUP)所提出的迭代开发过程是()。

A 一种结构化开发方法,该方法给出了功能分解有具体步骤
B 一种管理软件开发的过程复杂性和对变更进行规划的技术
C 一种自顶向下的开发过程,且开发过程没有使用数据流图
D 是RUP中最重要的特点
7. 下列描述中正确的是()。

A 消息可以由被动对象发送到主动对象
B 状态图中,动作可以被中断而活动不能被中断
C 构件图中,一个构件和一个接口之间只能存在实现关系
D 状态图不适合于描述跨多个用例的单个对象的行为,而适合描述多个对象之间的行为协作
8. 根据下面的代码,可以确定类A与类B之间存在()关系。

public class A {
private B theB;
public void aMethod(){ theB.doSomthing(); }
}
A 关联
B 泛化
C 实现
D 包含
9. 面向对象的特点主要概括为()。

A 可分解性、可组合性、可分类性
B 继承性、封装性、多态性
C 抽象性、继承性、封装性、多态性
D 封装性、易维护性、可扩展性、可重用性
10.关于面向对象分析与设计的叙述中正确的是()。

A 因为我们要重用类,所以在分析设计过程中不能过早确定领域类
B 面向对象方法是针对功能的而不是针对组成部分的
C 用例分析是面向对象分析与设计的起点
D 通过用例分析和时序分析可以获得全部的问题领域类
11.在类设计过程中引入类不变式的目的是达到系统设计的()。

A 正确性
B 健壮性
C 灵活性
D 高效性
12.在数据库设计的()阶段开始考虑具体的数据库管理系统(DBMS)的特性
A 需求分析
B 概念设计
C 逻辑设计
D 物理设计
13.关于在建立软件系统模型过程中业务模型的作用描述中错误的是()。

A 帮助确定什么样的软件系统对机构中的业务过程是最合适的。

B 帮助定义功能性和非功能性的需求。

C 作为分析和设计目标软件系统的基础。

D 建立与软件模型之间的一一对应关系,实现模型转换。

14.下列关于面向对象方法中描述中错误的是()。

A 使用设计模式有助于在软件开发中应用面向对象技术
B 选择面向对象程序设计语言时需要考虑开发人员对其的熟悉程度
C UML作为一种可视化建模语言需要与RUP开发过程同时使用
D 目前在软件生命周期的分析、设计、实现和测试中均可以应用面向对象方法
15.下面()不是UML的基本构成元素。

A 控制语言
B 基本构造块
C 规则
D 公共机制
二、判断题(10分)
判断下列类之间的关系,把相应编号填写在下面表格中(A聚合B 继承C 关联D 都不是)
1.大学–学院 2.学生–课程 3.学生–大一新生 4.汽车–车门
5.货车–交通工具 6.公共汽车–车站 7.工具条–按钮 8.汽车发动机–汽车车体9.员工–公司 10.本科生–研究生
三、简答题(42分,每小题6分)
1. 画出能正确表示下面叙述的类图(括号内为类名)。

“一个雇员(Employee)最多由一个经理(Manager)管理,某些经理管理多个雇员,某些经理不管理任何雇员”。

2. 汽车可能处于“静止”和“行驶”状态,其中“行驶”状态可以在“前进”和“后退”状态之间转移,“行驶”状态又包括“高速”和“低速”状态之间的变化。

画出汽车的状态图。

3. 简要叙述“聚集”关系和“组合”关系的相同点和不同点。

4. 设计一个饮料自动售货机系统,其主要功能是向顾客出售饮料,同时供应商需要向其中放置饮料,收银员需要向其中放置零钱和收回营业收入。

画出该系统的用例图。

5. 请根据如下Java代码画出相应的顺序图。

class C1{
C2 c2 = new C2();
public void f1(){ c2.f2(); }
}
Class C2{
public void f2(){ f2(); }
}
6. 找出并说明下面类图中的错误。

7. 下面类图中,接口Service中定义了三个方法。

其中ClientA只使用methodA方法,ClientB只使用methodB方法,ClientC只使用methodC方法。

根据接口分离原则重新设计该类图。

四、设计题(18分)
仔细分析下面对某公司“会见顾客”业务流程的描述,画出带泳道的活动图。

(18分)(1)公司业务员打电话给客户,确定一个会面。

(2)如果会面地点在公司内,公司技术人员需要为会面准备一间会议室,同时,咨询顾问需要为准备一份陈述报告。

(3)如果会面地点在公司外,则只需咨询顾问需要为准备一份陈述报告。

(4)咨询顾问与顾客在约定的时间和地点见面。

(5)业务员随后为他们准备好会议用纸。

(6)如果会面得到了一个解决方案,则咨询顾问根据解决方案编写一个报告,并将报告发给顾客。

一、选择题(30分)
二、判断题(10分)
三、简答题(42分,每小题6分)
3. 简要叙述“聚集”关系和“组合”关系的相同点和不同点。

答:相同点:整体-部分关系
不同点:局部对象的生命周期是否由整体对象来管理
6. 答:(1)计算机与其部件之间不是继承关系,应是聚集关系
(2)人与用户、维修人员之间不是聚集关系,应是继承关系
(3)维修人员与计算机之间不是聚集关系,应是维修人员依赖计算机或单向关联7. 答:
四、设计题(18分)。

相关文档
最新文档