面向对象复习资料
《面向对象程序设计c》综合复习题集及答案详解

《面向对象程序设计c》综合复习题集及答案详解综合复习题集一、单选题1.C++源程序文件的缺省扩展名为(A)。
A.cppB.e某eC.objD.lik2.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。
A.cppB.e某eC.objD.lik3.由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。
A.cppB.e某eC.objD.lik4.编写C++程序一般需经过的几个步骤依次是()。
A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接5.以下标识符中不全是保留字的是()。
A.caeforintB.defaultthenwhileC.boolclalongD.gotoreturnchar6.能作为C++程序的基本单位是()。
A.字符B.语句C.函数D.源程序文件7.程序中主函数的名字为()。
A.mainB.MAINC.MainD.任意标识符8.C++程序的基本模块为()。
A.表达式B.标识符C.语句D.函数9.可用作C++语言用户标识符的一组标识符是()。
A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaeD.2aDOizeof10.存储以下数据,占用存储字节最多的是()。
A.0B.‘0’C.“0”D.0.011.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车12.设”inta=12;”,则执行完语句”a+=a某a;”后,a的值是()。
A.12B.144C.156D.28813.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式1/abc的表达式是()。
A.1.0/a某b某cB.1/(a某b 某c)C.1/a/b/(float)cD.1.0/a/b/c14.设”inta=15,b=26;”,则”cout<A.15B.26,15C.15,26D.2615.设某是一个bool型的逻辑量,y的值为10,则表达式某&&y的值为()。
C#面向对象程序设计复习试题

1.面向对象分析的第一步是 A 。
A.确定问题域 B.确定附加的系统约束 C.定义服务 D.定义类和对象2.在C#语言中引进了类的概念。
类的定义包括类名,类的说明和类的实现, D 是类的外部接口。
A.类的引用 B. 类的实现 C.类的说明 D.类的标识3. A 是类的内部表示。
A.类的说明 B.类的实现 C.类的标识 D.类的构造4.有了 B 可以隐藏类对象内部实现的复杂细节,有效地保护内部所有数据不受外部破坏。
A.多态性 B.封装性 C.兼容性 D.继承性5. D 增强了类的共享机制,实现了软件的可重用性,简化系统的开发工作。
A.多态性 B.封装性 C.兼容性 D.继承性6. A 可实现函数重载和运算符重载。
A.多态性 B.封装性 C.兼容性 D.继承性7.在面向对象程序设计中,常常将接口的定义与接口的实现相分离,可定义不同的类实现相同的接口。
在程序运行过程中,对该接口的调用可根据实际的对象类型调用其相应的实现。
为达到上述目的,面向对象语言须提供 B 机制。
A.继承和过载B.抽象类C.继承和重置D.对象自身应用8.下面关于面向对象的描述正确的是 A 。
A.针对接口编程,而不是针对实现编程B.针对实现编程,而不是针对接口编程C.接口与实现不可分割D.优先使用继承而非组合9.面向对象程序设计语言为 D 提供支持。
A.面向对象用例设计阶段 B.面向对象分析阶段C.面向对象需求分析阶段 D.面向对象实现阶段10.在面向对象方法中,对象是类的实例。
表示对象相关特征的数据称为对象的 C 。
A.数据变量B.数据结构C.属性D.定义11.在类数据上执行的功能操作称为对象的 A 。
A.行为B.调用C.实现D.函数12.一个对象通过发送 B 来请求另一个对象为其服务。
A.调用语句B.消息C. 命令D.函数13.在面向对象技术中,类属是一种 B 机制。
A.包含多态B.参数多态C.过载多态D.强制多态14.一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与 A 的那些部分。
面向对象程序设计考试复习资料

面向对象程序设计1. 代码public class Test {public int aMethod() {static int i = 0;i++;return i;}public static void main (String args[]) {Test test = new Test();test.aMethod();int j = test.aMethod();System.out.println(j);}}输出结果为编译失败,static用来修饰全局变量,不能修饰局部变量2. 下面的程序中,temp的最终值是1long temp=(int)3.9;temp%=2;3.在J2EE中属于Web层的组件有:Servlet4. 派生类中的成员不能直接访问基类中的private成员。
5.以public修饰的类如:public class Car{…}则Car可被其它程序包中的类使用6.paint( )方法使用 Graphics 类型的参数7. 下面数据插入语言(DIL)不属于SQL语句的子类8. 实现运行时的多态性要使用虚函数。
9. 创建对象时构造函数被调用10. 如下代码:class Base {Base() { System.out.print(“Base”); }}public class Alpha extends Base {public static void main( String[] args ) {new Alpha();-----调用父类无参的构造方法new Base();}}结果是BaseBase。
11.如果希望控件在界面上按表格行分列排列,应使用GridLayout布局管理器12. 声明抽象方法不可写出大括号叙述正确13. 线程交互中不提倡使用stop()方法14.当检索一个压缩文件时,首先要建立压缩文件输入流对象,该对象以 FileInputStream 对象为参数15.jsp指令中isELIgnored="boolean"的意思是决定是否支持EL表示。
C++面向对象技术复习题汇总(含答案)

