面向对象技术练习
- 格式:ppt
- 大小:311.00 KB
- 文档页数:41
《面向对象技术(本)》课程第四阶段练习题答案一、填充题答案:1.private2.static3.import java.util.*;4.后期,前期5.Math.cos(30*3.14/180)二、选择题答案:1.B 2.A 3.C 4.D 5.C三、简答题答案:1.在面向对象的程序设计语言中,类是一种特殊属性类型,类可以看作具有共同属性和行为的事物的抽象。
在类中包含了变量和与变量有关的操作(方法)。
对象是类的实例。
类和对象的关系就如同属性类型和变量的关系。
例如,“电话”类代表电话这一类事物,而电话的对象代表一个具体的电话。
2.当外部的类可以没有限制地直接访问、修改类中变量时,是非常危险的。
因此必须限制类的外部程序对类内部成员的访问,这就是类的封装目的。
类把属性和方法封装起来,同时创建一些允许外部访问的方法,通过这样的方法来访问类的成员变量。
封装的另一目的是细节屏蔽,便于程序功能的扩展和程序的维护。
3.Java中有四种访问权限:公有的(public)、保护的(protected)、默认的、私有的(private)。
各种权限的访问级别如下表:4.null表示空对象,即没有创建类的任何实例。
当我们声明对象时,如果没有用new 实例化时,此时它就被初始化为一个特殊的值“null”。
而当我们在类的方法定义中需要引用正在使用该方法的对象时,可以用“this”表示。
uper表示对某个类的超类的引用,用super来引用被子类屏蔽的超类的成员。
5.不能被继承的类称为最终类。
在声明类时,用final将类声明为最终类,这样此方法不会在子类中被覆盖(即子类中不能有和此方法同名的方法)。
抽象类则是必须被子类覆盖的类。
在声明类或方法时,用关键字abstract可以将类或方法声明为抽象类或方法。
抽象方法没有方法体,含有抽象方法的类即为抽象类,它是不能实例化的类。
6.多态性是面向对象程序设计的重要特征,是指同一个名字的若干个方法,有不同的实现(即方法体中的代码不一样)。
软件设计师-面向对象技术(二)(总分29,考试时间90分钟)1. 面向对象程序设计语言中提供的继承机制可将类组织成一个______结构,以支持可重用性和可扩充性。
A. 栈B. 星形C. 层次D. 总线2. 在C++语言中,若类C中定义了一个方法intf(int a,int b),那么方法不能与该方法同时存在于类C中。
A. int f(int x,int y)B. int f(float a,int b)C. float f(int x,float y)D. int f(int x,float y)3. 下面关于面向对象的描述正确的是______。
A. 针对接口编程,而不是针对实现编程B. 针对实现编程,而不是针对接口编程C. 接口与实现不可分割D. 优先使用继承而非组合4. 面向对象技术中,对象是类的实例。
对象有三种成分:______、属性和方法(或操作)。
A. 标识B. 规则C. 封装D. 消息5. 已知3个类A、B和C,其中类A由类B的一个实例和类C的1个或多个实例构成。
能够正确表示类A、B和C之间关系的UML类图是_____。
6. 面向对象的测试可分四个层次,按照由低到高的顺序,这四个层次是______。
A. 类层——模板层——系统层——算法层B. 算法层——类层——模板层——系统层C. 算法层——模板层——类层——系统层D. 类层——系统层——模板层——算法层7. 在UML中,______用于描述系统与外部系统及用户之间的交互。
A. 类图B. 用例图C. 交互图D. 协作图8. 以下关于单身模式(Singleton)的描述中,正确的是______。
A. 它描述了只有一个方法的类的集合B. 它能够保证一个类只产生唯一的一个实例C. 它描述了只有一个属性的类的集合D. 它能够保证一个类的方法只能被唯一一个类调用9. 类的实例化过程是一种合成过程,而不仅仅是根据单个类型进行的空间分配、初始化和绑定。
面向对象程序设计C++复习资料与答案第一、二、六、七章习题一、选择题1、系统约定C++源程序文件名的缺省的扩展名为()A、bccB、c++C、cppD、vcc2、面向对象的程序设计将数据与( )放在一起,作为一个相互依存、不可分割的整体来处理.A、对数据的操作B、信息C、数据隐藏D、数据抽象3、当一个函数无返回值时,函数的类型应定义为()A、voidB、任意C、intD、无4、对于C++的函数,正确的叙述是:A、函数的定义不能嵌套,但函数的调用可以嵌套B、函数的定义不能嵌套,但函数的调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套5、下列语句中错误的是( )A、int *p=new int(10);B、int *p=new int[10]C、int *p=new int;D、int *p=new int[40](0);6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:()A、name[3]=’a’;B、name=”lin”;C、name=new char[5]; D、cout<〈name[3];7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:( )A、name[3]=’q';B、name=”lin”;C、name=new char[5];D、name=new char(‘q’);8、假设已经定义:const char *name=”chen”;,下面的语句中错误的是:( )A、name[3]=’q’;B、name=”lin”;C、name=new char[5];D、name=new char(‘q’);9、下面的类型声明中正确的是:( )A、int &a[4];B、int &*p;C、int &&qD、int i,*p=&i;10、假设定义了函数模板( )template 〈class T>T max(T x,T y){ return(x>y)?x:y;}并定义了int i;char c;错误的调用语句是:()A、max(i,i)B、max(c,c)C、max((int)c,i);D、max(i,c)11、模板的使用是为了( )A、提高代码的可重用性B、提高代码的运行效率C、加强类的封装性D、实现多态性12、设有二个语句:int x[‘a’];cin>>x;则编译器认为()A、说明语句int x[‘a’]错B、二个语句都错C、语句cin〉〉x 错D、二个语句正确,没有语法错13、设有语句:void f(int a[10],int &x);int y[10],*py=y,n;则对函数f的正确调用语句是( )A、f(py[10],n);B、f(py,n)C、f(*py,&n)D、f(py,&n)14、在C++中实现封装是借助于()A、枚举B、类C、数组D、函数15、对于下面几个函数:(1) void f(int x,float y){……}(2) int f(int a,float b){…… }(3) int f(int i,int j){……}(4) float k(int x){…… }是重载函数。
期末复习试卷〔三〕一、单项选择题1、有一段java应用程序,其中包含一个公共类,名字为TestStudent,那么保存它的源文件名是〔〕A. teststudent.javaB. teststudent .classC. TestStudent.java正确答案:C解析:一个java文件中可以包含多个类,但最多只能有一个类是公共类〔public〕,该java文件的名字要与公共类的一致。
2、关于下面的代码,哪个描述是正确的?public class Test{public static void main(String[] args){Integer n1 = new Integer(3);Object n2 = new Integer(4);System.out.println(n1 pareTo(n2));}}A. 可以编译通过,可以运行,并得到预期结果。
B. 可以编译通过,可以运行,但不能得到预期结果。
C. 可以编译通过,但又运行错误。
D. 有编译错误。
正确答案:D解析:Integer类是基本数据类型int的包装类,里面封装了一个int类型的值,提供了一些实用的方法〔例如:在JavaFX中读取文本框内容是String类型的,如果要转换成int类型,就要调用Integer类的parseInt()方法〕并实现了Comparable接口,在Comparable接口中定了抽象方法compareTo(T o), T是泛型,对于Integer类,T 被替换为Integer,如以下图:因此,Integer类中compareTo()方法的定义如下:因此,compareTo的参数只能是Integer类型的,所以代码中的下面语句中的n2的类型需要进行强制类型转换,由Object转为Integer:System.out.println(n1 pareTo(n2));正确写法如下:System.out.println(n1 pareTo((Integer) n2));类似的包装类还有Long\Float\Double\Char\Boolean等,都是将基本数据类型包装为类。
期末复习试卷(五)一、程序题1.请根据UML图, 代码实现Person类、Student类和Volunteer接口旳定义。
解题规定: 编写测试程序, 创立一种名为”Tom”旳一年级学生, 这名学生参与了“北京青年志愿者协会”旳活动。
输出该学生旳姓名、年级及所属社团旳信息。
效果如下:interface Volunteer{public abstract String volunteer(String organization);}class Person{private String name;(1)2.根据给定旳GeometricObject类层次图, 分别实现GeometricObject、Circle和Triangle类。
规定:(2)按照类图, 定义各类旳数据域属性和措施。
(3)默认旳GeometricObject旳颜色为white。
默认旳Circle对象旳半径为10。
默认旳Triangle对象旳三边为(3, 4, 5)。
(4)GeometricObject类旳toString()措施, 返回对象旳颜色信息。
Circle和Triangle旳toString()措施, 覆盖父类旳toString(), 分别返回包括颜色信息、半径或边长旳信息。
(5)GeometricObject类实现parable接口, 覆盖public int compareTo()措施, 实现两个几何对象在周长上旳比较。
(6)Circle和Triangle类分别覆盖实现getPerimeter()。
编写一种顾客程序:(1)创立一种几何对象数组object;(2)分别寄存一种默认旳圆、一种半径为20旳圆、一种默认旳三角形和一种三边为(10, 20, 15)旳三角形;(3)计算这一组几何对象旳总周长并输出;(4)使用toString(),输出每个几何对象旳有关信息;(5)使用java.util.Arrays.sort()措施, 对几何对象数组中旳几何图形, 按周长进行排序, 并输出排序成果。
《面向对象技术》试卷2一、选择题(每题2分,共20分,答案填写在题后的表格内)1.下列语句中错误的是()A. int *p=new int(10) ;B. int *p=new int[10] ;C. int *p=new int ;D. int *p=new int[40](0)2.假设已经有定义char *const name=”chen” ;下面的语句中正确的是()A. name[3]=‟q‟;B. name=”lin”;C. name=new char[5]D. name=new char(…q‟);3.下面的类型声明中正确的是()A. int &a[4]B. int &*p ;C. int &&q ;D. int I,*p=& I ;4.在声明类时,下面的说法正确的是()A.可以在类的声明中给数据成员赋值B. 数据成员的数据类型可以是registerC. private、public、protected可以按任意顺序出现D. 没有用private、public、protected定义的数据成员是公有成员5.构造函数是在()时被执行的。
A.程序编译B. 创建对象C. 创建类D.程序装入内存6.在下面有关友元函数的描述中,正确的说法是()A. 友元函数是独立于当前类的外部函数B.一个友元函数不能同时定义为两个类的有友元函数C.友元函数必须在类的外部定义D.在外部定义友元函数时,必须加关键字friend7.使用派生类的主要作用是()A.提高代码的可重用性B.提高程序的运行效率C.加强类的封装性D.实现数据的隐藏8.关于虚函数,正确的描述是()A.构造函数不能是虚函数B.析构函数不能是虚函数C.虚函数可以是友元函数D.虚函数可以是静态成员函数9.如果在基类中将成员函数show声明为不带返回值得纯虚函数,正确的写法是()A.virtual show( )=0;B.virtual void show( )C.virtual void show( )=0;D.void show( )=0 virtual;10.使用myFile.open(“sales.dat”,ios::app)语句打开文件sales.dat后,则()二、分析下列程序中的错误,并说明原因(前2题每题6分,第三题8分,共20分)1.#include"iostream.h"class student{char name[10];int age;float aver;void printStu( ){}};void main( ){student p1,p2,p3;p1.age=16;//…} 2. #include"iostream.h" class stack{public:stack(int sz); private:char *p;int size;};stack::stack(int sz) {p=new char[size=sz]; }void main(){stack stt;//...}3.#include"iostream.h"class CTest{public:const int y2;CTest(int i1,int i2):y1(i1),y2(i2) {y1=10; int readme()const;//...private:int x;const int y1;};int CTest::readme()const {x++;return x; }void main() {CTest c(2,8);int i=c.y2;i=c.y1;}2题每题6分,第三题8分,共20分)1.#include"iostream.h"class toy{public:toy(int q,int p){ quan=q; price=p;}int get_quan(){return quan;}int get_price(){return price;}private:int quan,price;};int main(){toy op[2][2]={toy(10,20),toy(30,48),toy(50,68),toy(70,80)};int i;for(i=0;i<2;i++){cout<<op[i][0].get_quan()<<",";cout<<op[i][0].get_price()<<"\n";cout<<op[i][1].get_quan()<<",";cout<<op[i][1].get_price()<<"\n";}cout<<"\n";return 0;}2.#include"iostream.h"class Stock{public:void print(){cout<<"Stock class.\n";}};class Der1_Stock:public Stock{public:void print(){cout<<"Deri1_Stock class.\n";}};class Der2_Stock:public Stock{public:void print(){cout<<"Deri2_Stock class.\n";}第一题运行结果:第二题运行结果:Stock s1;Der1_Stock d1; Der2_Stock d2; ptr=&s1;ptr->print(); ptr=&d1;ptr->print(); ptr=&d2;ptr->print(); }3.#include"iostream.h" class A {public:A(int i):xi(i){} A(){xi=0;}friend A operator++(A a); friend A operator--(A &a); void print(); private: int xi; };A operator++(A a) {++a.xi; return a; }A operator--(A &a) {--a.xi; return a; }void A::print() { cout<<xi<<endl;} void main() {A i(7); ++i;i.print(); --i;i.print(); }四、设计题(每题10分,共40)1.下面是一个计算器类的定义,根据注释语句的提示,完成该类成员函数的实现class counter {public:counter(int number); //构造函数,初始化计数器 void increment(); //给计数器加1 void decrement(); //给计数器减1 int getvalue(); //取得计数器的值 int print(); //显示计数 private:int value; //计数器 第三题运行结果:程序:2.下面的程序包含了Time类和Date类的声明,要求设计一个Birthtime类,它继承了Time类和Date类,并且还有一项出生孩子的名字Childname,同时设计主程序显示一个小孩的出生时间和名字。
Java语言及面向对象技术复习资料一、单项选择题。
1、下列哪个是Java应用程序主类中正确的main方法?()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、下列哪项是正确的float变量的声明?()A.float foo=-1; B.float foo=1.0;C.float foo=2.02f; D.float foo=0x0123;3、对于int a[]=new int[3];下列哪个叙述是错误的?()A.a.length的值是3。
B.a[1]的值是1。
C.a[0]的值是0。
D.a[a.length-1]的值等于a[2]的值。
4、下列哪个叙述是正确的?()A.5.0/2+10的结果是double型数据。
B.(int)5.8+1.0的结果是int型数据。
C.’苹’+’果’的结果是char型数据。
D.(short)10+’a’的结果是short型数据。
5、对于下列Hello类,哪个叙述是正确的?()A.Hello类有2个构造方法。
B.Hello类的int Hello()方法是错误的方法。
C.Hello类没有构造方法。
D.Hello无法通过编译,因为其中的hello方法的方法头是错误的(没有类型)。
class Hello {Hello (int m) {}int Hello() {Return 20;}hello() {}}6、下列哪个叙述是正确的?()A.成员变量的名字不可以和局部变量的名字相同。
B.方法的参数的名字可以和方法中声明的局部变量的名字相同。
C.成员变量没有默认值。
D.局部变量没有默认值。
7、下列哪个叙述是正确的?()A.子类继承父类的构造方法B.abstract类的子类必须是非abstract类C.子类继承的方法只能操作子类继承和隐藏的成员变量D.子类重写或新增的方法也能直接操作被子类隐藏的成员变量8、下列程序中注释的哪个代码(A,B,C,D)是错误的(无法通过编译)?()class A {static int m;static void f() {m=20; //A}}class B extends A {void f() //B{ m=222; //C}}class E {public static void main(String args[]) {A.f();}}9、将下列哪个代码(A,B,C,D)放入程序中标注的【代码】处将导致编译错误?()A.public float getNum() {return 4.0f;} B.public void getNum() {};C.public void getNum(double d) {}D.public double getNum(float d) {return 4.0d;}class A {public float getNum() {return 3.0f;}}public class B extends A {【代码】}10、下列哪个叙述是正确的?()A. 一个类最多可以实现两个接口B. 如果一个抽象类实现某个接口,那么它必须要重写接口中的全部方法C. 如果一个非抽象类实现某个接口,那么它可以只重写接口中的部分方法D. 允许接口中只有一个抽象方法二、程序填空题。
●下面关于面向对象方法中消息的叙述,不正确的是____(2)__。
(2)A. 键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息C. 应用程序之间可以相互发送消息D.发送与接收消息的通信机制与传统的子程序调用机制不同正确答案:B【解析】在系统中既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此的通信,这样的方法才称为"面向对象的方法"。
●面向对象技术中,对象是类的实例。
对象有三种成份:____(3)____、属性和方法(或操作)。
(3) A. 标识B. 规则C. 封装D. 消息正确答案:A解析:对象有三种成份:标识(对象名)、属性和方法(或操作)。
●在面向对象技术中,类属是一种__(1)__机制。
一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与__(2)__的那些部分,而用变元来表示与__(3)__的那些部分。
(1)A.包含多态B.参数多态C.过载多态D.强制多态(2)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关(3)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关解析:在面向对象技术中,对象在收到信息后要予以响应。
不同的对象收到同一消息可产生完全不同的结果,这一现象称为多态。
多态有多种不同的形式,其中参数多态和包含多态称为通用多态,过载多态和强制多态成为特定多态。
参数多态应用比较广泛,被称为最纯的多态。
这是因为同一对象、函数或过程能以一致的形式用于不同的类型。
包含多态最常见的例子就是子类型化,即一个类型是另一类型的子类型。
过载多态是同一变量被用来表示不同的功能,通过上下文以决定一个类所代表的功能。
即通过语法对不同语义的对象使用相同的名,编译能够消除这一模糊。
强制多态是通过语义操作把一个变元的类型加以变换,以符合一个函数的要求,如果不做这一强制性变换将出现类型错误。
「超市管理系统设计面向对象技术大作业」超市管理系统是一种用于管理超市日常运营的软件系统,旨在提升超市的管理效率和顾客的购物体验。
面向对象技术是一种软件开发的方法论,适用于设计和实现复杂的系统。
本文将从面向对象技术的角度出发,对超市管理系统进行设计。
超市管理系统的主要功能包括商品管理、库存管理、销售管理、顾客管理等。
首先,我们需要定义超市中的概念和对象。
超市可以被视为一个总体,在超市中包含有商品、库存、销售记录、顾客等对象。
商品是超市的核心资源,它们具有属性和方法。
属性可以包括商品名称、价格、库存量、供应商等信息。
方法可以包括查询商品信息、更新库存量等操作。
在面向对象的设计中,我们可以将商品定义为一个类,具有相应的属性和方法。
库存是管理商品数量的关键。
它可以被视为一个集合,其中包含多个商品对象。
库存管理的主要功能包括添加商品、删除商品、更新商品数量等操作。
在面向对象的设计中,我们可以定义库存为一个类,它包含一个商品对象的集合,并提供相应的方法来管理库存。
销售记录用于记录超市的销售情况。
它包含了销售的时间、销售的商品、销售数量、销售金额等信息。
在面向对象的设计中,我们可以定义销售记录为一个类,它具有相应的属性和方法,比如查询销售记录、生成销售报表等。
顾客是超市的重要组成部分,超市管理系统需要能够管理顾客的信息和行为。
顾客可以被定义为一个类,它具有属性和方法。
属性可以包括顾客的姓名、年龄、性别、会员等级等信息。
方法可以包括查询顾客信息、添加顾客、更新会员等级等操作。
超市管理系统还可以包括其他功能,比如会员管理、员工管理、报表生成等。
这些功能可以被定义为相应的类,并实现相应的属性和方法。
同时,这些类之间也存在关系,比如商品与销售记录之间存在关联关系,因为销售记录需要记录销售的商品信息。
在面向对象的设计中,我们需要考虑类的继承、封装和多态等特性。
继承可以用来定义类的层次结构,实现代码的复用和继承的特性。
封装可以用来保护类的内部状态和实现类之间的通信。
系统分析师-面向对象技术(总分61,考试时间90分钟)1. 在某信息管理系统中存在两个类:类“客户”和类“订单”。
它们之间的业务关系是:①一个客户提交零个或多个订单;②一个订单由一个且仅由一个客户提交。
能够正确表示这个业务关系的UML类图是______。
UML提供了4种结构图用于对系统的静态方面进行可视化、详述、构造和文档化。
其中 (17) 是面向对象系统建模中最常用的图,用于说明系统的静态设计视图;当需要说明系统的静态实现视图时,应该选择 (18) ;当需要说明体系结构的静态实施视图时,应该选择 (19) 。
2.A. 构件图B. 类图C. 对象图D. 部署图3.A. 构件图B. 协作图C. 状态图D。
部署图4.A. 协作图B. 对象图C. 活动图D. 部署图5. 以下与“模式”相关的叙述中,正确的是______。
A. 采用设计模式允许在非面向对象程序设计语言中使用面向对象的概念B. 单身模式(Singleton)描述了只有一个方法和属性的类的集合C. 在MVC(模型/视图/控制器)模式中,1个模型可以用于多个视图D. 在MVC模式中,控制器是将应用问题域中包含的抽象领域知识呈现给用户的方式6. 面向对象程序设计语言的______机制,实现了方法的定义与具体的对象无关,而对方法的调用则可以关联于具体的对象。
A. 模板B. 多态C. 动态绑定D. 多重绑定在一个客户信息系统中存在两种类型的客户:个人客户和集团客户。
对于个人客户,系统中保存了其客户标识和基本信息(包括姓名、住宅电话和emil);对于集团客户,系统中保存了其客户标识,以及与该集团客户相关的若干个联系人的信息(联系人的信息包括姓名、住宅电话、email、办公电话和职位)。
根据上述描述,得到了如图1-5所示的UML类图,其中类“客户”的属性有 (33) :类“人”的属性有 (34) 。
7.A. 客户标识B. 姓名、住宅电话、emailC. 姓名、住宅电户、办公电话、email、职位D. 客户标识、办公电话、职位8.A. 客户标识B. 姓名、住宅电话、emailC. 姓名、住宅电户、办公电话、email、职位D. 客户标识、办公电话、职位9. 在以下关于类的相关描述中,不正确的是______。
2010-2011学年第1学期面向对象建模技术模拟试题(A卷)考试时间:2010年12月30日班级学号姓名✧请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰;✧请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸一并交上来。
一、选择题,每题1分,共计20分。
每个括号里的数字为该空的题号,从该题号对应的备选答案中选择最佳的一项,每空限填一个选项。
请按如下表格在答题纸上答此题。
在UML语言中,下图中的a、b、c三种图形符号按照顺序分别表示(1)。
a b c1.供选择的答案:A. 边界对象、实体对象、控制对象B. 实体对象、边界对象、控制对象C. 控制对象、实体对象、边界对象D. 边界对象、控制对象、实体对象(2)设计模式定义了对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
2.供选择的答案:A. Adapter(适配器)B. Iterator(迭代器)C. Prototype(原型)D. Observer(观察者)Round-Trip Engineering能够帮助维持软件架构的完整性。
但(3) 不是Round-trip Engineering 的好处之一。
3.供选择的答案:A. 发现和评估软件架构上的改动B. 为相同的接口提供不同的实现C. 在每次迭代中保持模型和代码的同步D. 传达被接受的架构改动下面4种符号在Rose中表示的模型元素分别为(4)4.供选择的答案:A. 接口(Interface) 类操作(Operation) 时序图(Sequence Diagram) 类属性(Attribute)B. 类操作(Operation) 接口(Interface) 类属性(Attribute) 时序图(Sequence Diagram)C. 接口(Interface) 类属性(Attribute) 类操作(Operation) 时序图(Sequence Diagram)D. 时序图(Sequence Diagram) 类属性(Attribute) 接口(Interface) 类操作(Operation)在建立系统的用例模型时,首先应该确定系统的参与者。
软件设计师-面向对象技术(四)(总分152,考试时间90分钟)一、综合知识试题在UML类图中,类与类之间存在依赖(Dependency)、关联(Association)、聚合(Aggregation)、组合(Composition)和继承(Inheritance)五种关系,其中, (14) 关系表明类之间的相互联系最弱, (15) 关系表明类之间的相互联系最强,聚合(Aggregation)的标准UML图形表示是 (16) 。
1. A.依赖B.聚合C.组合D.继承2. A.依赖B.聚合C.组合D.继承(3) 是指把数据以及操作数据的相关方法组合在同一个单元中,使我们可以把类作为软件中的基本复用单元,提高其内聚度,降低其耦合度。
面向对象中的 (4) 机制是对现实世界中遗传现象的模拟,通过该机制,基类的属性和方法被遗传给派生类。
3. A.封装B.多态C.继承D.变异4. A.封装B.多态C.继承D.变异5. ______是指在运行时把过程调用和响应调用所需要执行的代码加以结合。
A.绑定 B.静态绑定 C.动态绑定 D.继承下列UML类图表示的是 (53) 设计模式。
该设计模式中 (54) 。
6. A.备忘录(Memento) B.策略(Strategy)C.状态(State) D.观察者(Observer)7.A.一个Subj ect对象可对应多个Observer对象B.Subject只能有一个ConcreteSubject子类C.Observer只能有一个ConcreteObserver予类D.一个Subject对象必须至少对应一个Observer对象开一闭原则(Open-Closed Principle,OCP)是面向对象的可复用设计的基石。
开一闭原则是指一个软件实体应当对 (23) 开放,对 (24) 关闭;里氏代换原则(Liskov Substitution Principle,LSP)是指任何 (25) 可以出现的地方, (26) 一定可以出现。
面向对象技术C++(二)一、新单选题(每题2分,共50分。
)1. 重载函数在调用时选择的依据中,(D)是错误的。
A、参数个数B、参数类型C、函数名字D、函数的类型2. 下面选项中不属于面向对象程序设计特征的是(C )。
A、继承性B、多态性C、类比性D、封装性3. 以下一种类中,( A)不能建立对象。
A、抽象类B、派生类C、虚基类D、基类4. 若一个类的成员函数前用static关键字修饰,则该成员函数(B)。
A、可以被声明为constB、没有this指针C、可以访问该类的所有成员D、只能用对象名来调用5. 用来说明类中保护成员的关键字是(C)。
A、publicB、privateC、protectedD、friend6. 下列关于构造函数的描述中,错误的是(B)。
A、构造函数可以设置默认参数;B、构造函数在声明对象时自动执行;C、构造函数可以对静态数据成员进行初始化;D、构造函数可以重载;7. (B )不是属于面向对象程序设计的特性。
A、抽象性B、数据相关性C、多态性D、继承性8. 下列对派生类的描述中,(C ) 是错误的。
A、一个派生类可以作为另一个派生类的基类B、派生类至少应有一个基类C、基类中成员的访问权限被派生类继承后都不改变D、派生类的成员除了自己定义的成员外,还包含了它的基类成员9. main()函数可以访问派生类的对象中它的哪一类基类成员?(A )A、公有继承的基类的公有成员B、公有继承的基类的保护成员C、公有继承的基类的私有成员D、保护继承的基类的公有成员10. 若要将类AClass定义为BClass的友元类,则应该在(B)类中定义。
A、AclassB、BClassC、二个类中都应定义D、在两个类之外定义11. 类的析构函数是在 (C ) 调用的。
A、类创建时B、创建对象时C、删除对象时D、不自动调用12. 假定一个类的构造函数为 F(int aa,int bb) {a=aa++; b=a*bb++;} ,则执行FX(5,5);语句后,X.a和X.b的值分别为(C)。