搜档网
当前位置:搜档网 › 面向对象程序设计复习题

面向对象程序设计复习题

面向对象程序设计复习题
面向对象程序设计复习题

面向对象程序设计复习题

概念填空题

1.运算符能够用来访问与局部变量同名的全局变量。

2.运算符动态分配一个对象。

3.类的成员只能被该类的成员函数或友元函数访问。

4.类成员的默认访问模式是的。

5.类的数据成员是该类的所有对象共享的信息。

6.关键字指定了不可修改的对象或变量。

7.要在类的对象上使用运算符,除了运算符和外,其它的必须都要被重载。

8.重载不能改变原运算符的、、和对内部类型对象的原有含义。

9. 类的对象可作为类的对象处理。

10.友元函数中可以直接访问类的和成员。

1l.公有成员函数的集合常称为类的函数。私有成员函数的集合常称为类的函数。

12.为了访问某个类的私有数据成员,必须在该类中声明该类的。

13. 提供了一种描述通用类的方法。

14.运算new分配的内存要用运算符回收。

15.参数表示重载后缀 ++ 运算符函数。

16.当用受保护的继承从基类派生一个类时,基类的公有成员成为派生类的

的成员,基类的受保护成员成为派生类的成员。

17.在C++中,关键字、和用来建立新的数据类型。

18. 限定符用来声明只读变量。

19.函数能够定义一个在不同数据类型基础上完成同一任务的函数。

20.指向基类对象的指针可以指向其派生类的对象,但是不允许指向其

派生类的对象。

答案:

1:: 2 new 3私有和保护4私有5静态

6const 7=& 8 优先级结合性操作数个数9派生类基类

10 私有受保护11 接口工具12 友元13 类模板

14 delete 15 int 16受保护受保护17class struct union 18 const 19模板20公有私有和保护

阅读程序写结果

1.#include

void main()

{

int a(6),b(8),c;

c=(a>b?++a:b-=2);

cout<

c=(a-b?a+b:a-6?b:a-6);

cout<

}

输出结果:

答案:输出结果:

6,6,6

6,6,0

2.#include

void main()