面向对象程序设计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引入内联函数的主要目的是A)缩短程序代码,少占用内存空间B.既可以保证程序的可读性,又能提高程序的运行效率C)提高程序的执行速度D)使程序的结构比较清晰2重载函数是A)以函数参数来区分,而不用函数的返回值来区分不同的函数B.以函数的返回值来区分,而不用函数参数来区分不同的函数C)参数表完全相同而返回值类型不同的两个或多个同名函数D)参数表和返回值类型都必须是不同的两个或多个同名函数3有函数原型void fun2 (int *), 下面选项中,正确的调用是A)double x = 2.17; fun2 (&x); C) int a = 15; fun2 (a*3.14);B) int b = 100; fun2 (& b); D) fun2 (256);4在C++中,要实现动态联编,必须使用()调用虚函数。
A)类名B)派生类指针C)对象名D)基类指针5在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是A)派生类的对象可以直接访问基类中的所有成员B)派生类的对象可以初始化基类的引用C)派生类的对象可以赋给基类的对象D)派生类的对象的地址可以赋给指向基类的指针6设置虚基类的目的是A)消除两义性B)简化程序C)提高运行效率D)减少目标代码7关于构造函数,以下说法错误的是A)构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。
在对象创建时由系统自动调用。
B)基类的构造函数可以被派生类所继承。
C)如果程序中未声明,则系统自动产生出一个缺省形式的构造函数。
D)允许为内联函数、重载函数、带缺省形参值的函数。
8下列关于C++函数的说明中,正确的是A)内联函数就是定义在另一个函数体内部的函数B)函数体的最后一条语句必须是return语句C)标准C++要求在调用一个函数之前,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式9由于常对象不能被更新,因此A) 通过常对象只能调用它的常成员函数B) 通过常对象只能调用静态成员函数C) 常对象的成员都是常成员D) 通过常对象可以调用任何不改变对象值的成员函数10下列关于虚函数的说明中,正确的是A)从虚基类继承的函数都是虚函数B)虚函数不得是静态成员函数C)只能通过指针或引用调用虚函数D)抽象类中的成员函数都是虚函数11运算符重载是对已有的运算符赋予多重含义,因此A) 可以对基本类型(如int类型)的数据,重新定义“ + 运算符的含义B) 可以改变一个已有运算符的优先级和操作数个数C) 只能重载C++中已经有的运算符,不能定义新运算符D) C++中已经有的所有运算符都可以重载12模板对类型的参数化提供了很好的支持,因此A) 类模板的主要作用是生成抽象类B) 类模板实例化时,编译器将根据给出的模板实参生成一个类C) 在类模板中的数据成员都具有同样类型D) 类模板中的成员函数都没有返回值13下列符号中可以用作C++标识符的是A)_radius B)foo~bar C)else D)3room 14下列语句中,错误的是A)c onst int buffer=256; B)c onst int temp;C)const double *po int; D)const double *rt =new double(5.5);15有如下程序:int x=3;do{x -= 2;cout«x;}while(!(--x));执行这个程序的输出结果是A) 1 B) 3 0C) l-2 D)死循环16有如下程序:#in clude <iostream>using n amespace std;int mai n(){int *p;*p = 9;cout<<"The value at p:"«*p; return 0;}编译运行程序将出现的情况是A) 够编译时出现语法错误,不能生成可执行文件B) 运行时一定输出:The value at p: 9C) 运行时一定输出:The value at p: *9D) 运行时有可能出错17有如下程序:#i nclude <iostream>using n amespace std;int mai n(){void fun cti on( double val);double val;function( val);cout«val;return 0;}void fun cti on( double val){val = 3;}编译运行这个程序将出现的情况是A)编译出错,无法运行B)输出:3C)输出:3.0 D)输出一个不确定的数18有如下类定义:class AA{int a;public:int getRef() const{return &a;} // ①int getValue() con st{return a;} // ②void set(i nt n) con st{a=n;} // ③frie nd void show(AA aa) const {cout<<aa; } // ④ }; 其中的四个函数定义中正确的是A)①B)②C)③D)④19有如下程序:#in clude <iostream>using n amespace stdclass Base{public:void fun() {cout<v"Base::fu n"v<e ndl;};class Derived:public Base{public:void fun(){cout<<"Derived::f un"«en dl;}};int mai n(){Derived d;d.fu n();return 0;}已知其执行后的输出结果为:Base::fu nDerived::fu n则程序中下划线处应填入的语句是A) Base.fu n(); B)Base::fu n() C)Base->fu n() D)fu n(); 20下面是重载为非成员函数的运算符函数原型,其中错误的是A) Fracti on operator + (Fracti on, Fract ion);B) Fractio n operator - (Fracti on);C) Fract ion& operator = (Fracti on&, Fract ion);D) Fract ion& operator += (Fract ion&, Fract ion);21有如下类定义:class Foo{public:Foo(int v):value(v){} // ①~Foo(){} // ②private:Foo(){} // ③in t value = 0; 〃④};其中存在语法错误的行是A)①B)②C)③D)④22有如下类定义:class Point{int x_, y_;public:Poi nt():x_(0), y_(0){}Poi nt(i nt x, i nt y = 0):x_(x),y_(y){}};若执行语句Point a(2), b[3], *c[4];则Point类的构造函数被调用的次数是A)2次B)3次C)4次D)5次23有如下程序:#i nclude <iostream>using n amespace std;class A{public:A(){cout«"A";}~A(){cout«"~A";}};class B:public A{A* p;public:B(){cout<<"B"; p = new A();} ~B(){cout<<"~B"; delete p;} };int mai n(){B obj; return 0;}执行这个程序的输出结果是A)BAA~A~B~A B)ABA~B~A~AC)BAA~B~A~A D)ABA~A~B~A24有如下程序:#i nclude <iostream>using n amespace std;class Base{private:void fun 1() con st{cout«"fu nl";}protected:void fun 2() con st{cout<<"fu n2";} public:void fun 3() con st{cout<<"fu n3";}};class Derived:protected Base{public:void fun4() con st{cout<<"fu n4";}};int mai n(){Derived obj;obj.fu nl (); // ①obj.fu n2(); // ②obj.fu n3(); // ③obj.fu n4(); // ④return 0;}其中有语法错误的语句是A)①②③④B)①②③C)②③④D)①④ 25有如下程序:#i nclude <iostream>using n amespace std;class Base{public:void fun l(){cout«"Base "<<e ndl;}virtual void fun 2(){cout<<"Base"<<e ndl; } };class Derived:public Base{public:void fun l(){cout<v"Derived"v<e ndl;}void fun 2(){cout<<"Derived"<<e ndl;}};void f(Base & b){b.fu nl();b.fu n2();}int mai n(){Derived obj;f(obj);return 0;}执行这个程序的输出结果是A)Base B)BaseC)Derived D)DerivedBasQerived Base Derived26有如下类声明:class SAMPLE{int n;public:SAMPLE (int i = 0): n (i){}void setValue(i nt nO);};下列关于setValue成员函数的实现中,正确的是A) SAMPLE::setValue(i nt n 0){n = n0;}B) void SAMPLE::setValue(i nt n 0){n = n0;}C) void setValue(i nt n 0){n = n0;}D) setValue(i nt n 0){n = n0;}27 •下列函数模板的定义中,合法的是( )。
面向对象程序设计期末复习题资料

面向对象程序设计期末复习题一、单项选择题1.对于类中定义的成员,其隐含访问权限为【 B 】A) public B) private C) static D)protected2.关于类和对象不正确的说法是【 B 】A) 类是一种类型,它封装了数据和操作 B) 一个类的对象只有一个C) 对象是类的实例D) 一个对象必属于某个类3.下面关于对象概念的描述中,【 C 】是错误的。
A)对象代表着正在创建的系统中的一个实体B)对象就是C语言中的结构体变量C)对象是一个状态和操作(或方法)的封装体D)对象之间的信息传递是通过消息进行的4. 使用派生类的主要原因是【 A 】。
A)提高代码的可重用性B)提高程序的运行效率C)加强类的封装性D)实现数据的隐藏5. 有关析构函数的说法不正确的是【D 】A)析构函数有且只有一个B)析构函数无任何函数类型C)析构函数没有形参D)析构函数的作用是在对象被撤消时收回先前分配的内存空间6. 声明一个类的对象时,系统自动调用一个函数;撤消对象时,系统自动调用一个函数;该函数为【 C 】A) 成员函数;构造函数B) 复制构造函数;析构函数C) 构造函数;析构函数D) 析构函数;复制构造函数7. 下列关于运算符重载的描述中,【 D 】是正确的。
A)运算符重载可以改变操作数的个数B)运算符重载可以改变优先级C)运算符重载可以改变结合性D)运算符重载不可以改变语法结构8. 能用友元函数重载的运算符是【 A】。
A)+ B)= C)[] D)->9.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的【 A 】A) private成员B) protected成员C) public成员D) 友元10.在C++中,要实现动态联编,必须使用【D】调用虚函数A) 类名B) 派生类指针C) 对象名D) 基类指针11.若一个类中含有纯虚函数,则该类称为【 A 】A) 抽象类B) 纯基类C) 派生类D) 基类12.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式【 B 】A) ios:: out B) ios:: inC) ios::in|ios::out D) ios::binary13.通常拷贝构造函数的参数是【 C 】。
面向对象的C++理论与实践 复习题

