最新面向对象的分析与设计期末考试试卷(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卷)一、选择题(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语言程序设计》期末考试试题及部分答案名师精品资料.一、单选题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++面向对象程序设计考试试卷(详细讲解)一、单项选择题(共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面向对象程序设计期末考试题及答案一、单项选择题(每题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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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分)。