{

int i,j;

for(i=11; i<=20 ; i+=2)

{

for(j=2;j

if(i%j==0)

break;

if(j!=i)

cout<

}

cout<

}

输出结果:

答案:12 14 15 16 18 3.#include

#include

int f(int p);

void main()

{

int a[]={1,2,3,4,5};

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

cout<

cout<

}

int f(int p)

{

static int s=1;

s*=p;

return s;

}

输出结果:

答案:

1 2 6 24 120

4.#include

int f(int *p);

void main()

{

int a[]={1,2,3,4,5}

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

cout<

cout<

}

int f(int *p)

{

static int s=0;

s+=*p;

return s;

}

输出结果:

答案:

1 3 6 10 15 4.

#include

void main()

{

int a[5],x,i=0;

do

{

cin>>x;

if(x%2==0)

{

a[i]=x;

i++;

}

}while(i<5);

for(i=0;i<5;i++)

cout<

cout<

}

输入:

1 6 5 8

2 0 7 10

输出结果:

答案:6 8 2 0 10

5.#include class myclass

{

int a,b;

static int s;

public:

myclass(int i, int j)

{

a=i; b=j;

cout<<"Constructor.\n";

}

~myclass()

{

cout<<"Destructor.\n";

}

void sum()

{ s+=a*b; }

void print()

{

cout<

}

};

int myclass::s =0;

void main()

{

myclass *a1, *a2;

a1=new myclass(1,1);

a2=new myclass(10,20);

(*a1).sum();

(*a2).sum();

a1->print();

a2->print();

delete a1;

delete a2;

}

输出结果:

答案:

Constructor.

Constructor.

1,1 sum=201

10,20 sum=201

Destructor.

Destructor.

6.

#include

{

int a,b;

for(a=1,b=1;b<=10;b++)

{

if(a>=10)

break;

if(a==1)

{

a+=3;

continue;

}

a-=3;

}

cout<<"a="<

}

输出结果:

答案:

a=1b=11

7.#include

class A

{

private:

int a,b;

public:

A(int i, int j)

{ a=i; b=j; }

void move(int m,int n)

{

a+=m;

b+=n;

}

void show()

{

cout<<"("<

}

};

class B: public A

{

private:

int x,y;

public:

B(int i, int j,int k,int l):A(i,j)

{ x=k; y=l; }

void show()

{ cout<

void fun(){move(30,50);}

void f1(){A::show();}

};

void main()

{

A e(10,20);

e.show ();

B b(30,40,50,60);

b.fun ();

b.show();

b.f1();

}

输出结果:

答案:

(10,20)

50,60

(60,90)

8. #include

class B{

private:

int Y;

public:

B(int y=0) { Y=y; cout<<″B(″<

~B() { cout<<″~B()\n″;}

void print() { cout <

} ;

class D: public B{

private:

int Z;

public:

D (int y, int z):B(y)

{ Z=z;

cout<<″D(″<

}

~D() { cout<<″~D()\n″; }

void print() {

B∶∶print();

cout <

}

};

void main()

{ D d(11,22);

d.print();

}

输出结果:

答案:

B(11)

D(11,22)

112

~D()

~B()

9.

#include

#include

void main()

{

int i,j,k;

for(i=1;i<=3;i++) //控制输出行

{

for(j=1; j<=6-i; j++) //每行前的空格

cout<<" "; //输出四个空格for(k=1;k<=i;k++)

cout<

for(k=i-1; k>0 ;k--)

cout<

cout<

}

}

输出结果:

答案:

1

1 2 1

1 2 3 2 1

10. #include

class A

{

private:

double X,Y;

public:

A(double xx=0, double yy=0)

{ X=xx; Y=yy;

cout<<″构造函数被调用(″<

}

A(A &p) { X=p.X; Y=p.Y; }

};

A f()

{ A a(1,2);

return a;

}

void main()

{ A a(4,5); A b(a);

b = f();

}

输出结果:

答案:

构造函数被调用(4,5)

构造函数被调用(1,2)

11.#include

class Areaclass

{

public:

Areaclass(double x=0,double y=0)

{

height=x;

width=y;

}

protected:

double height;

double width;

};

class Box: public Areaclass

{

public:

Box(double h,double w):Areaclass (h,w){ }

double Area();

};

class Triangle:public Areaclass

{

public:

Triangle(double h,double w):Areaclass(h,w){ }

double Area( );

};

double Box::Area(){ return height*width; }

double Triangle::Area(){ return width *height *0.5; } void main()

{

Box obj1(2.5,4.0);

Triangle obj2(4.0,3.5);

cout<<"Box="<

cout<<"Triangle="<

}

输出结果:

答案:

Box=10

Triangle=7

12. #include

void main()

{ int a[9]={1,2,3,4,5,6,7,8,9};

for(int i=0; i<9; i++) {

cout << setw(4) << a[i];

if(i%3==2)

cout<

}

}

输出结果:

答案:

1 2 3

4 5 6

7 8 9

13. #include

template

void print(T a[],int n )

{ for(int i=0; i

{ cout<

if (i%5==4)

cout<

}

cout<

}

void main()

{

int a[]={1, 2, 3, 4, 5, 6, 7};

double b[4]={8, 9, 10, 11 };

print(a,sizeof(a)/sizeof(int));

print(b,4);

}

输出结果:

答案:

1 2 3 4 5

6 7

8 9 10 11

14. #include

class A

{

private:

static int n;

int X;

public:

A(int x=0) { X=x; n++; }

~A() { n-- ; }

static int GetNum(){ return n; }

void print();

};

void A∶∶print() { cout << ″n=″<< n << ″, X=″<< X<< endl; } int A∶∶n = 0;

void main()

{ A *p=new A(12);

p->print();

A a(34);

a.print();

delete p;

cout << ″n=″<< A::GetNum() << endl;

}

输出结果:

答案:

n=1,X=12

n=2,X=34

n=1

15. #include

void main(void)

{ int n=6, k;

cout << n << " Factors ";

for (k=2; k < n; k++)

if (n % k == 0)

cout << k << " ";

cout << endl;

}

输出结果:

答案:

6 Factors 2 3

16. #include

class myclass

{

private:

int x,y;

static long sum;

public:

myclass(int a,int b) { x=a;y=b;}

void getxy()

{

sum*=x*y;

cout<<"sum="<

}

};

long myclass::sum=1;

void main()

{

myclass ob1(1,3);

ob1.getxy();

myclass ob2(2,4);

ob2.getxy();

myclass ob3(5,6);

ob3.getxy();

}

输出结果:

答案:

sum=3

sum=24

sum=720

17.#include

#include

void main()

{

int i;

char *max, str[3][10]={"Wang","Zhang","Li"};

max=str[0];

for(i=0;i<3;i++)

if(strcmp(max,str[i])<0)

max=str[i];

cout<<"The max string is: "<

}

输出结果:

答案:

The max string is: Zhang

三、程序填空

1.菲波纳齐数列为:1,1,2,3,5,8,13,……;下面是实现计算该数列前10项的程序,请在空白处填入合适的内容。

#include

long fa(int m) //递归函数

{

long f;

if(m>2)

____________

else

_____________

return f;

}

void main()

{

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

cout<<______ <<“”;

cout<

}

答案:f=fa(n-1)+fa(n-2);

f=1;

fa(i)

2.下面是实现字符在字符串中出现频率的程序,请在空白处填入合适的内容。#include

int nchar(char *s,char c)

{

int n(0);

for(int i=0;____________;i++)

if(s[i]==c)

n++;

_________________

}

void main()

{

char str[80],ch;

cout<<"输入字符串:";

cin>>str;

cout<<"输入一个字符:" ;

cin>>ch ;

cout<

}

答案:

s[i]

return n;

nchar(str,ch)

3.下面是将一个一维数组及各元素乘积写入文本文件data.txt的程序,请在空白处填入合适的内容。

_________________

#include

void main(){

int a[10]={1,2,3,4,5,6,7,8,9,10},cum=0;

_____________________

if(!fout){ //打开文件失败

cout<<"Cannot open the file!"<

exit(1);

}

int i;

for(i=0;i<10;i++){

cum*=a[i];

_________________ //将数组元素写入文件

}

_________________ //将元素的乘积写入文件

fout.close();

}

答案:#include

ofstream fout("data.txt");

fout<

fout<

4.下面是一个判断一个整数是否素数的程序,请在空白处填入合适的内容。#include

class integer{

int number;

public:

integer(int n){________________ }

int getnum(){return number;}

bool isprime(){

for(int i=2;i

if(number%i==0)

break;

if(______________)

return true;

else

return false;

}

};

void main(){

integer n1(19);

if(_______________)

cout<

else

cout<

}

答案:

number = n;

number==i;

n1.isprime()

5.下面是利用运算符重载实现字符串赋值(=)的程序,请在空白处填入合适的内容。

#include

#include

class Cstring

{char *s;

public:

Cstring(char *s1=0){

s=new char[strlen(s1)+1];

strcpy(s,s1);

}

__________________________

void list(){cout<

};

Cstring Cstring::operator=(Cstring &s1)

{

delete s;

s=new char[strlen(s1.s)+1];

strcpy(s,s1.s);

____________

}

void main()

{

Cstring cstr1("abcd"),cstr2("1234");

__________________

cstr1.list();

}

答案:

Cstring operator=(Cstring &s1);

return *this;

cstr1=cstr2;

6.为使下面程序输出结果为:

1*2

3+4

请在横线处填上适当的字句,以使程序完整。

#include

class A

{

private:

int R1, R2;

public:

A(int r1, int r2) { R1=r1; R2=r2; }

void print();

void print() const;

};

void A::print()

{

cout<

void A::print() const

{

cout<

void main()

{

A a(1, 2);

const A b(3, 4);

a.print();

b.print();

}

答案:

“*”“+”

7下面是利用运算符重载实现两个一维等长数组相加(+)的程序,请在空白处填入合适的内容。

#include

class Array

{

int *a;

int n;

public:

Array (int n1){

__________________

n=n1;

}

void input(){

for(int i=0;i

cin>>a[i];

}

__________________________

void list(){

for(int i=0;i

cout<

cout<

}

};

Array Array::operator+( Array &a1)

{

Array a2(n);

for(int i=0;i

______________________

return __________;

}

void main()

{

Array a1(5),a2(5);

a1.input();

a2.input();

a1.list();

a2.list();

(a1+a2).list();

}

答案:a=new int[n1];

Array operator+( Array &a1);

a2.a[i]=a[i]+a1.a[i];

a2

8.以下的程序实现求分数序列2/1,3/2,5/3,8/5,13/8,21/13,……前10项的和。在横线处填写适当内容。

#include

#define N 10

void main( ){

int i, m, n, k;

(1) ;

m=2, n=1;

for( i=1;_____(2)______; i++){

s=s+1.0*m/n;

k=m;

m= _ (2) __ ;

n= (3) ___ ;

}

cout<<”s=”<

}

答案:

(1)double s=0

(2)i<=N

(3)m+n

(4)k

9.以下程序将从data1.dat中读出的内容显示在屏幕上,并将其中的字母写到文件data2.dat中去。请在空白处填入合适的内容。

#include

#include

int main()

{ char ch;

fstream infile,outfile;

infile.open( ____(5) ___ __ , ios::in);

if(!infile)

{ cout<<″文件1不能打开!\n″; return 0; }

outfile.open( ____ (6) _______ , ios::out);

if(!outfile)

{ cout<<″文件2不能打开!\n″; return 0; }

while(infile.get(ch))

{ cout<

if(ch>=’a’&&ch<=’z’ || ch>=’A’&&ch<=’Z’)

____ __ (7) _________ ;

}

cout<

infile.close();

outfile.close();

return 1;

}

答案:

(5)” data1.dat”

(6)” data2.dat”

(7)ouffile.put(ch)或output<

10.为使下面的程序执行后输出矩形的面积,请在空白处填入合适的内容。#include

class Point { //定义点类

public:

Point(double i, double j)

{ x=i; y=j; }

(8)double Area() const

{ return 0.0;}

private:

double x,y;

};

class Rectangle:public Point { //定义矩形类(点类的公有派生类)public:

Rectangle(double i,double j,double k,double l):Point(i,j)

{ w=k ; h=l; }

_______(9)_________

{ return w*h;}

private:

double w, h;

};

void main()

{

Point *p;

Rectangle rec(3.5,1.2,5.2,7.5);

(10);

cout<<"矩形的面积是:"<Area()<

}

答案:

(8)virtual

(9)virtual double Area() const 或double Area() const

(10)p=&rec

四、把下列各程序运行时各输出行写到相应横线上

1.#include

//继承中的析构函数的调用顺序

class Point{

protected:

float x,y;

public:

Point(float a= 0.0,float b=0.0){ x=a;y=b; } //构造函数

~Point( ){cout<<"Point destructor:("<

class Circle:public Point{

public:

Circle(float r=0.0,float a=0,float b=0):Point(a,b) {Rds=r;} //构造函数~Circle( ) //析构函数

{cout<<"Circle destructor: Rds="<

float Rds;

};

void main( ){ //析构函数的调用顺序

Circle c1(4,7,3),c2(10,5,5);

}

输出结果为:

答案:m<1 || m>12

MONTH !=2

YEAR%400==0

YEAR%4==0&&

d>=d2

2.#include

//子对象及继承中的构造函数的调用顺序

class DAT{

public:

DAT(int i){a=i ; cout<<"class DAT \n"; }

private:

int a;

};

class A{

public:

A(int x):d(x){cout<<"class A\n"; }

private:

DAT d;

};

class B:public A{

public:

B(int x, int y):A(x), d(y){cout<<"class B\n"; } private:

DAT d;

};

void main( ){ B bb(6,5); }

输出结果为:

答案:int[n]

delete [ ]

i<0 || i>=size

!= r.size

buf[i] != r.buf [i]

3.#include

//数组模板类

template

class Array{

public:

Array(int n){elems=new T[n];nums=n;}

~Array( ){delete []elems;}

void SetElem(int i,T v);

T GetElem(int i);

private:

T * elems;int nums;

};

template

void Array::SetElem(int i,T v){

if(i>=0 && i

}

template

T Array::GetElem(int i){

if(i>=0 && i

else {cout<<"下标越界"; return -9999;}

}

void main( ){

Array m(6);

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

{ m.SetElem(i , i+98); cout<

Array s(4);

for(i=0;i<5;i++)

{ s.SetElem(i, i* 3+2);cout<

c++面向对象程序设计大作业

《面向对象程序设计》 大作业 题目学生成绩管理系统 学院 专业 班级 姓名 指导教师 2015 年11 月11 日

目录 一大作业的目的 (1) 二大作业的内容............................ . .. (2) 三大作业的要求与数据............... ...... . (3) 四大作业应完成的工作.................. . (4) 五总体设计(包含几大功能模块)........... . (5) 六详细设计(各功能模块的具体实现算法——流程图) (6) 七调试分析(包含各模块的测试用例,及测试结果) (7) 八总结 (8) 十参考资料 (9)

一大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 二大作业的内容 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C++语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出. 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录 的输入。) (3)、成绩信息显示浏览功能:完成全部学生记录的显示。 (4)、查询功能:完成按姓名查找学生记录,并显示。 (5)成绩信息的删除:按学号进行删除某学生的成绩. (6)、排序功能:按学生平均成绩进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

2019国开电大《程序设计基础》形考任务4答案

程序设计基础形考任务4: 1.算法的四种基本操作是逻辑运算、算数运算、数据比较、数据传送。 2.算法的控制结构有三种基本形式:顺序结构、选择结构、循环结构。 3.评价算法需要从几个不同的角度考虑,最主要的是正确性和运行效率。 4.算法的运行效率包括两方面,算法的时间复杂度和算法的空间复杂度。 5.结构化程序设计的总体思想是采用模块化结构,自顶向下、逐步求精。 6. 软件生存周期包括软件的定义、软件的开发和软件使用与维护3个部分。 7. 软件定义时期主要包括可行性研究和需求分析两个阶段。 8.软件开发时期是具体设计和实现在前一时期定义的软件,它由软件的设计阶段、实现阶段、集成阶段组成。 9.软件工程的目标是可概括为生产具有正确性、可用性以及开销合宜的产品。 10.软件开发模型大体上可分为两种类型,第一种是以软件需求完全确定为前提的瀑布模型。第二种是在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型。 二、选择题(每题4分,合计40分) 2下列叙述中正确的是_____。 选择一项: A. 算法就是程序 B. 设计算法时只需要考虑结果的可靠性

C. 以上三种说法都不对 D. 设计算法时只需要考虑数据结构的设计 3下列叙述中正确的是_____。 选择一项: A. 一个算法的空间复杂度大,则其时间复杂度也必定大 B. 以上三种说法都不对 C. 一个算法的空间复杂度大,则其时间复杂度必定小 D. 一个算法的时间复杂度大,则其空间复杂度必定小 4一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()。选择一项: A. 有零个或多个输入 B. 可行性 C. 有穷性 D. 有零个或多个输出 5下面叙述正确的是()。 选择一项: A. 算法的时间复杂度是指执行算法所需要的计算工作量 B. 算法的效率只与问题的规模有关,而与数据的存储结构无关 C. 数据的逻辑结构与存储结构是一一对应的 D. 算法的时间复杂度与空间复杂度一定相关 6那一项不属于算法的四种基本的功能操作( ) 。

什么是面向对象程序设计

1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

2016年电大面向对象程序设计技术-作业题

2015秋季学期计算机科学与技术本科 《面向对象程序设计技术》作业题 (在电大在线该课程讨论区跟帖提交,注明姓名和学号以记录成绩)选择题 1.可以在本类及派生类的成员函数中进行访问的访问控制修饰符是(B) A.private B.protected C.public 2.在IDE中将编程项目采用多文件结构下,类的定义一般放在(A) A.头文件 B.程序文件 C.主程序文件 3.内联成员函数在类外定义时要将其和类定义一起放在(A) A.头文件 B.程序文件 C.主程序文件 4.下面哪个内存区域是C++中的运行时动态内存分配区域?( D ) A.代码区 B.栈区 C.数据区 D.堆区 5.对象作为函数参数使用时,一般使用(A)形式 A.引用 B.指针 C.对象拷贝

6.同类的多个不同对象的数据成员值各有不同,但不同对象可以共享类的成员函数代码, 实际调用成员函数时,是通过(B )来区分不同对象的。 A.显式给出不同对象不同地址 B.隐含的this指针 C.引用 7.下面哪一种情况不会自动调用拷贝构造函数。(E) A.用一个对象初始化另一个对象时 B.当一个对象作为值传递给一个函数时 C.当一个对象作为值从一个函数返回之前,该对象被拷贝到栈区 D.函数调用结束后,栈区中的返回对象拷贝给主调程序的对象 E.建立指向对象的指针并初始化指针值时 8.下列哪些对象的数据成员类型可以不用初始化表的方式进行初始化(D) A.常量数据成员 B.引用数据成员 C.类中对象成员 D.一般数据成员 9.下列哪一种类设计一般无需在类中设计静态数据成员以使建立的多个对象共享静态数 据数据成员。( D ) A.一个链表类的头指针和尾指针 B.一个学生类中用于保存建立了多少个学生对象的计数器 C.银行帐号类中的年利率 D.一般只用于建立一个对象的类 10.一个类中的公有(public)性质的静态数据成员,以下哪一种访问方式是错误的(D) A.对象名.静态数据成员名 B.指向对象的指针—>静态数据成员名 C.类名::静态数据成员名 D.类名.静态数据成员名 11.下列哪一个运算符不能够被类所重载(E) A.“.”成员访问运算符 B.“*”成员指针访问运算符 C.“::”域运算符 D.“?:”条件运算符 E.“=”赋值运算符

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

《面向对象程序设计》教学大纲资料

面向对象程序设计教学大纲西北民族大学数学与计算机科学学院 制定的时间:二〇一二年五月

面向对象程序设计教学大纲 一、课程基本资料 主讲教师:曹永春、蔡正琦、顿毅杰 主教材:《C++面向对象程序设计》中国铁道出版社,陈维兴、林小茶编著,第2版,2009 辅助教材: 1.《C++编程思想》机械工业出版社,美Bruce Eckel,Chuck Alliso著,刘宗田,袁兆山,潘秋菱等译; 第1版,2011年 2. 《C++程序设计教程》机械工业出版社,美H.M.Deitel P.J.deitel 薛万鹏等译,2000年 3.《C++程序设计语言》,机械工业出版社,美Bjarne Stroustrup 著,裘宗燕译,2005年 4.《C++面向对象程序设计习题解析与上机指导》清华大学出版社,陈维兴主编,第2版,2009年 实验教材及参考书: 同上 课程性质:学科选修课 学分:4分 课时:72学时,其中理论课54学时,上机实验18学时 先修课程:计算机导论、C语言程序设计 课程结构:多媒体教学,课堂讨论、课内实验、课后作业 评价方案:(考核依据、评分的办法、权重的分布) ?平时成绩:10% 课堂表现(课堂提问、考勤、作业等) ?实验成绩:20%(实验报告、实验考试)

?期中成绩:20%(闭卷考试) .期末成绩:50%(闭卷考试) 参考书目: 名称编著者出版社出版年月《C++编程思想》刘宗田,袁兆山,潘 机械工业出版社2011年 秋菱等译 机械工业出版社2000年 《C++程序设计教程》H.M.Deitel, P.J.deitel 著,薛万鹏等译 《C++程序设计语言》Bjarne Stroustrup 机械工业出版社2005年 著,裘宗燕译 陈维兴主编清华大学出版社2009年 《C++面向对象程序设计 习题解析与上机指导》 推荐刊物: 1、《计算机学报》 2.《软件学报》 3.《程序员杂志》 4.《码农周刊》 5.《快乐码农》 相关网站: 1. 中国计算机学会https://www.sodocs.net/doc/9112683507.html,/sites/ccf/ 2. 计算机爱好者协会https://www.sodocs.net/doc/9112683507.html,/forum.php 3.C语言中文网https://www.sodocs.net/doc/9112683507.html,/cpp 5.中国悠悠期刊网https://www.sodocs.net/doc/9112683507.html,/ 6. 中国知网https://www.sodocs.net/doc/9112683507.html,/ 文献 1.谭浩强.C程序设计.第4版.北京:清华大学出版社,2010

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

形考

单选题(每题5分,共10题,共50分)(总分50.00) 1.PDL是描述处理过程(B )。(5.00分) A. 对谁做 B. 怎么做 C. 为什么做 D. 做什么 2.经济可行性研究的主要内容包括( A )。(5.00分) A. 效益分析 B. 开发过程 C. 开发工具 D. 风险分析 3.根据软件工程的7条基本原理判断下面正确的选项是( B )。(5.00分) A. 软件错误发现的时机不重要,重要的是错误的严重程度 B. 软件错误发现的越早改正的成本越低 C. 需求阶段一般不会引入错误 D. 现软件错误只能通过运行代码才能发 4.按照模块独立性,耦合程度由强至弱正确的顺序是( C )。( 5.00分) A. 控制耦合、数据耦合、外部耦合 B. 外部耦合、数据耦合、控制耦合 C. 外部耦合、控制耦合、数据耦合 D. 数据耦合、外部耦合、控制耦合

5.下列有关标准的符号,属于国内标准的是( C )。(5.00分) A. ZG B. CB C. GB D. GN 6.数据流程图上的数据流必须封闭在( A )之间。(5.00分) A. 外部实体 B. 内部数据 C. 内部过程 D. 外部过程 7.软件工程四个层次由下至上是( C ),它们的顺序不能互换。(5.00分) A. 方法层、质量层、过程层、工具层 B. 过程层、方法层、质量层、工具层 C. 质量层、过程层、方法层、工具层 D. 方法层、过程层、质量层、工具层 8.(D)定义了软件开发人员必须实现的软件功能(5.00分) A. 用户需求 B. 业务需求 C. 性能需求 D. 功能需求 9.软件对硬件和环境有着不同程度的依赖性,这导致了软件(A)问题(5.00分)

《C++面向对象程序设计》教案

第3章类和对象3.2 构造函数与析构函数 例:点类 Point class Point { private: int x,y; public: Point() {}; Point(int xx, int yy) { x=xx; y=yy; } Point(Point &p) { x=p.x; y=p.y; } int GetX() const { return x; } int GetY() const { return y; } void SetXY(int xx, int yy) { x=xx; y=yy; } void Show(); }; void Point::Show() { cout<<"X: "<

void SetSex(int s){ sex = s; } char *GetName() const { return name; } int GetAge() const { return age; } char GetSex() const { return sex; } void Show(); }; #include "person.h" #include using namespace std; Person::Person(char *n, int a, char s) { name = new char[strlen(n)+1]; strcpy(name,n); age = a; sex = s; } Person::Person(Person &p) { name = new char[strlen(https://www.sodocs.net/doc/9112683507.html,)+1]; strcpy(name,https://www.sodocs.net/doc/9112683507.html,); age = p.age; sex = p.sex; } void Person::SetName(char *n) { delete[] name; name = new char[strlen(n)+1]; strcpy(name,n); } void Person::Show() { cout<<"Name: "<

程序设计基础形考任务四参考答案

程序设计基础形考任务四参考答案 一、填空题 1.算法的四种基本操作是算术运算、逻辑运算、数据传送、数据比较。2.算法的控制结构有三种基本形式:顺序、分支、循环。 3.评价算法需要从几个不同的角度考虑,最主要的是正确性和运行效率。4.算法的运行效率包括两方面,算法的空间复杂度和算法的时间复杂度。 5.结构化程序设计的总体思想是采用模块化结构,自顶向下、逐步求精。 6.软件生存周期包括软件的定义、软件的开发和软件使用和维护3个部分。 7. 软件定义时期主要包括可行性研究和需求分析两个阶段。 8.软件开发时期是具体设计和实现在前一时期定义的软件,它由软件的设计阶段、实现阶段、集成阶段组成。 9.软件工程的目标是可概括为生产具有正确性、可用性以及开销合宜的产品。10.软件开发模型大体上可分为两种类型,第一种是以软件需求完全确定为前提的瀑布模型。第二种是在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型。 二、选择题 题目2 下列叙述中正确的是_____。 选择一项:B A. 设计算法时只需要考虑数据结构的设计 B. 以上三种说法都不对 C. 设计算法时只需要考虑结果的可靠性 D. 算法就是程序 题目3 下列叙述中正确的是_____。 选择一项:D A. 一个算法的空间复杂度大,则其时间复杂度也必定大 B. 一个算法的空间复杂度大,则其时间复杂度必定小 C. 一个算法的时间复杂度大,则其空间复杂度必定小 D. 以上三种说法都不对 题目4 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()。选择一项:B A. 有穷性 B. 有零个或多个输出 C. 可行性 D. 有零个或多个输入 题目5 下面叙述正确的是()。 选择一项:C A. 算法的时间复杂度与空间复杂度一定相关 B. 数据的逻辑结构与存储结构是一一对应的 C. 算法的时间复杂度是指执行算法所需要的计算工作量 D. 算法的效率只与问题的规模有关,而与数据的存储结构无关 题目6

面向对象程序设计C#课程教案

《程序设计与算法(C#)二》课程教案 一、课程说明 1、课程代码: 040483 2、总学时数: 64 ,其中理论环节学时数: 32 ,实验实践环节学时数: 36 3、学分: 6分 4、适用专业:计算机应用技术 5、本课程的性质、地位和作用 本课程是计算机应用技术的一门重要的编程类专业课。C#语言是针对网络技术应 用而开发的语言,课程的主要教学内容以应用为主,以语法介绍为辅,主要包括C# 语言基本语法、面向对象编程方法,C#开发Windows应用程序,C#开发Web应用程序等。本课程的先修课是计算机应用基础或C语言,后续课程是基于C#的Web应用程 序设计。本课程是软件工程、信息系统开发、开发工具等课程的前驱课程。 《程序设计与算法(C#)》采用CAI课件,在多媒体教室讲授。使用多媒体技术 可以提高授课效率,可以现场运行、修改例子程序,实现直观教学,提高授课效果。 本课程以从实际应用出发,集应用与原理于一体,两部分内容互相联系,又各 有侧重,力求做到理论联系实际,用理论来指导实际应用。 二、教学基本要求 1、本课程的目的、任务 课程的教学目的是培养学生使用NET平台开发桌面及网络应用程序的能力。教学 任务是让学生掌握C#语言的基本知识与技术,理解并树立面向对象的程序设计思想,培养运用Visual C#https://www.sodocs.net/doc/9112683507.html,开发工具进行编程的能力。 2、本课程的教学要求 课程的要求是培养学生面向对象编程的思想和能力及素质,为以后学习其它面向 对象的编程语言打下坚实的基础。本课程是一个实践性非常强的课程,要求学生要注 重实践,在掌握C#语言的基本语法后,重点应放在提高编程能力的训练上。

面向对象程序设计大作业(C++)

面向对象分析/设计课程大作业 银行业务处理系统 13级软件学院测试班 1367004029 曾丹 1.需求分析 随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。 现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如

何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。 近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。 随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。 特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。 主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。 系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。 储蓄卡开户管理模块:卡号、姓名、开户金额、身份证号、地址、电话、密码、确认密码和保存组成。(开户金额必须是数字,密码和确认密码必须一样是六位数字) *注销模块:一旦注销该卡号就不存在且余额提醒你取出。 通过该银行账户管理系统地运行,使办公人员可以轻松快捷的完成对账户管理的任务,提高账目管理效率,使银行的账目管理工作系统化、规范化、自动化。 该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计各阶段分工明确。经过实践证明,该划分是合理的,极大得提高了本系统的实现。

电大VB形考理论01答案

01任务_0026 1.当运行程序时,系统自动执行启动窗体的()事件过程。 A. Load B. Click C. Unload D. GotFocus 正确答案:A满分:2得分:2 2.在Visual Basic环境下,当写一个新的Visual Basic程序时,所做的第一件事是()。 A. 编写代码 B. 新建一个工程 C. 打开属性窗口 D. 进入Visual Basic集成开发环境 正确答案:B满分:2得分:2 3.要在窗体的标题内显示“myfrm”,使用的语句是() A. "myfrm" B. "myfrm" C. ="myfrm" D. ="myfrm" 正确答案:D满分:2得分:2 4.将定时器的时间间隔设置为1秒,则定时器的Interval属性值应设为() A. 1 B. 100 C. 1000 D. 10 正确答案:C满分:2得分:2 5.要使窗体在运行时不可改变窗体的大小和没有最大化和最小化按钮,只要对下列()属 性设置就有效。 A. MaxButton

B. BorderSyle C. Width D. MinButton 正确答案:B满分:2得分:2 6.在集成开发环境中有三种工作模式,下列不属于三种工作模式之一的是() A. 设计模式 B. 中断模式 C. 执行模式 D. 编写代码模式 正确答案:D满分:2得分:2 7.若要将窗体从内存中卸载,应使用的方法是()。 A. Show B. Unload C. Load D. Hide 正确答案:B满分:2得分:2 8.对象的性质和状态特征称为() A. 事件 B. 方法 C. 属性 D. 类 正确答案:C满分:2得分:2 9.能够改变标签控件显示标题的属性是() A. Name B. Caption C. Text

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

面向对象程序设计教案

第2章 C++ 编程基础 程序设计工作主要包括数据结构(即数据类型)和算法(操作步骤)的设计。程序中最基本的元素是数据类型,确定了数据类型,才能确定变量空间的大小和其上的操作;算法是由一系列控制结构组成。 每种语言都是用一组字符来构造有意义的语句,C++语言的字符集由下述字符构成: ? 英文字母:A ~Z ,a ~z ? 数字字符:0~9 ? 特殊字符: 空格 ! # % ^ & * _(下划线) + = : - ~ < > / \ ‘ “ ; . () {} [] 2.1 数据类型与表达式 一个程序要运行,就要先描述算法。描述一个算法应先说明算法要用的数据,数据以变量或常量的形式来描述,每个变量或常量都有数据类型。C++中的数据类型分为基本类型和非基本类型,见图2-1。基本类型是C++编译系统内置的,非基本类型也称是用户定义数据类型,即用户自己定义的数据类型, 字符型 整型 整数integer 短整形 长整形 基本类型 逻辑型 bool 单精度型float 实数 floating 双精度型 double 数据类型 长双精度型 long double 枚举型enum 数组型 非空数据类型 [ ] 指针型 非空数据类型 * 非基本类型 空类型 void 结构体类型 struct 共用体类型 union 类 class

图2-1 C++数据类型 数据类型的定义确定了其内存所占空间大小,也确定了其表示范围。表1-1列出了基本数据类型的取值范围。需要说明的是,在不同的系统中,每个变量类型所占的字节数目可能有所不同,这里列出的是在VC++编译环境中的情况。 表2-1 常用基本数据类型描述 2.1.1 常量 所谓常量是指在程序运行的整个过程中其值始终不可改变的量,常量有以下几种:1.整型常量 整型常量即以数码形式出现的整数,包括正整数、负整数和零。整型常量的表示形式有十进制、八进制和十六进制。 十进制整型常量的一般形式为:[±]若干个0~9的数字 八进制整型常量的一般形式为:[±]0若干个0~7的数字 十六进制整型常量一般形式为:[±]0x若干个0~9的数字及A~F的字母 整型常量可以用后缀字母L(或l)表示长整型,后缀字母U(或u)表示无符号型,也可同时用后缀L和U(大小写无关)。 2.实型常量 实型常量又称浮点小数,在C++语言中,实型常量只使用十进制表示,有两种表示形式:

面向对象程序设计作业参考答案

习题一 5、分析下面程序运行的结果。 # using namespace std; int main() { cout<<”This”<<”is”; cout<<”a”<<”C++”; cout<<”program.”< using namespace std; int main() { int a,b,c; a = 10; b = 23; c = a + b; cout<<'a + b ="; cout< using namespace std; int main() { int a, b; a = b = 0; int c = a + b; cout<<”a + b =”<

9、输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。 修改后的程序如下: #include using namespace std; int add(int x,int y); int main() { int a = 0, b = 0; int c = add(a,b); cout<<" a + b ="<

面向对象程序设计基本概念

面向对象程序设计基本概念 面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。 类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。 消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。 面向对象主要特征: 封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。 继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。 多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

面向对象程序设计试卷作业答案

《面向对象程序设计》作业答案 作业一: 编写程序,将从键盘读入的所有大小写字母写入名为a.txt的文件中(遇EOF结束)。(本题总分10分,fopen函数使用妥当4分,读入过程正确4分,关闭文件2分。程序结构完整,有不妥之处,酌情扣分。) #include main ( ) { FILE *fptr; fptr = fopen("a.txt","w"); if (fptr==NULL) return 0; char a; a=getchar( ); while(a!=EOF ) { if(a>=’a’ && a<=’z’|| a>=’A’ && a<=’Z’) fputc(a,fptr); a = getchar(); } fclose(fptr); return 0; } 作业二 定义一个矩形类Rectangle,并在main函数中用它声明一个矩形对象,然后利用接口 设置该矩形对象的长和宽、计算面积并输出。(本题总分10分,类结构2分,设置矩阵对象的长与高各1分,计算面积函数2分,输出函数2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。) #include #include class Rectangle { public: int getArea(); void setWidth(int w); void setLength(int l); private: int Length; int Width;

}; int Rectangle::getArea() { return Length*Width; } void Rectangle::setLength(int l) { Length=l; } void Rectangle::setWidth(int w) { Width=w; } main() { int len,wid; Rectangle r1; cout<<"Input the Rectangle's Information"<>len; cout<<"Width:"<>wid; r1.setLength(len); r1.setWidth(wid); cout<<"Rectangle's Area:"< #include struct Node { int item; struct Node *next; };

相关主题