复习题一、全面复习课程内容和所有平时布置的作业、课堂讲过的例题二、练习下列题型示例。
要求掌握各种基本概念和基本原理,学会灵活应用。
1、简要回答下列问题(1)什么是面向对象的程序设计?(2)什么是对象?它有哪些特征?什么是类?对象与类的关系是什么?(3)什么是消息?如何区分公有消息与私有消息?消息具有什么性质?(4)什么是多态性?在面向对象系统中多态性表现在哪些方面?(5)什么是继承性?继承的作用是什么?(6)C++是如何实现数据封装和信息隐藏的?若类间具有继承关系,则它们之间具有什么特征?(7)为什么要引入构造函数和析构函数?它们各有什么特性?(8)this指针的主要作用是什么?静态成员有哪些特性?(9)使用内部(内置)函数的优点是什么?(10)假设在程序中已经声明了类point,并建立了其对象p1和p4。
请回答以下几个语句有什么区别?①point p2,p3; ②point p2=p1; ③point p2(p1); ④p4=p1;(11)友元函数有什么作用?(12)用成员函数重载运算符和用友元重载运算符,在定义和使用上有什么不同?(13)什么是重载?函数重载有几种表现形式?(14)为什么要引入引用概念,在程序设计中它经常被用在什么场合?(15)简述引用与指针的异同。
(16)派生有几种方式,每种方式中派生类对基类成员的继承性如何?(17)派生类构造函数和析构函数的构造规则是什么?执行顺序怎样?(18)什么是多继承?多继承时,构造函数和析构函数执行顺序是怎样的?(19)在C++中的何种情况下要引入虚基类?虚基类的构造函数的调用顺序是如何规定的?(20)保护段成员与公有段成员有何差别?在派生类中如何继承?(21)什么是虚函数?函数重载与虚函数有哪些异同?(22)什么是纯虚函数?什么是抽象类?(23)在什么情况下要引入抽象类?抽象类有什么特点?(24)什么是多重继承的名字冲突?怎样解决多重继承的名字冲突?(25)C++中多态性体现在哪几方面?(26)为什么使用模板?函数模板声明的一般形式是什么?(27)函数模板与同名的非模板函数重载时,调用的顺序是怎样的?2、填空(1)面向对象的程序设计具有等特征。
Java语言及面向对象技术复习资料

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. 允许接口中只有一个抽象方法二、程序填空题。
面向对象程序设计课程复习资料

《面向对象程序设计》课程复习资料一、单项选择题:1.C#中每个 int 类型的变量占用()个字节的内存。
[ ]A.1B.2C.4D.82.C#应用程序中,用主方法指明程序执行的开始点,主方法的名字规定为 [ ]A. classB. mainC. MainD. MainWay3.下面所列的C#自定义标识符中,正确的是 [ ]A.@double B. $double C. #double D. ~double4.C#语言是微软.NET公共语言运行环境中内置的核心程序设计语言,是一种 [ ]A.面向过程程序设计语言B.面向对象程序设计语言C.跨平台程序设计语言D.机器语言5.C#语言中,双精度实型数据类型(double)所占用的存储空间为()个字节。
[ ]A.1B.2C.4D.86.C#应用程序中,导入其他系统预定义元素部分可以使用关键字 [ ]A. useB. namespaceC. importD. using7.下面的运算符中,优先级别最低的是 [ ]A. newB. !=C. ?:D. =8.设有整型变量x,则表达式x=5/8运算后,变量x的值为 [ ]A.0B.0.625C.0.6D.0.639.执行C#语句序列:int i; for (i = 0; i++ < 4; );后,变量i的值是 [ ]A.5B.4C.1D.010.在默认的情况下,省略的类访问修饰符是 [ ]A. privateB. publicC. protectedD. internal11.在下面的类声明中,属于私有字段的是 [ ]class Person{public string name;public string sex;private int age;double weight;}A. name sexB. ageC. weightD. age weight12.下面所列选项中,能够正确定义2行3列二维整型数组a的是 [ ]A. int [][] a = new int [2][3]B. int [ ,] a = new int [2,3]C. int [2][3]D. int [ ,] a = int [2,3]13.下面所列选项中,不能正确定义并初始化二维数组a的是 [ ]A. int [ ,] a = new int [2,3]{{1,2,3},{4,5,6}}B. int [ ,] a = new int [,]{{1,2,3},{4,5,6}}C. int [ ,] a = new int [2,3]{1,2,3,4,5,6}D. int [ ,] a = {{1,2,3},{4,5,6}}14.在C#中,下列()语句能创建一个具有 3 个初始值为""的元素的字符串数组。
UML复习资料(完整)

2011UML复习题纲一、选择、判断、填空第一章UML与面向对象1、UML(Unified Modeling Language,统一建模语言)是软件和系统开发的标准建模语言,它主要以图形的方式对系统进行分析、设计。
2、UML是在多种面向对象分析与设计方法相互融合的基础上形成的,是一种专用于系统建模的语言。
它为开发人员与客户之间,以及开发人员之间的沟通与理解架起了“桥梁”。
3、UML不是开发工具,只是建模语言。
4、OOA三种基本模型:功能模型、对象模型、动态模型。
5、软件是程序、数据和相关文档的完整集合。
6、软件开发过程分为如下几个阶段:需求分析、总体设计、详细设计、编程与测试、维护。
7、面向对象的软件工程方法包括面向对易用的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)。
8、软件方法学包含3个要素:方法、工具和过程。
9、对象是现实世界中一个实际存在的事物,它可以是看得见摸得着的东西。
10、类是一组具有相同属性的操作的对象集合,它为所有属于该类的对象提供了统一的描述。
11、封装是指将对象属性和操作结合在一起,构成一个独立的对象。
封装使得对象属性和操作紧密结合在一起,这反映了事物的状态特性与动作是事物不可分割的特征。
12、继承是指子类可以拥有父类的全部属性和操作,继承是OO方法的一个重要的概念,并且是OO技术可以提高软件开发效率的一个重要原因。
13、多态性是指在父类中定义的属性和操作被子类继承后,可以具有不同的数据类型或表现出不同的行为。
14、OO开发中的三层设计:问题域类、GUI类和数据访问类。
15、面向对象设计准则:模块化、抽象、信息隐藏、低耦合、高内聚。
16、UML的构成:元元模型层、元模型层、模型层、用户模型层。
17、UML的核心是由视图、图、模型元素、通用机制组成。
18、UML中的视图细分:(1)用例视图(用例视图强调从系统的外部参与者角度需要的功能,描述系统应该具有的功能);(2)逻辑视图(逻辑视图的使用者主要是设计人员和开发人员,描述用例视图提出的系统功能的实现);(3)并发视图(并发视图的使用者主要是开发人员和系统集成人员,它主要考虑资源的有效利用、代码的并行执行以及系统环境中异步事件的处理);(4)组件视图(组件是不同类型的代码模块,它是构造应用的软件单元。
面向对象程序设计复习资料

面向对象程序设计复习资料第2章面向对象思维建立面向对象程序设计的特征:①模块化;②抽象化;③封装;④可组合;⑤继承;⑥软件持续使用时间更长。
面向对象思维分为两步:一是需求分析,识别出有哪些对象,它们分别做什么事(who&&what);二是如何利用对象协作完成一件完整的事情(how)。
·类与对象的概念和关系:1)类是面向对象程序设计方法的核心,利用类可以实现对数据的封装和隐蔽。
在面向对象程序设计中,程序模块是由类构成。
类是对逻辑相关的函数与数据的封装,它是对问题的抽象描述。
C++的语法提供了对自定义类型的支持,这就是类。
正如基本数据类型中隐含的数据和操作,因此在定义一个类时也要说明数据和操作。
2)类实际上是一种抽象机制,它描述了一类为问题的属性和行为,即类描述了一类对象的数据存储和操作特征。
每一个怪物都有一些共同的静态特征,这些共同的特征抽象到类中,统称为该类的属性,属性通过声明普通变量来实现。
每一个怪物都有一些共同的动态行为,这些共同的行为抽象到类中,统称为该类的操作,操作通过声明普通变量来实现。
怪物类伪类图:第3章面向对象思维建模UML:统一建模语言或标准建模语言1)类图:常见的UML图,显示了建模的静态结构,特别是模型中存在的类、类的内部结构以及他们与其他类的关系等。
类与类之间的常见关系:①依赖关系:依赖关系的偶然性和临时性——人依赖船②聚合关系:整体与部分之间是可分离的③继承关系:含义:儿子类继承父亲类,不仅继承所有属性和行为,还自己拓展2)时序图:也称为序列图或循序图或顺序图,是一种UML交互图,它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
类图表示“不因时间而变化的部分(静态关系)”;时序图表示“随时间而变化的部分(动态行为)”时序图的元素组成和绘制流程:对象:类的实例;三种状态——激活、运行、销毁生命线:对象在一段时间内的存在激活:对象操作的执行消息:对象之间的通信机制(五类:递归调用、普通操作、返回消息、导步调用)3)用例图:指由参与者、用例以及他们之间的关系构成的用于描述系统功能的视图。
《面向对象程序设计c++》复习题

