文档库 最新最全的文档下载
当前位置:文档库 › C++面向对象大题

C++面向对象大题

C++面向对象大题
C++面向对象大题

1. 编写一个函数,用来实现对3个数按由小到大的顺序排序,并在主函数中调用此函数。要求函数的形参用以下两种形式实现:

(1)使用指针形参

(2)使用引用形参

(1)

#include

void swap(int* ,int*,int*);

void main()

{

int a,b,c;

cout<<"请输入三个正整数"<

cin>>a>>b>>c;

swap(&a,&b,&c);

cout<<"a="<

}

void swap(int*x,int*y,int*z)

{int t;

if(*x>*y) if(*x>*z) if(*y>*z)

{ { {

t=*x; t=*x; t=*y;

*x=*y; *x=*z; *y=*z;

*y=t; *z=t; *z=t;

} } }

}\

(2)

#include

void main()

{

int a,b,c;

cout<<"请输入三个正整数"<

cin>>a>>b>>c;

swap(a,b,c);

cout<<"a="<

}

void swap(int&x,int&y,int&z)

{

{int t;

if(x>y) if(x>z) if(y>z)

{ { {

t=x; t=x; t=y;

x=y; x=z; y=z;

y=t; z=t; z=t;

} } }

2. 使用重载函数求不同类型(int、double)的三个数的最大值(含缺省参数的函数)#include

int swap(int,int,int=84);

double swap(double,double,double);

void main()

{

cout<

cout<

}

int swap(int x,int y,int z) double swap(double m,double n,double s)

{ {

if(x

{ {

x=y; m=n;

} }

if(x

{ {

x=z; m=s;

} }

return x;} return m; }

3. 使用函数模板求不同类型的三个数的最大值(含缺省参数的函数);

#include

using namespace std;

template

T max(T a,T b,T c)

{

if(a

{

a=b;

}

if(a

{

a=c;

}

cout<<"最大值为"<

return 0;

}

void main()

{

max(78,20,48);

max(80.7,7.7,6.0);

?4.用函数模板方式设计一个函数模板sort,采用直接插入排序方式对数据进行排序,并对整数序列和字符序列排序。

#include

using namespace std;

template

void bubble(T *item,int n)

{

T t;

for(int i=1;i

for(int j=n-1;j>=i;j--)

if(item[j-1]>item[j])

{

t=item[j-1];

item[j-1]=item[j];

item[j]=t;

}

}

int main()

{

char s[]="myfriend";

bubble(s,strlen(s));

cout<<"The sorted string is :"<

int d[]={3,2,78,8,6,8,9};

bubble(d,7);

cout<<"The sorted numbers are:";

for(int i=0;i<7;i++)

cout<

return 0;

}

5.定一个学生类student,它含有私有数据成员:学号、姓名、年龄,及公有成员函数:setvalue()(用于设置三个私有数据成员的值)、print()(用于输出三个数据成员的值)及构造函数,在主函数中定义student类的两个对象stu1和stu2,对student类进行测试。义

#include

#include

class Student

{

private:

char number[80];

char name[80];

int age;

public:

void setvalue(char*nu,char *na,int ag)

{

strcpy(number,nu);

strcpy(name,na);

age=ag;

}

void print()

{

cout<

cout<

cout<

}

Student()

{

}

};

void main()

{

Student stu1;

stu1.setvalue("090502011","Tom",34);

stu1.print();

Student stu2;

stu2.setvalue("09050206","Lily",96);

stu2.print();

}

6. 定义一个图形类,其中有保护类型的成员数据:高度好宽度,一个公有的构造函数。由该图形类建立两个派生类:矩形类和等腰三角形类。在每个派生类中都包含一个函数Area(),分别用来计算矩形和等腰三角形的面积。

#include

#include

using namespace std;

class Graph

{

protected:

int height,width;

public:

Graph(int hei,int wid)

{

height=hei;

width=wid;

}

};

class Rectangle:public Graph (继承)

{

public:

Rectangle(int hei,int wid):Graph(hei,wid){}

int area()

{

return height*width;

}

void print()

{

cout<

}

};

class Triangle:public Graph

{

private:

int thethird;

double s;

public:

Triangle(int hei,int wid,int the):Graph(hei,wid),thethird(the){}

double area()

{

s=(height+width+thethird)/2;

return sqrt(s*(s-height)*(s-width)*(s-thethird));

}

void print()

{

cout<

}

};

void main()

{

Rectangle re(6,8);

re.print();

Triangle tr(6,8,10);

tr.area();

tr.print ();

}

7. 定义一个人员类CPeople,其属性有(保护类型):姓名、性别、年龄;从中派生出学生类CStudent,添加属性:学号、入学时间和入学成绩;从CPeople 类再派生出教师类CTeacher, 添加属性:职务、部门、工作时间;由Cstudent 类派生究生类CGraduate,添加属性:研究方向和导师,由CGraduate 和CTeacher 共同派生出在职研究生类CGradOnWork,分别定义其中的构造函数和输出函数。主函数中定义各种类的对象,并完成测试。

#include

#include

using namespace std;

class CPeople

{

protected:

string name;

char sex;

int age;

public:

CPeople(char *na,char s,int ag):name(na),sex(s),age(ag){cout<<"调用cpeople构造函数"<

void print(){cout<

};

class CStudent:public CPeople

{protected:

string number;

string time;

double score;

public:

CStudent(char *na,char s,int ag,char *nu,char *ti,double sc):CPeople(na,s,ag),number(nu),time(ti),score(sc){cout<<"调用cstudent的构造函数"<

void print(){CPeople::print();cout<

};

class CTeacher:public CPeople

{

private:

string position;

string section;

int worktime;

public:

CTeacher(char *na,char s,int ag,char *pos,char *se,int wo):CPeople(na,s,ag),position(pos),section(se),worktime(wo)

{

cout<<"调用cteacher的构造函数"<

}

void print(){CPeople::print();cout<

};

class CGraduate:public CStudent

{

protected:

string about;

string teacher;

public:

CGraduate(char *na,char s,int ag,char *nu,char *ti,double sc,char *ab,char *te):CStudent(na,s,ag,nu,ti,sc),about(ab),teacher(te)

{

cout<<"调用CGraduate的构造函数"<

}

void print(){CStudent::print();cout<

};

class CGradOnWork:public CGraduate,public CTeacher

{

public:

CGradOnWork(char*na,char s,int ag,char *nu,char *ti,double sc,char *ab,char *te,char *pos,char*se,int wo):

CGraduate(na,s,ag,nu,ti,sc,ab,te),CTeacher(na,s,ag,pos,se,wo)

{

cout<<"调用cgadonwork的构造函数"<

}

void print(){CGraduate::print();CTeacher::print();};

};

void main()

{

CPeople p("tom",'m',5);

p.print();

CStudent s("mike",'m',20,"0905020101","2009-09-05",534);

s.print();

CTeacher t("hua",'m',45,"daoshi","jisuanji",20);

t.print();

CGraduate

g("zhang",'m',25,"0905020111","2006-09-05",580,"shengwugongcheng","wang");

g.print();

CGradOnWork

gw("qian",'w',30,"0305020113","2003-09-05",560,"huaxue","li","doctor","huayao",5);

gw.print();

}

8. 编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。提示:设计一个学生类Stud,除了包括no(学号)、name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有两个普通成员函数setdata()和disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分。在main()函数中定义了一个对象数组用于存储输入的学生数据。

*#include

#include

#include

using namespace std;

class Stud

{

private:

string no;

string name;

double score;

static double sum;

static int num;

public:

Stud(){no=" ";name=" ";score=0;sum=0;num=0;}

void setdate()

{

string n;

string na;

double sc;

cin>>n>>na>>sc;

no=n;

name=na;

score=sc;

}

void disp()

{

cout<

sum+=score;

num++;

}

static void avg()

{

cout<<"总分:"<

};

void main()

{

size_t size;

cout<<" 请输入学生人数:"<

cin>>size;

Stud *s=new Stud[size];

assert(s!=NULL);

for(int i=1;i<=size;i++)

{

s[i].setdate();

};

for(i=1;i<=size;i++)

{

s[i].disp();

}

;

s[i].avg();

}

9. 设计一个学生类student,包括姓名和三门课程成绩,利用重载运算符”+“将所有学生的成绩相加放在一个对象中,再对该对象求各门课程的平均分。

#include

#include

class student

{

char name[10];

int deg1,deg2,deg3;

public:

student(){}

student(char na[],int d1,int d2,int d3)

{

strcpy(name,na);

deg1=d1;deg2=d2;deg3=d3;

}

friend student operator+(student s1,student s2)

{

static student st;

st.deg1=s1.deg1+s2.deg1;

st.deg2=s1.deg2+s2.deg2;

st.deg3=s1.deg3+s2.deg3;

return st;

}

void disp()

{

cout<

}

friend void avg(student &s,int n)

{

cout<

}

};

void main()

{

student s1("Li",78,82,86),s2("Zheng",75,62,89);

student s3("Ma",89,87,95),s4("Xu",54,78,66),s;

cout<<"输出结果"<

s1.disp();

s2.disp();

s3.disp();

s4.disp();

s=s1+s2+s3+s4;

avg(s,4);

}

10.编写一个程序,先定义一个正方形基类,由它派生出一个底为正方形的长方体类,计算长方体的体积。(基类、派生类中都定义了area()成员函数,该函数在基类中声明为虚函数)。

#include

using namespace std;

class Square

{

protected:

double a;

public:

Square(double aa):a(aa){}

virtual double area()

{

return a*a;

}

};

class Cuboid:public Square

{

protected:

double b;

public:

Cuboid(double aa,double bb):Square(aa),b(bb){}

double area()

{

return a*a*b;

}

};

void main()

{

Square s(3);

Square *sq;

Cuboid c(3,8);

sq=&s;

sq->area();

cout<

sq=&c;

sq->area();

cout<

面向对象方法题库1-1-9

面向对象方法题库1- 1-9

问题: [单选]用例(usecase)用来描述系统对事件做出响应时所采取的行动。用例之间是具有相关性的。在一个“订单输入子系筑”中,创建新订单和更新订单都需要核查用户账号是否正确。用例“创建新订单”、“更新订单”与用例“核查客户账号”之间是()关系。 A.包含(includE. B.扩展(extenD. C.分类(classification) D.聚集(aggregation) 用例是在系统中执行的一系列动作,这些动作将生成特定参与者可见的价值结果。它确定了一个和系统参与者进行交互,并可由系统执行的动作序列。用例模型描述的是外部执行者(actor)所理解的系统功能。用例模型用于需求分析阶段,它的建立是系统开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成的共识。 两个用例之间的关系主要有两种情况:一种是用于重用的包含关系,用构造型include表示;另一种是用于分离出不同行为的扩展,用构造型extend表示。 ①包含关系:当可以从两个或两个以上的原始用例中提取公共行为,或者发现能够使用一个构件来实现某一个用例的部分功能是很重要的事时,应该使用包含关系来表示它们。 ②扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种事

情,可以断定将这个用例分为一个主用例和一个或多个辅用例描述可能更加清晰。

问题: [单选]对于违反里氏替换原则的两个类A和B,可以采用的候选解决方案是() A.尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程 B.创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B 行为不完全一致的问题 C.将B到A的继承关系改成组合关系 D.区分是Is-a还是Has-a。如果是Is-a,可以使用继承关系,如果是Has-a,应该改成组合或聚合关系 里氏替换原则是面向对象设计原则之一,由BarbaraLiskov提出,其基本思想是,一个软件实体如果使用的是一个基类对象,那么一定适用于其子类对象,而且觉察不出基类对象和子类对象的区别,即把基类都替换成它的子类,程序的行为没有变化。反过来则不一定成立,如果一个软件实体使用的是一个子类对象,那么它不一定适用于基类对象。 在运用里氏替换原则时,尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程。由于子类继承基类并实现其中的方法,程序运行时,子类对象可以替换基类对象,如果需要对类的行为进行修改,可以扩展基类,增加新的子类,而无须修改调用该基类对象的代码。

第4章-Java语言与面向对象作业习题与答案

第4章 Java语言与面向对象作业习题与答案 一、简答题 1.什么是对象?什么是类? 对象是一种抽象数据类型。它包含了事物的静态特征(属性)和动态特征(行为)两大特征。 类是一组同种对象的集合与抽象。即是具有相同属性和方法的一组对象集合。 2.Java语言的单继承是指什么? 一个类可以派生出多个子类,但子类只允许有一个父类,而不允许存在多个父类。 3.在一个共有类中的数据成员及方法成员的访问控制符为缺省,则这个类可供什么样的包引用? 当一个类的访问控制符为public共有时,表明这个类作为整体对其它类是可见和可引用的;但其数据成员和方法成员访问控制符为缺省时,它们只能被包中类(含当前类)引用。 4.抽象类的用途 (1)设计在更高的层次上进行,不考虑具体对象,从而大大简化了处理问题的复杂性; (2)设计出的类也具有更加良好的可扩展性。 5.什么是非静态的成员变量? 非静态成员即为实例成员变量(没有加static修饰的变量)。 6.异常Exception和错误Error有什么不同?Java如何处理它们? 答:错误通常是指程序本身存在非法情形,常常是因为代码存在问题而引起的,如造成系统崩溃、虚拟机粗错、动态失败等,这一类错误无法恢复或不可能捕获,并将导致应用程序中断。 异常表示另外一种“非同寻常”的错误。这种错误通常是不可预测,但可以被捕获且可以恢复。常见的异常情况包括存不足、找不到所需文件等。 对于错误,编程人员可以通过对程序进行更仔细的检查,以避免这种错误。 对于异常,可以使用捕获机制进行捕获,再编写出相应的处理程序。 7.简单述Java的异常处理机制。 答:Java采取“抛出—捕获”的方式,一旦一个异常想象产生,Runnable环境和应用程序会抛出各种标准类型和自己定义的异常,系统就可以捕获这些异常,并一定有相应的机制来处理它,确保不会产生司机、死循环或其它对操作系统的损害,从而保证了整个程序运行的安全性。 8.简单述throw语句和throws关键字之间的差别。 答:throw语句是在一个方法中用来直接抛出异常对象,其格式是: throw 异常对象; throws关键字是用一个方法声明首部,用来指出这个方法中可能产生若干种异常,其格式:[方法修饰符] 返回类型方法名(参数表)throws 异常类型表 { /*方法体*/ } 二、填空题 1.所有Java应用程序都必须包含的一个类方法是 main() 。 2.面向对象程序设计语言的三种重要特性是封装性、继承性和多态性。

《C面向对象程序设计》谭浩强版复习总结

第一章C++ 基础 endl 换行并刷新输出流 setw(n) 设置字段位数为n hex,oct,dec 十六进制,八进制,十进制表示 setfill 定义填充字符 setprecision 定义浮点数的精度 left,right 左对齐,右对齐 showpoint 强制显示小数点以及全部尾部0 C++通过给常量命名的方式定义常量: const<数据类型名><常量名>=<表达式> 用const定义的标识符常量时,一定要对其初始化。在说明时进行初始化是对这种常量置值的唯一方法,不能用赋值运算符对这种常量进行赋值。 函数声明的一般形式为 函数类型函数名(参数表) 函数模板的定义 template 函数定义 例子:template T max(T a,T b){ return(a>b)? a:b; } 定义函数模板时可以使用多个类型参数,每个类型参数前面只需加上关键字typename或class,用逗号分隔: template

例子:template T1 max(T1 a,T2 b){ return (a>b) ? a : (T1)b; } 有默认参数的函数:实参与形参的结合是从左至右进行的,因此指定默认值的参数必须放在形参列表中的最右端 引用 定义对变量起另外一个名字(别名alias),这个名字称为该变量的引用。 <类型> &<引用变量名> = <原变量名>; 其中原变量名必须是一个已定义过的变量。如: int max ; int &refmax=max; refmax并没有重新在内存中开辟单元,只是引用max的单元。max与refmax在内存中占用同一地址,即同一地址两个名字。 对引用类型的变量,说明以下几点: 1、引用在定义的时候要初始化 2、对引用的操作就是对被引用的变量的操作。 3、引用类型变量的初始化值不能是一个常数。 4、一旦引用被声明,它就不能再指向其它的变量。 5、对引用的初始化,可以用一个变量名,也可以用另一个引用。 6、引用同变量一样有地址,可以对其地址进行操作,即将其地址赋给一指针。 当&m的前面有类型符时(如int &m),它必然是对引用的声明;如果前面无类型符(如cout<<&m),则是取变量的地址。 7、对常量(用const声明)的引用使用如下方式: int i=5; const int &a=i;

ABAP 面向对象学习笔记(三)--接口

*&-------------------------------------------------------------------*& ABAP 面向对象学习笔记—(三)接口。 *&-------------------------------------------------------------------REPORT ZBCRP_OO_LYB_04. INTERFACE f0. " 接口中不能设定成员的权限领域(可见性).或者说接口的组件总是public的 * CLASS-METHODS static_meth. "接口中可以声明静态成员 METHODS meth IMPORTING msg TYPE string OPTIONAL. DATA str TYPE string. " 接口中的变量不能用value给值。而常量可以。 CONSTANTS cons TYPE string VALUE '常量'. ENDINTERFACE. "接口只声明方法,不实现方法,没有implementation部分。 CLASS c1 DEFINITION. "不能使用INHERITING FROM 继承接口。 PUBLIC SECTION. METHODS: outp. INTERFACES: f0. " 只能在PUBLIC SECTION中声明要使用接口;可以声明多个接口。 " 可以用aliases..for..语句,为接口的每个组件指定别名,方便访问。 " 别名只能被当前类和实例访问。 ALIASES meth0 FOR f0~meth. ENDCLASS. CLASS c1 IMPLEMENTATION. METHOD f0~meth. " 可以使用别名meth0 WRITE:/, msg. ENDMETHOD. METHOD outp. WRITE:/, 'test' . ENDMETHOD. ENDCLASS. CLASS c2 DEFINITION. PUBLIC SECTION. INTERFACES: f0. ENDCLASS. CLASS c2 IMPLEMENTATION. METHOD f0~meth. WRITE:/,msg. ENDMETHOD.

面向对象试题(标准答案)

CoreJavaOOP考试题 考试时间:90分钟 考试总分:100分 一、选择题(不定项选择)(22*4=88) 1. 类A,B的定义如下: class A { private int a = 100; A() { System.out.print("A()"); System.out.println(a); } } class B extends A { private int a = 200; B() { System.out.print("B()"); System.out.println(a); } } 运行下面的代码: new B(); 输出的结果是:(A )。 A. A() 100 B() 200 B. A() 200 B() 200 C. B() 200 A() 100 D. B() 200 A() 200

2.下列说法正确的是(D ) A.所有类都必须定义构造方法(构造器) B.构造方法必须初始化类的所有数据成员 C.子类定义了构造器后,不再调用父类的构造器 D.构造方法可以访问类的非静态成员 3.在Java中,哪个关键字使类不能派生子类?, (A ) A : final B : public C : private D : native 4.class Base{ static void test(){ System.out.println(“Base.test()”); } } public class Child extends Base{ static void test(){ System.out.println(“Child.test()”); } public static void main(String[] args){ Base base = new Child(); Child child = new Child(); base.test(); child.test(); } } 程序运行的结果是( C ) A.Child.test() Child.test() B.Child.test() Base.test() C.Base.test() Child.test() D.Base.test() Base.test()

面向对象程序设计期末综合练习一(单选题)

22. 下列的符号常量定义中,错误的定义是()。 A. const M=10; B. const int M=20; C. const char ch; D. const bool mark=true; 40. 函数重载是指()。 A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C. 两个以上的函数名字不同,但形参的个数或类型相同 D. 两个以上的函数取相同的函数名,并且函数的返回类型相同 41. 以下关于函数模板叙述正确的是()。 A. 函数模板也是一个具体类型的函数 B. 函数模板的类型参数与函数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型 42. 下列()的调用方式是引用调用。 A. 形参和实参都是变量 B.形参是指针,实参是地址值 C. 形参是引用,实参是变量 D.形参是变量,实参是地址值

43. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。 A. 内联函数 B.重载函数 C.递归函数 D.函数模板 44. 函数原型语句正确的是()。 A. int Function(void a); B.void Function (int); C. int Function(a); D.void int(double a); 45. C++中函数返回值的类型是由()决定的。 A. return语句中表达式的类型 B.该函数定义时的类型 C.调用函数时的调用语句 D.系统根据结果 56. 采用重载函数的目的是()。 A. 实现共享 B. 减少空间 C. 提高速度 D. 使用方便,提高可读性 58. 以下叙述中正确的是( )。 A. 使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值 B. 使用const定义的常量,其值在程序运行时是不可改变的 C. 在程序中使用内联函数使程序的可读性变差 D. 在定义函数时可以在形参表的任何位置给出缺省形参值 70. 用new运算符创建一个含10个元素的一维整型数组的正确语句是( )。 A. int *p=new a[10]; B. int *p=new float[10];

面向对象读书笔记

课程设计 设计名称:车辆管理系统 学校:宁夏大学新华学院 系别:信息与计算机科学系 专业:网络工程 年级:2011级 姓名:马丽 学号:12011247422 指导老师:马子睿

车辆管理系统 目录 摘要 (4) 关键词 (4) 第一章概述 (5) 1.1信息管理系统简介 (5) 1.2开发的背景 (5) 第二章JAVA语言 (6) 2.1 JAVA语言的特点 (6) 2.2 C,JAVA.C++的比较 (8) 第三章总体设计 (11) 3.1 设计目的 (11) 3.2 设计任务、要求与思路 (12) 3.3 概要设计 (12) 第四章系统功能实现 (12) 4.1 进入开始界面 (13) 4.2 进入录入界面 (16) 4.3 进入修改界面 (21) 4.4 进入查询界面 (22)

4.5 进入删除界面 (25) 第五章总结 (26) 摘要 随着经济的日益增长,信息化时代已经到来,生活中各种信息趋向数字化、清晰化。车辆管理系统就是在这样的一个环境中诞生的,交通的日益发达,使得一个单位不再是简单的一辆商务车,而是有很多辆车组成,而且车型也不再单一,这使得单位车辆信息复杂化。因此我们将发挥计算机的庞大的存储空间,高性能的处理能力,高度可靠的数据安全,清晰的可视化数据等这些优势来辅助单位对车辆进行管理,实现了计算机资源的合理利用,真正实现了减少劳动力提高劳动质量的目的。本文主要分析了系统的主要组成情况,包括需求分析,系统实施和系统主要特点等,重点介绍了系统功能模块的详细思路和实现方法,以及对系统技术和系统的源代码。 关键词:车辆管理,JAVA;

第一章概述 随着信息技术广泛、深入地应用人类社会的各个领域并发挥着 越来越重要的作用。计算机软件技术应用于信息管理是发展的必然。作为计算机应用的一部分,充分发挥计算机的优势,将大量复杂的 数据交给计算机来处理,有着手工管理所无法比拟的优点。如:查 找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这 些优点能够极大地提高信息管理的效率,是真正意义上的合理利用 资源,也是企事业管理科学化、正规化,与世界接轨的重要条件。1.1信息管理系统简介 管理信息系统,即我们常说的MS(Management Information System),在强调管理,强调信息的现代化社会中变得越来越普及。MIS是一门新学科,它跨越了若干领域,比如管理科学、系统科学、运筹学、统计学和计算机科学等。在这些学科的基础上,形成信息 收集和加工方法,从而形成了一个复杂的有条理的系统。目前,由 于开发高质量管理信息系统MIS的能力大大落后计算机硬件日新月 异的进展,加上社会对管理信息系统MIS发展和完善需求的增加以 及对管理信息系统MIS开发过程中出现的错误认识和行为而导致 MIS开发的失败,这些情况已严重妨碍了计算机技术的进步。因此 对MIS有关的内容进行深入研究,提高工作效率,提高管理信息系 统MIS开发成功率已变得十分重要。 1.2开发的背景

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

《面向对象程序设计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<

面向对象-练习题

【练习题】01.类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A 类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。 【练习题】02.类的成员变量: 请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。 【练习题】03类的成员方法 创建一个账户Account类,该类有id:账户号码(长整数) name:真实姓名字符串类型,balance:账户余额double 类型.方法:deposit: 存款方法,参数是double 型的金额;withdraw:取款方法,参数是double型的金额. 在main方法中创建Account类的对象,调用各个方法,并显示存取款结果。 【练习题】04.构造方法 编写Java程序,模拟简单的计算器。12 3 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为公共。编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象,调用各个方法,并显示计算结果。 【练习题】05.构造方法: 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。 在main方法中创建人类的实例,然后将信息显示。

面向对象面试题

面向对象面试题 1、什么是面向对象 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP; 通俗的解释就是万物皆对象,把所有的事物都看作一个个可以独立的对象(单元),它们可以自己完成自己的功能,而不是像C那样分成一个个函数; 现在纯正的OO语言主要是java和C#,C++也支持OO,C是面向过程的。 2、简述private、protected、public、internal 修饰符的访问权限。 private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 当前程序集内可以访问。 3、https://www.wendangku.net/doc/9116189044.html,中的五个主要对象 Connection:主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。这个物件在https://www.wendangku.net/doc/9116189044.html, 的最底层,我们可以自己产生这个对象,或是由其它的对象自动产生。 Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。这个对象是架构在Connection 对象上,也就是Command 对象是透过连结到数据源。 DataAdapter:主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Comm and 对象下达命令后,并将取得的数据放入DataSet 对象中。这个对象是架构在Command 对象上,并提供了许多配合DataSet 使用的功能。 DataSet:这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataAdapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是https://www.wendangku.net/doc/9116189044.html, 中重量级的对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataAdapter对象当做DataSet 对象以及数据源间传输数据的桥梁。 DataReader:当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序的读取数据源中的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。使用DataReader 对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。 https://www.wendangku.net/doc/9116189044.html, 使用Connection 对象来连接数据库,使用Command 或DataAdapter对象来

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

面向对象分析与及设计习题及答案 一、单项选择题 1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是(D)的 形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。 A. Simula67语言 B. Smalltalk语言 C. Java语言 D. 统一建模语言(UML)的标准 2. 面向对象的运动产生了多种面向对象的语言, 其中(C)是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。 A. Smalltalk B. Eiffel C. C++ D. Java 3.下列不属于面向对象技术的基本特征的是(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)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 11.一个设计得好的OO系统具有(B) A. 低内聚、低耦合的特征 B. 高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D. 低内聚、高耦合的特征 12.下面()不是UML的基本构成元素。(A) A. 控制语言 B. 基本构造块 C. 规则 D. 公共机制

C面向对象程序设计重点复习

面向对象程序设计复习题 一、单项选择题 1.下面关于对象概念的描述中,_______是错误的。(B) A.对象代表着正在创建的系统中的一个实体 B.对象就是C语言中的结构体变量 C.对象是一个状态和操作(或方法)的封装体 D.对象之间的信息传递是通过消息进行的 2. 继承机制的作用是:(C) A.信息隐藏B.数据封装C.定义新类D.数据抽象 3.有关析构函数的说法不正确的是_________(D) A.析构函数有且只有一个 B.析构函数无任何函数类型 C.析构函数没有形参 D.析构函数不能是虚函数 4.友元的作用之一是__________(A) A.提高程序的运行效率 B.加强类的封装性 C.实现数据的隐藏性 D.增加成员函数的种类 5.通常拷贝构造函数的参数是__________。(C) A.某个对象名 B.某个对象的成员名 C.某个对象的引用名 D.某个对象的指针名 6.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是________。(C) A.virtual show()=0; B.virtual void show(); C.virtual void show()=0; D.void show=0 virtual; 7.下面关于友元的描述中,错误的是_________。(D) A.友元函数可以访问该类的私有数据成员 B.一个类的友元类中的成员函数都是这个类的友元函数 C.友元可以提高程序的运行效率 D.类与类之间的友元关系可以继承 8.在C++中,_________运算符不能重载。(B) A. + B.?: C.- D.<= 9.下列关于运算符重载的描述中,________是正确的。(D) A.运算符重载可以改变操作数的个数 B.运算符重载可以改变优先级 C.运算符重载可以改变结合性 D.运算符重载不可以改变语法结构

谭浩强--c++面向对象程序设计-(红色书皮)--大纲笔记

第一章C++初步知识 第一节从C到c++ 一:c++的输入输出语句 C++用cin和cout完成输入输出功能,c用scanf和printf 二:c++用const定义常变量 C语言#define PI 3.14 c++ const float pi=3.14 三:c++函数原型声明 四:c++函数的重载 函数名相同,参数个数或类型,或函数返回值之中有不同的,用一个函数名实现不同的功能 五:函数模板 定义完函数模板,系统根据实际参数的类型赋给相应的形参 形式template (用T代替数据类型) 六:c++有默认参数的函数 七:变量的引用(别名) Int a Int & b=a;b是a的引用(别名),共同占用同一个内从八:内置函数 不重要 九:运算符作用域 ::以后见了再说

十:字符串变量 C语言用字符数组表示字符串,c++本身就有string数据类型十一:动态分配内存 C语言用malloc函数和free函数 C++用new 函数和delete 函数 第二章类和对象 第一节类的声明和对象的定义 一:类和对象的关系 二:类的声明 Class 类名 { Public: Private: }; 三:对象的定义 1,先声明类再定义对象 2,声明类的同时定义对象 3,不出现类名直接定义对象 第二节类的成员函数 一:成员函数的作用

调用数据成员 二:在类外定义成员函数 1,成员函数:类型名类名::成员函数名(参数表列)2,构造函数类名::成员函数名(参数表列) 没有类型名是因为构造函数没有参数没有返回值三:inline成员函数 四:成员函数的存储方式 不和数据成员在一起,独立存储,不同对象使用相同的成员函数,通过this指针区别不同的对象 第三节对象成员的引用 一:通过对象名加成员运算符 二:通过引用名加成员运算符 三:通过指针访问 第四节类的特点 一:抽象性 类和对象的关系:类是对象的抽象,对象是类的具体 二:封装性 公用接口和私有实现的分离(private public) 三: 继承性(第三章) 四:多态性(第四章) 第三章关于类和对象的进一步讨论

面向对象编程练习题库test

面向对象编程练习题库 t e s t Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】

面向对象编程练习题 专题1 初识Java 一、填空题 1.自从Sun推出Java以来,按应用范围可分为三个版本,分别是()、()、()。 2.环境变量的设置,若JDK安装在“D:\JDK”,则应设置Path为()、classpath 为()。 3.Java源文件的扩展名为(),用Javac编译Java源文件,得到的字节码文件的扩展 名为()。 4.如果Java源文件中有多个类,那么只能有一个类是()类。 二、选择题 1.作为Java应用程序入口的main方法,其声明格式是() A.public static int main(String args[]) B.public static void main(String args[]) C.public void main(String args[]) D.public int main(String args[]) 2.下面命令正确的是() A.java B.java AppFirst C.java D.javac AppFirst 3.设有一个Java小程序,源程序名为,其HTML文件为,则运行该小程序的命令为 () A.java FirstApplet B.javac C.appletviewer D.appletviewer 4.JDK安装完成后,主要的命令如javac、java等,都存放在根目录的()文件夹下。A.bin B.jre C.include D.doc 5.Java语言是一种语言。 A.机器B.汇编C.面向过程的D.面向对 象的 6、Java程序的最基本组成单位是( )。

面向对象期末测试题(带答案)

济南大学2009~2010 学年第二学期课程考试试卷 课 程 java 面向对象程序设计 授课教师 考试时间 考试班级 学 号 姓 名 题号 一 二 三 四 五 总 分 审核人 得分 一、填空题(每空2分,共20分) 1.Java 源程序的扩展名是 .java ,经过编译后的程序的扩展名是 .class 。 2.Socket 通常也称为 套接字 ,用于描述 IP 地址 和 端口 。3.线程的优先级在 1 至 10 之间,数值越大 优先级越高 4.构造方法是一种特殊的成员方法,构造方法名与 类名 相同 5.Java 语言只允许单继承,指每个类只能有一个 父类或子类 。 二、选择题(每题2分,共50分) 1.下列哪个概念是面向对象和面向过程程序设计所共有的 ( B ) A 、继承 B 、流程控制 C 、抽象 D 、封装 2.以下关于执行Java 小程序的论述错误的是: ( C ) A 、可以通过浏览器调用嵌入了Java 小程序的HTML 文档 B 、可以通过appletviewer .exe 调用嵌入了Java 小程序的HTML 文档 C 、可以通过java.exe 调用嵌入了Java 小程序的HTML 文档 D 、可以在Java 集成开发环境中调用嵌入了Java 小程序HTML 文档 3.符合对象和类关系的是: ( D ) A 、人和老虎 B 、书和汽车 C 、楼和土地 D 、松树和植物 4.关于选择结构下列哪个说法正确? (B ) A .if 语句和 else 语句必须成对出现 B .if 语句可以没有else 语句对应 … … …… …… …… …… …… … …… …装 …… …… …… … …… …订 …… …… …… … …… …线 …… …… …… … …… …… …… …… …

面向对象程序设计C期末试卷及标准答案B样本

《面向对象程序设计C++》期末考试试卷( B) 班级: 姓名: 学号: 分数: 试卷说明: 本套试题共四个大题, 全部题目都答在答题纸上, 写在其它地方均无效。 ( 答题纸在本套试卷的第8页上) 一、单项选择题( 每小题2分, 共40分) 1、关于C++与C语言关系的描述中, ( D ) 是错误的。 A.C语言是C++语言的一个子集 B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进 D.C++语言和C语言都是面向对象的 2、已知: int m=10; 下列表示引用的方法中, ( A ) 是正确的。 A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m; 3、考虑下面的函数原型声明: void testDefaulParam(int a,int b=7,char z='*');下面函数调用中, 不合法的是( C ) 。 A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用, 在下列选项中, 不能作为依据的是( A ) 。 A.函数的返回值类型 B.参数的类型 C.函数名称 D.参数个数 5、下列有关C++类的说法中, 不正确的是( D ) 。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数或类的友元函数才能存取类中的私有成员 C.在类中, 如果不做特别说明, 所有成员的访问权限均为私有的

D.在类中, 如果不做特别说明, 所有成员的访问权限均为公用的 6、已知X类, 则当程序执行到语句X array[3];时, 调用了( D ) 次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法, 不正确的是( B ) 。 A.析构函数有且仅有一个 B.析构函数和构造函数一样能够有形参 C.析构函数的功能是在系统释放对象之前作一些内存清理工作 D.析构函数无任何函数类型 8、类定义的内容允许被其对象无限制地存取的是( C ) 。 A.private 部分 B. protected 部分 C.public 部分 D.以上都不对9、关于常数据成员的说法, 不正确的是( D ) 。 A.常数据成员的定义形式与一般常变量的定义形式相同, 只不过常数据成员的定义必须出现在类体中 B.常数据成员必须进行初始化, 而且不能被更新 C.常数据成员经过构造函数的成员初始化列表进行初始化 D.常数据成员能够在定义时直接初始化 10、运用运算符delete删除一个动态对象时( C ) 。 A.系统首先为该动态对象调用构造函数, 再释放其占用的内存 B.系统首先释放该动态对象占用的内存, 再为其调用构造函数 C.系统首先为该动态对象调用析构函数, 再释放其占用的内存 D.系统首先释放动态对象占用的内存, 再为其调用析构函数 11、能够在类外用p.a的形式访问派生类对象p的基类成员a, 其中a是( D ) 。 A.私有继承的公用成员 B.公用继承的私有成员 C.公用继承的保护成员 D.公用继承的公用成员

C#面向对象笔记大全

二:定义方法: 访问修饰符返回值类型方法名称(参数){方法体} 1.访问修饰符:public private protected internal a)public :使用它来定义的成员可以在所有类里面使用(不同项目需要先引用) b)private:私有的,只有在当前类中可以使用 c)protected:使用它来定义的成员只有在当前类或者当前类的子类中使用。 d)internal:在当前整个程序集中可以使用 2.返回值类型 a)void:没有返回值.(可以写return(可以提前终止方法),但是不能return具 体的值) b)非void,必须返回相应类型的值(任何类型都可以做为方法的返回值类型) 3.方法名称: a)Pascal命名法,每一个单词的首字母需要大写 b)不能使用关键字(int double bool string …..class namespace) c)不能包含_以外的特殊符号,不能以数字开头java(_ $) 4.参数 a)形参:只是一个参数的声明,说明调用的时候需要传递过来的值(类型一致, 个数一致,顺序一致)---形参是实参的规范。Params 三:静态与非静态之间的调用方式: 1.在单个类中:静态不能直接调用非静态成员(属性,方法),只能通过实例化的对 象调用。 2.在单个类中:静态可以直接调用静态成员 3.在单个类中:实例成员可以自由调用静态成员(银行vip---非vip) 4.在不同类中:实例成员通过类的对象调用,而静态成员通过类名调用。 5.为什么静态不能直接调用非静态成员:静态成员与类一起加载,在加载静态成员的 时候,非静态成员还没有生成。 四:C#Main方法的四种形式: 1.staticvoid Main(string[] args) 2.staticvoid Main()

面向对象考试题

第五章考试题 一、选择题:(每题3分,共20题) 1.下面关于类的说法错误的一项是()。 A、类属于Java语言中的复合数据类型 B、对象是Java语言 中的基本结构单位 C、类是同种对象的集合和抽象 D、类就是对象 2.如下所示代码: public class Test05_01{ private float a; public static void m ( ){ } } 如何使成员变量a被方法m( )访问()。 A、将private float a改为public float a B、将private float a改为static float a C、将private float a改为protected float a D、将private float a改为float a 3.下面关于类的说法有误的一项是()。 A、类就是对象 B、类是同种对象的集合和 抽象 C、类属于Java语言中的复合数据类型 D、对象是Java语言 中的基本结构单位

4.下列哪种类成员修饰符修饰的变量只能在本类中被访问()。 A、protected B、default C、private D、public 5.下面关于方法的说法不正确的一项是()。 A、类的私有方法不能被其他类直接访问。 B、Java中的构造方法名必须和类名相同。 C、方法体是对方法的实现,包括变量声明和合法语句。 D、如果一个类定义了构造方法,也可以用该类的默认构造方法。 6.下列程序的运行结果是()。 public class Test05_02 extends x{ int ab(){ static int a = 10; a++; System.out.println(a); } public static void main(String[] args) { Test05_02 b = new Test05_02 (); b.ab(); } } A、10 B、编译错误 C、11 D、运行成功,但不输出

2_面向对象基础测试题和答案

共40道选择题,每题2.5分。多选题有错则全错,全对才满分. 面向对象部分测试题 1.下面描述函数重写错误的是C A.?要有子类继承或实现 ?B.?子类方法的权限必须大于等于父类的权限 C. 父类中被private权限修饰的方法可以被子类重写 D.?子类重写接口中的抽象方法,子类的方法权限必须是public的 2.关于封装下面介绍错误的是(D )。 A. 封装将变化隔离 B.?封装提高重用性。 C.?封装安全性 ?D. 只有被private修饰才叫做封装 3.试图编译运行下面的代码会发生什么情况D public class MyClass{ static int i; publicstaticvoid main(String[]args){System.out.println(i); } } ?A.?错误,变量i没有被初始化 ?B. 输出null C.?输出1 ?D. 输出0 4.在Java中,下面对于构造函数的描述正确的是( D)。 A. 类必须显式定义构造函数 B.构造函数的返回类型是void ?C.?构造函数和类有相同的名称,并且不能带任何参数

D.一个类可以定义多个构造函数 5.下面Java代码的运行结果是(C)。 class Penguin { ?private String name=null; // 名字 privateint health=0;//健康值 private String sex=null; //性别 publicvoid Penguin(){//是一般方法,不是构造方法 health = 10; ??sex = "雄"; ??System.out.println("执行构造方法。"); ?} public voidprint() { ??System.out.println("企鹅的名字是" +name + ?",健康值是"+ health + ",性别是"+ sex+"。"); ?} public staticvoidmain(String[] args){ ?Penguin pgn= new Penguin(); pgn.print(); } } A. 企鹅的名字是null,健康值是10,性别是雄。 B.?执行构造方法。 企鹅的名字是null,健康值是0,性别是null。 ?C.?企鹅的名字是null,健康值是0,性别是null。 D.?执行构造方法。 ?企鹅的名字是null,健康值是10,性别是雄。 6.class A { public int i = 10;?} class B extends A{

相关文档
相关文档 最新文档