《面向对象程序设计》综合复习题集一、程序填充1. 1. 已知一个类的定义如下:已知一个类的定义如下:已知一个类的定义如下:#include<iostream.h>class AA {int a[10];int n;public: void SetA(int aa[], int nn); //void SetA(int aa[], int nn); //用数组用数组aa 初始化数据成员a ,// //用用nn 初始化数据成员nint MaxA(); //int MaxA(); //从数组从数组a 中前n 个元素中查找最大值个元素中查找最大值void SortA(); //void SortA(); //采用选择排序的方法对数组采用选择排序的方法对数组a 中前n 个元素个元素// //进行从小到大排序进行从小到大排序进行从小到大排序void PrintA(); //void PrintA(); //依次输出数组依次输出数组a 中的前n 个元素,个元素,// //最后输出一个换行最后输出一个换行最后输出一个换行};使用该类的主函数如下:使用该类的主函数如下:使用该类的主函数如下:void main() {int a[10]={23,78,46,55,62,76,90,25,38,42};___AA x___;x.SetA(a,8);int ___m___;_m=x.MaxA()___;x.PrintA();cout<<m<<endl;}该程序运行结果为该程序运行结果为该程序运行结果为: : 23 25 46 55 62 76 78 9090(1) (2) (3)2 2..class A {char *a;public:A( ){ a=NULL;} _______________ // A( ){ a=NULL;} _______________ //定义无参构造函数,使定义无参构造函数,使a 的值为空的值为空A(char *aa) {a=_new char[strlen(aa)];strcpy(a,aa); // strcpy(a,aa); //用用aa 所指字符串初始化a 所指向的动态存储空间所指向的动态存储空间}~A( ){ delete []a; } // ~A( ){ delete []a; } //定义析构函数,删除定义析构函数,删除a 所指向的动态存储空间所指向的动态存储空间};(1) (2) (3)int a,b;public:A(int aa=0, int bb=0){ a=aa;b=bb;} // A(int aa=0, int bb=0){ a=aa;b=bb;} //分别用分别用aa 和bb 对应初始化a 和b };main() {A x(5),y(x) ; // A x(5),y(x) ; //定义类定义类A 的对象x 并用5初始化,同时定义y 并用x 初始化初始化A *p=&x ; // A *p=&x ; //定义定义p 指针,使之指向对象x }(1) (2) (3)3.class A {int a,b;public:___(1)__A_(int aa=0,int bb=0) // ___(1)__A_(int aa=0,int bb=0) //定义构造函数,使参数定义构造函数,使参数aa 和bb 的默认值为0, A=aa;b=bb; // A=aa;b=bb; //在函数体中用在函数体中用aa 初始化a ,用bb 初始化b};main() { A *p1, *p2;___(2)p1=new A();___ ; // ___(2)p1=new A();___ ; //调用无参构造函数生成由调用无参构造函数生成由p1指向的动态对象指向的动态对象___(3)_p2=new A(4,5)__ ; // ___(3)_p2=new A(4,5)__ ; //调用带参构造函数生成由调用带参构造函数生成由p2指向的动态对象,指向的动态对象, // //使使a 和b 成员分别被初始化为4和5}(1) (2) (3)4. #include<iostream.h>#include<stdlib.h>class A { int *a; int n; int MaxLen;public:A(): a(0), n(0), MaxLen(0) {}A(int *aa, int nn, int MM) {n=nn;MaxLen=MM;if(n>MaxLen) exit(1);___(1)_a=new int[MaxLen]__; // ___(1)_a=new int[MaxLen]__; //由由a 指向长度为MaxLen 的动态数组的动态数组 for(int i=0; i<n; i++) a[i]=aa[i];}~A() {delete []a;}int GetValue(int i) ___(2)___ // int GetValue(int i) ___(2)___ //函数体返回函数体返回a[i]a[i]的值的值的值};void main(){int b[10]={1,2,3,4,5,6,7,8,9,10};A r(b,10,10);int i,s=0;// //元素值依次累加到元素值依次累加到s 中cout<<"s="<<s<<endl;}(1) (2) (3)5. #include<iostream.h> #include<stdlib.h>class A {int *a; int n; int MaxLen;public:A(): a(0), n(0), MaxLen(0) {}A(int *aa, int nn, int MM) {n=nn;MaxLen=MM;if(n>MaxLen) exit(1);a=new int[MaxLen];___(1)___; // ___(1)___; //以以i 为循环变量把aa 数组中每个元素值数组中每个元素值 // //传送给传送给a 数组的对应元素中数组的对应元素中}~A();int GetValue(int i) {return a[i];} // int GetValue(int i) {return a[i];} //函数体返回函数体返回a[i]a[i]的值的值的值};___(2)___ //___(2)___ //析构函数的类外定义析构函数的类外定义析构函数的类外定义void main(){int b[10]={1,2,3,4,5,6,7,8,9,10}; A r(b,10,10);int i,s=0;___(3)___ ; // ___(3)___ ; //以以i 为循环变量,把r 对象的a 数据成员中的数据成员中的// //每个元素值依次累加到每个元素值依次累加到s 中cout<<"s="<<s<<endl;}(1) (2) (3)6. 6. 一种类定义如下一种类定义如下一种类定义如下: :class Goods{private:char gd_name[20]; // char gd_name[20]; //商品名称商品名称商品名称int weight; // int weight; //商品重量商品重量商品重量static int totalweight; // static int totalweight; //同类商品总重量同类商品总重量同类商品总重量public:Goods (char*str,int w){ //Goods (char*str,int w){ //构造函数构造函数构造函数weight=w;totalweight+=weight;}~ Goods (){totalweight -= weight;}char* GetN(){___(1)___;} // char* GetN(){___(1)___;} //返回商品名称返回商品名称返回商品名称int GetW(){return weight;}___(2)___ GetTotal_Weight() { //___(2)___ GetTotal_Weight() { //定义静态成员函数返回总重量定义静态成员函数返回总重量定义静态成员函数返回总重量 ___(3)___;}}(1) (2) (3)7.class Point{private:int x, y; public:Point(){x=y=0;}Point(int x0,int y0) {x=x0;y=y0;}int GetX() { return x; }int GetY() { return y; }void Print(){cout<<"Point("<<x<<","<<y<<")"<<endl;}___(1)___; // ___(1)___; //友元函数声明友元函数声明友元函数声明___(2)___; // ___(2)___; //友元函数声明友元函数声明友元函数声明};Point operator+(Point& pt,int dd) // //加号操作符重载函数,实现加号操作符重载函数,实现Point 类对象与整数加法类对象与整数加法{Point temp=pt;temp.x+=dd;temp.y+=dd;return temp;}Point operator+(Point& pt1,Point& pt2)// //加号操作符重载函数,实现两个加号操作符重载函数,实现两个Point 类对象的加法类对象的加法{Point temp=pt1;temp.x+=pt2.x;___(3)___;return temp;}(1) (2) (3)8. 8. 在下面一段类定义中,在下面一段类定义中,Derived 类是由直接基类Base 1和Base 2所派生的,Derived 类包含有两个间接基类BaseBase BaseBase,在初始化函数,在初始化函数Init 中,需要把x1和x2的值分别赋给属于基类Base1的x 成员和属于基类Base2的x 成员。
面向对象复习提纲

1.简述软件开发过程的实质(2-5)软件开发过程的实质是建模的过程:在开发过程中定义并构建一系列模型,通过这些模型越来越详细地描述系统,直到对需求的充分了解,能够开始编程。
2.述说Rational Unified Process的三个核心特征(1-16)受控的迭代(Iterative)式增量(Incremental)开发(将软件开发过程分为一系列小的迭代过程,在每个迭代过程中逐步增加信息、进行细化;根据具体情况决定迭代的次数、每次迭代延续的时间以及迭代工作流;每次迭代都选择目前对风险影响最大的用例进行,以分解和降低风险。
)用例(Use Cases)驱动(采用用例来捕获对目标系统的功能需求;采用用例来驱动软件的整个开发过程,保证需求的可跟踪性,确保系统所有功能均被实现;将用户关心的软件系统的业务功能模型和开发人员关心的目标软件系统的功能实体模型结合起来,提供一种贯穿整个软件生存周期的开发方式,使得软件开发的各个阶段的工作自然、一致地协调起来。
)以软件体系结构为中心(在开发过程的早期形成良好的软件体系结构,有利于对系统的理解、支持重用和有效的组织软件开发;在后续阶段中对已形成的体系结构框架进行不断细化,最终实现整个系统;)3.软件生命周期的几个阶段(1-8)软件生命周期:从软件的立项开发到软件的最终消亡的全过程。
包括:需求分析(Requirement Analy sis);软件设计(Software Design);编码(Coding/Programming);测试/调试(T esting/Debug);运行/维护(Running/Maintenance)4.UML的“4+1”视图(2-21)Use Case 视图:用于描述系统的功能集,它是从系统使用者的角度出发,对系统的抽象表示。
它只考虑系统提供什么样的功能。
包括以下图:用例图、序列图、协作图和活动图。
Logical 视图:用来表示系统的概念设计、详细设计、子系统结构、动态模型等,包括类图、包的组织方式。
UML复习

UML复习资料(整理)一、关于面向对象方法论OOM1. 结构化分析与设计的主要特点:A. 功能分解.以实现功能的过程为中心,而用户的需求变化主要是针对功能的。
这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好B. 自顶向下.边界定义明确,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改C. 数据与操作分离,可能造成软构件对具体应用环境的依赖,可重用性(reusability)较差2. 面向对象方法与结构化方法的区别?传统结构化方法面向对象方法(UML建模工具为例)需求模型输入I、处理P、输出O的视角,面向功能的文档(用户需求规格说明书)需求变化,其功能变化,所以系统的基础不稳固从用户和整体角度出发使用系统抽象出用例图、活动图,获取需求;如需求变化,对象的性质相对功能稳定,系统基础稳定分析模型面向过程的数据流图DFD、实体—关系图ERD、数据字典DD表示分析模型功能分解,数据和功能/过程分开把问题作为一组相互作用的实体,显式表示实体间的关系数据模型和功能模型一致类、对象图表示分析模型,状态、顺序、协作、活动图细化说明设计模型功能模块(SC图),模块之间的连接/调用是模块的附属形式类和对象实现, 类/对象的关联、聚集、继承等连接、连接规范和约束作为显式定义实施模型体系结构设计构件图,配置图测试模型根据文档进行单元测试,集成测试,确认测试单元测试采用类图,集成测试用实现图和交互图,确认测试采用用例图3. 什么是面向对象方法,以及其要点?答:OO方法是基于“对象、类、封装性、继承性、多态性、消息机制等技术特征”的构造系统的软件开发方法。
它有以下一些特点:(1)客观世界由具有各种对象组成。
OO的软件系统也是由对象组成的,任何复杂的软件都是由简单的对象以及对对象的处理组合而成的。
(2)所有对象都可以划分为不同的对象类,具体的对象只是对象类中的一个实例,每个对象都有自己特定的数据和方法(对数据的操作)。
电大面向对象程序期末复习题目与答案(精选)

电大面向对象程序期末复习题目与答案(精选)一、单选题,在括号内填写正确的选项编号{每小题2分,共20分)1.对象是构成现实世界的一个独立单位,它具有自己的静态特征和()特征。
A.颜色B.动态 c.状态 D 重量2.使用JDK编译Java程序时使用的命令是( )。
A. javaB. javacC. appletviewer D javadoc3.包含主方法的类被称为主类,主方法的存储控制属性应定义为()。
A. finalB. abstractC. short Do static4.在类的定义中,若需要把一个属性或方法定义为类成员,而不是实例成员,则使用的修饰符为( )。
A. constB. finalC. static D public5.JaV3 语言中规定的转义字符,以()字符作前缀。
A. B.I C. / D.\6.把对象的属性和服务组合成一个独立的整体,尽可能隐蔽其内部的细节,这称为对象的()。
A.封装性B.多态'性C.继承性D.开放性7.具有()访问权限的成员能够被本类和其他任何类中的成员所访问。
A. publicB. protectdC. privateD.缺省8.在类定义首部的语法格式中,()不能作为其中的修饰符。
A. publicB. protectdC. extendsD. abstract9.下面的关键字( )与异常处理无关。
A. throwB. throwsC. importD. finally10.下面( )既可以作为流的数据源,又可以作为流的目的地。
A.键盘B.磁盘文件c.显示器D.扫描仪二、是非判断题,在每小题后面括号内打上对号、/表示叙述正确,打上叉号×表示叙述错误11. Java既支持类的单继承,又支持类的多重继承。
( )12.在一个派生类中,能够定义与上层父类中的成员具有相同名称的成员。
( )13.派生类可以直接访问从父类中继承下来的所有成员。
( )14.在Java语言中,可以把实现了一个接口的类对象,赋给这个接口的引用对象。
面向对象复习题

第一部分面向对象方法概述、填空题I•对象的抽象是______________ ,类的实例是_______________ 。
2.动态模型描述了系统的_________________ 结构。
3.软件系统中存在两种控制流,外部控制流是系统中对象之间外部事件的事件流,有 _______ 、_________ 和_________ 三种外部事件控制流。
_____________ 控制流是一个处理内部的控制,均可结构化。
4.在C++和C中有一个 ______________ 函数,可以使用这个过程来说明构成系统主要对象的那些类的实例。
5.继承性是__________ 自动共享父类属性和________________ 的机制。
6.对象具有封装性,实现了_______________ 的组合。
7.在面向对象方法中,信息隐藏通过对象的_____________ 来实现。
类结构分离了和 _______ ,从而支持了信息隐藏。
8.抽象是指强调实体的_____________ 、________ ,忽略一些无矢紧要的属性。
类实现了对象的 _____ 和_______ 的抽象,它是对象的共性的抽象。
9.子类只继承的属性和操作,称为单重继承。
10.对象的抽象是_________________ ,类的具体化就是__________________ ,也可以说类的实例II _______________ •类具有 _______ ,它是的行动的抽象。
12.对象具有状态,对象用______________ 来描述它的状态。
13.概念模型描述了系统的。
功能模型指出,动态模型确定____________ ,而对象模型确定 ______________ 。
功能模型由________________ 组成。
14.面向对象有三个基本要素,它们是____________________ 、___________ 、_____________ 。
《面向对象分析与设计UML》期末总复习

《⾯向对象分析与设计UML》期末总复习《⾯向对象分析与设计UML》期末总复习1、题型介绍:选择题20 * 1分= 20分填空题 5 * 2分= 10分简答题 6 * 5分= 30分分析题3题(第⼀题12分,第⼆题12 ,第三题18分)= 40分2、选择题1、()不是对象具有的特性。
A.标识B.继承C.顺序D.多态性2、封装是把对象的()结合在⼀起,组成⼀个独⽴的对象。
A.属性和操作B.信息流C.消息和事件D.数据的集合3、()不是⾯向对象的典型⽅法。
A.Coad& Yourdon ⽅法B.维也纳⽅法C.OMT⽅法D.Booch⽅法4、UML中有4种关系,分别是依赖、泛化、关联和()A.集成B.合作C.实现 D 抽象5、下列关于状态图的说法中,正确的是()A.状态图是UML中对系统的静态⽅⾯进⾏建模的5种图之⼀。
B.状态图是活动图的⼀个特例,状态图中的多数状态是活动状态。
C.状态图是对⼀个对象的⽣命周期进⾏建模,描述对象在其⽣存期间的动态⾏为。
D.状态图强调对有⼏个对象参与的活动过程建模,⽽活动图更强调对单个反应型对象建模。
6、UML的()模型图由类图、对象图、包图、组件图、和部署图组成。
A.⽤例7、UML的()模型图活动图、顺序图、状态图、写协作图组成。
A.⽤例B.静态C.动态D.系统。
8、UML的最终产物就是最后提交的可执⾏的软件系统和()A.⽤户⼿册B.类图C.动态图D.相应的软件⽂档资料9、在UML的需求分析建模中,()模型图必须与⽤户反复交流并加以确认。
A.配置B.⽤例C.包D.动态10、下⾯不是⽤例之间主要关系的是()A.扩展B.包含C.依赖D.泛化11、对于⼀个电⼦商务⽹站⽽⾔,以下不适合作为⽤例的选项是()A.登录B.预定商品C.购物车D.结账12、UML的客户需求分析模型包括()模型、类图、对象图和活动图。
A.⽤例B.静态C.动态D.系统13、UML客户需求分析产⽣的⽤例模型描述了系统的()A.状态B.体系结构14、在UML的需求分析模型中,⽤例建模必须与()反复交流并加以确认。
面向对象程序设计考前复习题及答案

简答题1、传统的结构化程序设计的优点和缺点是什么?优点:(1)这种程序设计方法力求算法描述精确。
(2)对每一子过程模块简单进行程序正确性证明。
缺点:(1)这种程序设计方法本质上是面对“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能干脆反映人类求解问题的思路。
(2)程序代码可重用性差。
程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。
即使重用代码,通常也是通过拷贝或编辑重新生成一份。
(3)维护程序的一样性困难。
该种方法将数据与对数据进行处理的程序代码分别。
2、什么是对象?每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。
对象的属性描述了对象的状态和特征,对象的方法说明白对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。
3、什么是消息?在面对对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。
当一个对象须要另外一个对象供应服务时,它向对方发出一个服务恳求,而收到恳求的对象会响应这个恳求并完成指定的服务。
这种向对象发出的服务恳求就称为消息。
4、什么是多态性?所谓多态性是指当程序中的其他部分发出同样的消息时,根据接收消息对象的不同能够自动执行类中相应的方法。
其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大便利。
5、什么是面对对象的程序设计方法?这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。
在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法确定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。
6、面对对象方法的特点是什么?(1)OOP以“对象”或“数据”为中心。
由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更困难的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的变更对整个系统几乎没有影响。
C面向对象程序设计重点复习

面向对象程序设计复习题一、单项选择题1.下面关于对象概念的描述中,_______是错误的;BA.对象代表着正在创建的系统中的一个实体B.对象就是C语言中的结构体变量C.对象是一个状态和操作或方法的封装体D.对象之间的信息传递是通过消息进行的2. 继承机制的作用是: CA.信息隐藏B.数据封装C.定义新类D.数据抽象3.有关析构函数的说法不正确的是_________DA.析构函数有且只有一个B.析构函数无任何函数类型C.析构函数没有形参D.析构函数不能是虚函数4.友元的作用之一是__________AA.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏性D.增加成员函数的种类5.通常拷贝构造函数的参数是__________;CA.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名6.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是________;Cshow=0; void show;void show=0; show=0 virtual;7.下面关于友元的描述中,错误的是_________;DA.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承8.在C++中,_________运算符不能重载;BA. +B.: D.<=9.下列关于运算符重载的描述中,________是正确的;DA.运算符重载可以改变操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构10. 在下列函数原型中,可以作为类AA构造函数的是_________DA.void AAint ; B.int AA ; C.AAintconst; D.AAint;11.在声明类时,下面的说法正确的是_________;CA.可以在类的声明中给数据成员赋初值B.数据成员的数据类型可以是register,public,protected可以按任意顺序出现D.没有用private,public,protected定义的数据成员是公有成员12.继承具有________,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员;BA.规律性B.传递性C.重复性D.多样性13.在多重继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则___________;AA.完全相同B.完全不同C.部分相同,部分不同D.以上都不对14.对虚函数的调用__________;DA.一定使用动态联编B.必须使用动态联编C.一定使用静态联编D.不一定使用动态联编15.关于成员函数特征的下述描述中,_______是错误的;AA.成员函数一定是内置函数B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的16. 下面关于c++语言变量的叙述错误的是_______BA.在c++语言中变量分为auto,static,extern和register四种存储类型B.自动变量和外部变量的作用域为整个程序C.内部变量的作用域是定义它的函数D.外部静态变量的作用域是定义它的文件17.下列的各类函数中,_______不是类的成员函数;CA.构造函数B.析构函数C.友元函数D.拷贝构造函数18. 有如下类声明:class Foo {ing bar ;};则Foo类的成员bar是_________CA.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数19.下列表示引用的方法中,__________是正确的;已知:int m=10; DA. float &t=&m; &y=10; &z; D. int &x=m;20.设置虚基类的目的是________;BA.简化程序B.消除二义性C.提高运行效率D.减少目标代码21.对于类中定义的成员,其隐含访问权限为________B22.关于类和对象不正确的说法是________ BA.类是一种类型,它封装了数据和操作B.一个类的对象只有一个C.对象是类的实例D.一个对象必属于某个类23.声明一个类的对象时,系统自动调用一个函数___c___;撤消对象时,系统自动调用一个函数;该函数为___c___A.成员函数;构造函数B.复制构造函数;析构函数C.构造函数;析构函数D.析构函数;复制构造函数24.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的__A______ 成员成员成员 D.友元25.在C++中,要实现动态联编,必须使用_____D___调用虚函数A.类名B.派生类指针C.对象名D.基类指针26.若一个类中含有纯虚函数,则该类称为____A____A. 抽象类B. 纯基类C.派生类D. 基类27.下列关于this指针的叙述中,正确的是___D_____A.任何与类相关的函数都有this指针B.类的成员函数都有this指针C.类的友元函数都有this指针D.类的非静态成员函数才有this指针28.有如下类声明:class Book {int num ;};则Book类的成员num是___D_____A.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数29.下面有关重载函数的说法中正确的是___C_____A.重载函数必须具有不同的返回值类型;B.重载函数形参个数必须不同;C重载函数必须有不同的形参列表; D.重载函数名可以不同;30.设置虚基类的目的是___A_____A.消除二义性B.简化代码C.提高运行效率D.减少目标代码31.在C++语言程序中,对象之间的相互通信通过___B_____A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现32.下列运算符中,在C++语言中不能重载的是__C______A. B.>= C.:: D./33.下面对友元函数描述正确的是___C_____A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员34.下面叙述不正确的是___A_____A.基类的保护成员在派生类中仍然是保护成员B.基类的保护成员在公有派生类中仍然是保护成员C.基类的保护成员在私有派生类中是私有成员D.对基类成员的访问必须是无二义性35.下面对静态数据成员的描述中,正确的是___D_____A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以被类的对象调用C.静态数据成员不能受private控制符的作用D.静态数据成员可以直接用类名调用36.在C++类语言体系中,不能被派生类继承的有_______BA.转换函数B.构造函数C.虚函数D.静态成员函数37.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是____C____A.友元函数B.虚函数C.构造函数D.析构函数38.下列关于虚基类的描述中,错误的是_B_______A.设置虚基类的目的是为了消除二义性;B.虚基类的构造函数在非虚基类之后调用;C.若同一层包含多个虚基类,这些基类的构造函数按照它们的次序调用;D.若虚基类由非基类派生而来,则仍然先调用基类构造函数,再用派生类的构造函数;39.考虑函数原型voidtestinta,int b=7,char="",下面的函数调用中,属于不合法调用的是___C_____A. test5 5,8 6,"" 0,0."";40.下列关于构造函数的描述中,错误的是___D_____A.构造函数可以设置默认参数;B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数;D.构造函数不可以重载41.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是 ; DA.一元成员运算符 B.二元成员运算符 C.一元友元运算符 D.选项B和选项C都可能42.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是 ; CA.派生类的对象可以赋给基类的对象 B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员 D.派生类的对象的地址可以赋给指向基类的指针43.下面关于虚函数的描述,错误的是 ; BA.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数C.虚函数可以是另一个类的友元函数,但不能是静态成员函数D.基类中说明的纯虚函数在其任何派生类中都必须实现44.定义派生类时,若不使用关键字显示地规定采用何种继承方式,则默认方式为 ; AA.私有继承 B.非私有继承 C.保护继承 D.公有继承45.有如下程序:includeusing namespace std;class ONE{int c;public:ONE:c0{cout<<1;}ONEint n:cn{cout<<2;}};class TWO{ONE onel;ONE one2;public:TWOint m:one2m{cout<<3;}};int main{TWO t 4 ;return 0 ;}运行时的输出结果是 ; CA.3B.23C.123D.21346.关于静态数据成员的描述中正确的是DA类的静态数据成员不是类的所有对象共享的数据B类的静态数据成员不能被类的成员函数调用C类的静态数据成员不能被类的构造函数调用D类的静态数据成员必须进行初始化47下面正确的是,在父类中的访问属性访问修饰符在子类中的访问属性CApublic,private不能直接访问 Bprotect,public,publicCprivate,public不能直接访问 Dprotect,private,protect48类A是类B的友元,类B是类C的友元,则下列说法正确的是DA类B是类A的友元B类C是类A的友元C类A是类C的友元D以上都不对49下列关于构造函数说法不正确的是CA构造函数必须与类同名 B构造函数可以省略不写C构造函数必须有返回值 D在构造函数中可以对类中的成员进行初始化50.类的析构函数的作用是DA一般成员函数的初始化 B类的初始化C对象的初始化D删除类创建的对象51.下列说法正确的是BA内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C类的内联函数必须在类体内定义D类的内联函数必须在类体外通过加关键字inline定义52.下面对静态数据成员的描述中,正确的是DA静态数据成员可以在类体内进行初始化B静态数据成员不可以被类的对象调用C静态数据成员不能受private控制符的作用D静态数据成员可以直接用类名调用二、知识点1.实现运行时的多态性要使用虚函数;2.如果一个类至少有一个纯虚函数,那么就称该类为抽象类;3. 运算符重载不能改变操作符的个数、运算符的优先级、运算符的结合性和运算符的语法结构;4. 构造函数是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作;5. 静态成员函数不能直接引用类中说明的非静态成员;6. 引用是给对象取一个别名,它引入了对象的同义词;7.设置友元函数的目的是为能够访问该类的私有成员;8.运算符重载仍然保持原来的优先级、结合性和语法结构;9.基类的私有成员不能被派生类的成员访问;10.静态联编支持的多态性称为编译时的多态性,也称静态多态性;11.任何类中允许有三种访问权限的数据,这三种访问权限分别是public、private、protected;12.为了满足运算符“+”的可交换性,必须将其重载为友元函数;13.对于含有对象成员的派生类,其构造函数的执行顺序为:先执行基类的构造函数、再执行对象成员的构造函数,后执行派生类的构造函数;14.利用成员函数对双目运算符重载,其左操作数为this指针指出的对象,右操作数为成员函数参数;++允许在相同的作用域内以相同的名字定义几个不同实现的函数,称这种同一个函数名多个含义的现象为函数重载;16.通过使用new和delete两个运算符进行的分配为动态存储分配;17.当类定义中有数据成员为指针时,解决浅拷贝出现的运行错误的方法是编写拷贝构造函数;18.如果使用protected继承基类,其公有成员就会变成派生类的保护成员,其保护成员就会变成派生类的保护成员,其私有成员不能继承19.一个函数功能不太复杂但要求被频繁调用,应定义为内联函数;20.抽象类只能作为基类使用,而不能声明它的对象;21.构造函数可以重载,析构函数不可以重载;22.静态成员函数没有this指针;23.类有两个特殊的成员函数构造函数和析构函数;24.在表达式x+yz中,+是作为成员函数重载的运算符,是作为非成员函数重载的运算符;其中operator+有一个参数,operator有两个参数;25.一个派生类只有一个基类的情况称为单继承,而有多个直接基类的情况称为多继承;26.调用析构函数的次序正好与调用构造函数的次序相反;27. 非成员函数应说明为类的友元函数才能访问这个类的private成员;28. 通过使用new和delete两个运算符进行的分配为动态存储分配;29.如果类B继承了类A,则称类A为类B的基类,类B称为类A的派生类30. 表达式operator+x,y还可以表示为x+y ;31 C++语言中的多态性分为编译时的多态性和运行时的多态性;32将x+yz中的"+"用成员函数重载,""用友元函数重载,应解释为x. operator+operatory,z33如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是friend void A ;34派生类的成员一般分为两部分,一部分是从基类继承的成员,另一部分是自己定义的新成员;35继承的方式有公有继承、私有继承和保护继承3种;。
UML面向对象技术期末复习整理

UML面向对象技术期末复习整理UML面向对象技术期末复习整理第一章1、UML支撑软件整个生命周期2、对象:面向对象系统的基本构造块,是一些相关的变量和方法的软件集3、事件:指一种由系统预先定义而由用户或系统发出的动作4、面向对象的基本特征:抽象,封装,继承,多态5、模型:对现实客观世界的形状或状态的抽象模拟和简化6、UML定义:是对软件密集系统进行可视化建模的一种语言,也是为面向对象开发系统的产品进行说明、可视化、构造和编制问的一种标准语言7、UML可贯穿软件开发周期的每一阶段,最适用于数据建模、业务建模、对象建模、组件建模填空题1、统一建模语言UML是绘制软件蓝图的标准工具语言,可以对软件系统产品进行说明、可视化、构造和编制文档2、UML在实际软件项目中,可以用于构造各种类型系统的业务模型和软件模型。
3、软件的开发模式有瀑布模型、喷泉模型、基于构件的开发模型和XP方法。
4、面向对象程序的三大要素是多态、封装和继承。
5、瀑布模型的缺点是缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
选择题1、对象程序的基本特征是:抽象、封装、继承、多态2、类包含的要素有:名字、属性、操作3、下列关于类与对象的关系说法不正确的是:有些对象是不能被抽象类的4、面向对象方法中的继承机制是子类可以自动地拥有(复制)父类全部属性和操作5、建立对象的动态模型一般包含的步骤有:准备脚本、确定事件、准备事件跟踪表、构造状态图第二章1、UML的概念和模型分为静态结构、动态行为、实现构造、模型组织和扩展机制这几个机制2、面向对象的事物分为:结构事物、行为事物、分组事物、注释事物3、结构事物是UML模型中的名词部分,结构事物分为:类、接口、协作、用例、主动类、构件和结点4、行为事物是指UML模型的相关动态行为,是UML模型的动态部分,它可以用来描述跨越时间和空间的行为。
行为事物是分为:交互和状态机。
5、分组事物:UML对模型中的各种组成部分进行事物分组的一种机制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复习资料模拟题一一、单项选择题1.C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是( )A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念2.下列符号不能组成标识符的是( )A.连接符B.下划线C.大小写字母D.数字字符3.类型修饰符unsigned不能修饰( )A. charB. intC. long intD. float4.在int a=3,int *p=&a;中,*p的值是( )A.变量a的地址值B.无意义C.变量p的地址值D.35.下列关于指针的操作中,错误的是( )A.两个同类型的指针可以进行比较运算B.可以用一个空指针赋给某个指针C.一个指针可以加上两个整数之差D.两个同类型的指针可以相加6.重载函数在调用时选择的依据中,错误的是( )A.函数的参数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.数据抽象12.类的析构函数的作用是( )A.一般成员函数B.类的初始化C.对象的初始化D.撤消对象时所做的清理工作13.类的析构函数是在( )调用的。
A.类创建时B.创建对象时C.删除对象时D.不自动调用14.在( )情况下适宜采用inline定义内联函数。
A.函数体含有循环语句B.函数体含有递归语句C.函数代码少、频繁调用D.函数代码多、不常调用15.如果类A被说明成类B的友元,则( )A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元二、填空题1.对象的三大基本特性是多态性、___ ____、封装性。
2.C++语言的函数参数传递方式有传值和____ ___。
3.重载赋值操作符时,应声明为___ ____函数。
4.用__ _____声明的基类称为虚基类。
5.用_____ __声明函数称为虚函数。
6.派生类对基类继承控制访问有三种。
派生类可以定义其基类中不具备的___ ____。
7.静态成员是对象的成员,__ _____函数不是类的成员。
8.在函数体之前加___ ____关键字可以防止覆盖函数改变数据成员的值。
9.一个const对象只能访问__ _____成员函数。
10.使用友元函数是为了提高程序效率,且节约了___ ____开销。
三、完成程序题1.完成下面类中的成员函数的定义。
class test{private:int num;float x;public:test(int n,float f);test(test&);};test::test(int n,float f){num=n;_______;}test::test(text& t){_______;x=t.f1;}2.根据下面的主程序,完成类说明的最小形式(不要求实现成员函数的定义)。
#include <iostream.h>class base{private:_______;public:_______;};void main(){base try(6);}3.一个类的头文件如下所示,程序main产生对象T,且T.num=10,并使用P( )函数输出这个对象的值。
class test{private:int num;public:test(int);void show();}test::test(int n){ num=n;}test::P(){cout<<num<<endl;}#include<iostream.h>void main(){_______;_______;}四、综合应用题1.分析下列程序可能的输出结果。
class test{private:int num;public:test();int TEST() {return num;}~test();};test::test(){num=0;}test::~test(){cout<<″Destructor is active″<<endl;}void main(){test x[3];cout<<″Exiting main″<<endl;}模拟题二一、单项选择题说明:在本试卷中统一规定整型(int)数据占用4个字节的存储单元。
1、在每个C++程序中都必须包含有这样一个函数,该函数的函数名为( )A. mainB. MAINC. nameD. function2、设x和y均为bool量,则x&&y为真的条件是( )A. 它们均为真B. 其中一个为真C. 它们均为假D. 其中一个为假3、下面的哪个保留字不能作为函数的返回类型?( )A. voidB. intC. newD. long4、假定a为一个整型数组名,则元素a[4]的字节地址为( )A. a+4B. a+8C. a+16D. a+325、假定AB为一个类,则执行“AB a(4) , b[3] , * p[2] ;”语句时,自动调用该类构造函数的次数为( )A. 3B. 4C. 6D. 96、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:( )A. AB operator+(AB&a,AB&b)B. AB operator+(AB& a)C. operator+(AB a)D. AB & operator+( )二、填空题1、C++语言中的每条基本语句以作为结束符,每条复合语句以作为结束符。
2、执行“cout <<char('A'+2)<<endl;”语句后得到的输出结果为。
3、float 和double 类型的大小分别为和。
4、算术表达式(xy2/3a)+4b-1对应的C++表达式为。
5、关系表达式x+y>5的相反表达式为。
6、假定一个一维数组的定义为“char * a[8] ;”,则该数组所含元素的个数为,所占存储空间的字节数为。
7、变量分为全局和局部两种, 变量没有赋初值时,其值是不确定的。
8、假定a是一个二维数组,则a[i][j]的指针访问方式为。
9、假定一个结构类型定义为“struct D{int a;union{int b;double c;}; D * d[2] ; } ;”,则该类型的大小为字节。
10、对一个类中的数据成员的初始化可以通过构造函数中的实现,也可以通过构造函数中的实现。
11、假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为。
12、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为。
三、给出下列程序运行后的输出结果1、# include <iostream.h>void SB(char ch) {switch(ch){case 'A': case 'a':cout <<"well!"; break;case 'B': case 'b':cout <<"good!"; break;case 'C': case 'c':cout <<"pass!"; break;default:cout <<"nad!"; break;}}void main() {char a1='b',a2='C',a3='f';SB(a1);SB(a2);SB(a3);SB('A');cout <<endl;}2、# include <iostream.h># include <string.h>void main() {char*a[5]={"student","worker","cadre","soldier","peasant"};char *p1,*p2;p1=p2=a[0];for (int i=0; i<5; i++) {if (strcmp(a[i],p1)>0) p1=a[i];if (strcmp(a[i],p2)<0) p2=a[i];}cout <<p1<<' '<<p2<<endl;}3、# include <iostream.h>int a=5;void main() {int a=10,b=20;cout <<a<<' '<<b<<endl;{ int a=0,b=0;for (int i=1; i<6; i++) {a+=i; b+=a;}cout <<a<<' '<<b<<' '<<::a<<endl;}cout <<a<<' '<<b<<endl;}4、# include <iomanip.h>int LB(int *a,int n) {int s=1;for (int i=0; i<n; i++)s*=*a++;return s;}void main() {int a[]={1,2,3,4,5,6,7,8};int b=LB(a,5)+LB(&a[3],3);cout <<"b="<<b<<endl;}5、# include <iostream.h># include <string.h>struct Worker{char name[15]; // 姓名int age; // 年龄float pay; // 工资};void main() {Worker x;char *t="liouting";int d=38; float f=493;strcpy(,t);x.age=d; x.pay=f;cout <<<<' '<<x.age<<' '<<x.pay<<endl;}6、# include <iostream.h>class A {int a;public:A(int aa=0) { a=aa; }~A() { cout <<"Destructor A!"<<a<<endl; } };class B:public A {int b;public:B(int aa=0,int bb=0):A(aa) { b=bb; }~B() { cout <<"Destructor B!"<<b<<endl; } };void main() {B x(5),y(6,7); // 后定义的变量将先被释放}四、写出下列每个函数的功能1、# include <iostream.h>int SA(int a,int b) {if (a>b) return 1;else if (a==b) return 0;else return -1;}2、float FI(int n) {// n为大于等于1的整数float x,y=0;do {cin >>x;n--; y+=x*x;} while (n>0);return y;}3、template <class Type>void WE(Type a[],Type b[],int n) {for (int i=0; i<n; i++)b[n-i-1]=a[i];}4、struct StrNode {char name[15]; // 字符串域StrNode * next; // 指针域};void QB(StrNode * & f ,int n) {if (n==0) { f=NULL; return; }f=new StrNode;cin >>f->name;StrNode * p=f;while (--n) {p=p->next=new StrNode;cin >>p->name;}p->next=NULL;}模拟题一参考答案一、单项选择题1.D2.A3.D4.D5.D6.A7.A8.C9.D 10.C 11.C 12.C13.D 14.C 15.D二、填空题: 1.抽象 2.传地址 3.友元 4.class virtual 5.virtual 6.数据和操作7.友元8.const 9.const 10.调用类的成员函数三、完成程序题1. x=f;num=t.num;2.int num;base(int n);3.test T(10);T.P();四、综合应用题1.分析下列程序可能的输出结果。