C++面向对象程序设计 2010期末考试 编程题

C++面向对象程序设计 2010期末考试 编程题
C++面向对象程序设计 2010期末考试 编程题

1、编写一个程序根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形

类型(等边、等腰、直角三角形)。

#include

#include

using namespace std;

int main()

{

double a,b,c;

double v,p;

cout<<"请输入三角形三条边:"<

cin>>a>>b>>c;

if(a+b>c&&a+c>b&&b+c>a)

{

p=(a+b+c)/2;

v=sqrt(p*(p-a)*(p-b)*(p-c));

cout<<"该三角形面积是"<

if(a==b&&a==c)

cout<<"该三角形是等边三角形!"<

else

if(a==b&&a!=c||a==c&&a!=b||b==c&&b!=a)

cout<<"该三角形是等腰三角形!"<

if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a))

cout<<"该三角形是直角三角形!"<

}

else

cout<<"这三条边组不成三角形!"<

return 0;

}

2、定义一个学生类,其中有3 个数据成员:学号、姓名、年龄,以及若干成员函数。同时编写main 函数

使用这个类,实现对学生数据的赋值和输出。

#include

#include

using namespace std;

class student

{

int num;

string name;

int age;

public:

student(){num=0;name='\0';age=0;}

student(int,string,int);

void show();

};

student::student(int a,string b,int c):num(a),name(b),age(c){}

void student::show()

{

cout<<"student number:"<

cout<<"name:"<

cout<<"age:"<

}

int main()

{

student s1(200803986,"梅寒芳",23);

s1.show();

return 0;

}

3、从键盘输入若干个学生成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。

#include

using namespace std;

int main()

{

double a[100];

double max=0,min=100,t;

int i;

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

{

cin>>a[i];

if(a[i]<0)

break;

else

{

if(a[i]>max)

max=a[i];

if(a[i]

min=a[i];

}

}

cout<<"最大值是:"<

cout<<"最小值是:"<

return 0;

}

4、编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积。

#include

using namespace std;

int main()

{

double a,h,s,v;

cout<<"半径为:"<

cin>>a;

cout<<"高为:"<

cin>>h;

s=3.14159*a*a;

v=s*h;

cout<<"底面积为:"<

cout<<"体积为:"<

return 0;

}

5、编写一个程序,输入年、月,打印出该年份该月的天数。

#include

main()

{

int y,m,d;

printf("year month=");scanf("%d%d",&y,&m);

switch(m){

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:d=31;break;

case 4:

case 6:

case 9:

case 11:d=30;break;

case 2:if (y%4==0 && y%100!=0 || y%400==0) d=29; else d=28;

}

printf("days=%d\n",d);

}

6、编写函数将化氏温度转换为摄氏温度,公式为C=(F-32)*5/9;并在主函数中调用。

#include

using namespace std;

double fun(double a);

int main()

{

double f=37.5,c;

c=fun(f);

cout<<"华氏温度为:"<

cout<<"摄氏温度为:"<

return 0;

}

double fun(double a)

{

double b;

b=(a-32)*5/9;

return b;

}

7、声明一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)用以对ages 加上years,

showage( )用以显示tree对象的ages值。在主函数中定义Tree类对象,并调用成员函数(学生自行指定实参数

#include

using namespace std;

class Tree

{

private:

int ages;

public:

int grow(int years)

{

ages=ages+years;

return ages;

}

void getage()

{

cout<<"输入树的树龄:"<

cin>>ages;

}

void showage()

{cout<<"该树的年龄是:"<

};

int main()

{

Tree ages,years;

ages.getage();

ages.grow(5);

ages.showage();

return 0;

}

8、定义一个复数类,用友元函数实现对双目运算符“+”的运算符重载,使其适用于复数运算。

#include

class Complex

{

private:

double real;

double imag;

public:

Complex(){real=0;imag=0;}

Complex(double r,double i):real(r),imag(i){}

friend Complex operator+(Complex &c1,Complex &c2);

void display();

};

void Complex::display()

{

cout<

}

Complex operator+(Complex &c1,Complex &c2)

{

return Complex(c1.real+c2.real,c1.imag+c2.imag);

}

int main()

{

Complex c1(3,4);

Complex c2(4,2.3);

Complex c3;

c3=c1+c2;

c3.display();

return 0;

}

9、有一个函数如下:

x (x<5)

y= x+6 (5<=x<15)

x-6 (x>=15)

输入x的值,计算出相应的y值。

#include

using namespace std;

int main()

{

int x,y;

cin>>x;

if(x<5) y=5;

if(x>=5&&x<15) y=x+6;

if(x>=15) y=x-6;

cout<

return 0;

}

10、14、17、使用函数重载的方法定义两个重名函数,分别求出整型数的两数之和和浮点数的两数之和,并在主函数中调用。

#include

using namespace std;

template

T add(T a,T b)

{

T c;

c=a+b;

return c;

}

int main()

{

int a,b,c;

float x,y,z;

cout<<"请输入两个整型数:"<

cin>>a>>b;

cout<<"请输入两个浮点数:"<

cin>>x>>y;

c=add(a,b);

z=add(x,y);

cout<<"整型数之和是:"<

cout<<"浮点数之和是:"<

return 0;

}

11、定义一个抽象类shape用以计算面积,从中派生出计算长方形、梯形、圆形面积的派生类。程序中通过基类指针来调用派生类中的虚函数,计算不同形状的面积。

#include

#define PI 3.1415926

using namespace std;

class Shape

{

public:

void show();

protected:

double s;

};

void Shape::show()

{

cout<<"面积:"<

}

class Circle :public Shape

{

public:

void GetArea();

Circle(double);

private:

double r;

};

Circle::Circle(double a)

{

r=a;

}

void Circle::GetArea()

{

s=r*r*PI;

}

int main()

{

Circle C(6);

C.GetArea();

C.show();

return 0;

}

12、定义计数器类Counter。要求具有以下成员:计数器值;可进行增值和减值记数;可提供记数值。

#include

using namespace std;

class Counter

{

public:

Counter(int );

Counter operator ++();

Counter operator --();

void display();

private:

int i;

};

Counter::Counter(int a)

{

i=a;

}

void Counter::display()

{

cout<

}

Counter Counter:: operator ++()

{

return Counter (++i);

}

Counter Counter:: operator --()

{

return Counter(--i);

}

int main()

{

Counter C1(5);

cout<<"C1=";C1.display();

++C1;

cout<

--C1;

cout<

cout<

return 0;

}

13、输入一个自然数,输出其各因子的连乘形式,如输入12,则输出12=1*2*2*3。

#include

using namespace std;

int main()

{

int i,n;

cin>>n;

cout<<"n="<<"1";

for(i=2;i<=n;)

{

if(n%i==0)

{

n=n/i;

cout<<"*"<

continue;

}

i++;

}

cout<

return 0;

15、定义一个基类:点类,包括x坐标和y坐标,从它派生一个圆类,增加数据成员r(半径),圆类成员

函数包括构造函数、求面积的函数和输出显示圆心坐标及圆半径的函数。

#include

using namespace std;

class Dot

{

public:

int x;

int y;

Dot(){}

};

class Circle:public Dot

{

private:

int r;

public:

Circle():Dot(){}

void get();

void area();

void show();

};

void Circle::get()

{

cout<<"输入圆心坐标、圆的半径:"<

cin>>x>>y>>r;

}

void Circle::area()

{

double s=0;

s=3.14159*r*r;

cout<<"圆的面积是:"<

}

void Circle::show()

{

cout<<"圆心坐标是:("<

cout<<"圆的半径是:"<

}

int main()

{

Circle d;

d.get();

d.area();

d.show();

return 0;

}

16、N个整数从小到大排列,输入一个新数插入其中,使N+1个整数仍然有序。#include

using namespace std;

int main()

{

int a[11]={10,20,30,40,50,60,70,80,90,100};

int i,j,n;

cout<<"原顺序为:"<

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

cout<

cout<

cout<<"请输入一个新数:"<

cin>>n;

if(a[0]>n)

{

for(i=9;i>=0;i--)

a[i+1]=a[i];

a[0]=n;

}

if(a[9]

if(n>a[0]&&n

{

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

if(n>a[i]) j=i+1;

for(i=9;i>=j;i--)

a[i+1]=a[i];

a[j]=n;

}

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

cout<

cout<

return 0;

}

18、编写一个矩形rectangle类,有数据成员长len和宽wid,构造函数retange(int,int).和友元函数

int area(rectangle T)和int fun(rectangle T) 分别计算给定长方形的周长和面积。

#include

using namespace std;

class rectangle

{

public:

rectangle(int ,int );

friend int area(rectangle T);

friend int fun (rectangle T);

private:

int len,wid;

};

rectangle::rectangle(int a, int b)

{

len=a;

wid=b;

}

int area(rectangle T)

{

return (T.len*T.wid);

}

int fun(rectangle T)

{

return (2*(T.len+T.wid));

}

int main()

{

rectangle R(20,30);

cout<<"面积:"<

cout<<"周长:"<

return 0;

}

19、定义一个复数类,用友元函数实现对双目运算符+和*的运算符重载,使其适用于复数运算。

#include

#include

class CComplex

{

#define err 0.00000001

double _x,_y;

public:

CComplex(double x=0,double y=0):_x(x),_y(y){}

CComplex operator+(const CComplex&z);

CComplex operator*(const CComplex&z);

friend ostream&operator <<(ostream&os,const CComplex&z);

friend istream&operator >>(istream&is,CComplex&z);

};

int main()

{

CComplex z1(0,1.2);

CComplex z2(1,1.2);

cout<

cout<

cin>>z1;

cout<

return 0;

}

CComplex CComplex::operator+(const CComplex&z)

{

CComplex c;

c._x=_x+z._x;

c._y=_y+z._y;

return c;

}

CComplex CComplex::operator*(const CComplex&z)

{

CComplex c;

c._x=_x*z._x-_y*z._y;

c._y=_x*z._y+_y*z._x;

return c;

}

ostream&operator <<(ostream&os,const CComplex&z)

{

if(fabs(z._x)>err)

cout<

if(fabs(z._y-1)

cout<<(fabs(z._x)>err?"+i":"i");

else if(fabs(z._y+1)

cout<<"-i";

else if(z._y >err)

cout<<(fabs(z._x)>err?"+":"")<

else if(z._y<-err)

cout<

return os;

}

istream&operator >>(istream&is,CComplex&z)

{

is>>z._x>>z._y;

return is;

}

20、输入10 个同学的成绩,统计80分以上和不及格的人数,并输出平均值。#include

using namespace std;

int main()

{

double a[10],sum=0,var;

int i,j=0,k=0;

cout<<"请输入10个学生成绩:"<

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

{

cin>>a[i];

sum=sum+a[i];

if(a[i]>=80)

j++;

if(a[i]<60)

k++;

}

var=sum/10;

cout<<"80分以上的人数是:"<

cout<<"不及格的人数是:"<

cout<<"平均分是:"<

return 0;

}

21、声明一个类String1,其数据成员为char head[100],构造函数String(char *Head)实现head的初始化,成员函数void Reverse()实现head内字符串的逆序存放,成员函数void Print()实现head 内字符串的输出。

#include

#include

using namespace std;

class String

{

public:

String (char *Head);

void Reverse();

void Print ();

private:

char head[100];

};

String::String(char *Head)

{

int i=0;

char *p=Head;

while(*p!='\0')

{

head[i]=*p;

i++;

p++;

}

head[i]='\0';

}

void String::Reverse()

{

int i=0;

char h[100],*p=head;

while(*p!='\0') p++;

while(*p!=head[0])

{

p--;

h[i]=*p;

i++;

}

h[i]='\0';

while(i>=0)

{

head[i]=h[i];

i--;

}

}

void String::Print()

{

char *p=head;

for(;(*p)!='\0';p++) cout<<(*p);

cout<

}

int main()

{

char *Head="abcdefgh";

String s(Head);

cout<<"正序:";

s.Print();

s.Reverse();

cout<<"逆序:";

s.Print();

return 0;

}

22编写程序形成如下矩阵。

A=???????

??????

???12345

11234

111231********* #include

using namespace std;

int main()

{

int a[5][5];

int ii,jj;

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

{

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

{

if (ii - jj < 1)

{

a[ii][jj] = 1;

}

else

{

a[ii][jj] = ii+1 - jj;

}

}

}

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

{

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

cout<

cout<

}

return 0;

}

23、定义盒子Box 类,要求具有以下成员:可设置盒子形状;可计算盒子体积;可计算盒子的表面积。 #include

using namespace std;

class Box

{

public:

Box(double,double,double);

double area();

double v();

private:

double x,y,z;

};

Box::Box(double x1,double y1,double z1)

{

x=x1;

y=y1;

z=z1;

}

double Box::area()

{

return (2*(x*y+y*z+x*z));

}

double Box::v()

{

return (x*y*z);

}

int main()

{

Box B(2,3,4);

cout<<"表面积:"<

cout<<"体积:"<

return 0;

}

24、33、声明一个哺乳动物Mammal 类,再由此派生出狗Dog 类,声明一个Dog 类的对象,观察基类与派

生类的构造函数与析构函数的调用顺序。

#include

using namespace std;

class mammal

{

public:

mammal()//默认构造函数

{

cout<<"mammal's constructor"<

}

~mammal()

{

cout<<"mammal'a destucor"<

}

};

class dog :public mammal

{

public:

dog()

{

cout<<"dog's constructor"<

}

~dog()

{

cout<<"dog's destructor"<

}

};

int main()

{

dog a;

return 0;

}

25、30、定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和

工资,学生类增加学号、班级、专业和入学成绩。

#include

#include

using namespace std;

class person

{

public:

person(string ,string,int);

protected:

string name;

string sex;

int age;

};

person::person(string n, string s, int a)

{

name=n;

sex=s;

age=a;

}

class teacher :public person

{

public:

teacher(string ,string,int,string,string,double);

void display();

private:

string work_num;

string title;

double wage;

};

teacher::teacher(string n, string s, int a, string wo, string t, double wa):person( n,s,a) {

work_num=wo;

title=t;

wage=wa;

}

void teacher::display()

{

cout<<"姓名:"<

cout<<"工号:"<

}

class student: public person

{

public:

student(string,string,int,string,string,string,double);

void show();

private:

string num;

string grade;

string major;

double score;

};

student::student(string n, string s, int a, string nu, string g, string m, double sc):person(n,s,a) //注意:只写 n,不是string n

{

num=nu;

grade=g;

major=m;

score=sc;

}

void student::show()

{

cout<<"姓名:"<

cout<<"学号:"<

}

int main()

{

teacher t("侯传旺","男",20,"200901001010","教授",2100);

t.display();

student s("秦洪敏","女",21,"200902002026","大二","应用心理学",540);

s.show();

return 0;

}

26、写一个Complex类,将运算符“+”重载为适用于复数加法,重载函数不作为成员函数,而放在类外,

作为Complex类的友元函数。如例题10.3

#include

class complex

{

private:

double a;

double b;

public:

complex();

complex(double i,double j);

friend complex operator +(complex&,complex);

void setreal(double x);

void setimag(double y);

void getreal();

void getimag();

friend ostream& operator <<(ostream& out,complex& x);

friend istream& operator >>(istream& in,complex& x);

};

complex::complex():a(0),b(0){}

complex::complex(double i,double j):a(i),b(j){}

complex operator +(complex&x,complex y)

{

y.a+=x.a;

y.b+=x.b;

return complex(y.a,y.b);

}

ostream& operator<<(ostream& out,complex &x)

{

out<

return out;

}

istream& operator >>(istream& in,complex& x)

{

in>>x.a>>x.b;

return in;

}

void complex::setreal(double x){a=x;}

void complex::setimag(double y){b=y;}

void complex::getreal()

{cin>>a;}

void complex::getimag()

{cin>>b;}

int main()

{

complex a;

complex b;

cin>>a>>b;

//cout<

//cout<

cout<

//cout<

//cout<

return 0;

}

27、实现一个名为SimpleCircle的简单圆类,其数据成员int *itsRadius为一个指向其半径值的指针,设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。

#include

#define PI 3.1415926

using namespace std;

class SimpleCircle

{

public:

SimpleCircle(int *);

double fun();

double area();

private:

int *itsRadius;

};

SimpleCircle::SimpleCircle(int * i)

{

itsRadius=i;

}

double SimpleCircle::fun()

{

return (2 * PI * (*itsRadius));

}

double SimpleCircle::area()

{

return (PI*PI*(*itsRadius));

}

int main()

{

int a;

cout<<"请输入一个整数:";

cin>>a;

SimpleCircle S1(&a);

cout<<"周长:"<

cout<<"面积:"<

return 0;

}

28、有一个Time类,包含数据成员minute(分)和sec(秒),模拟秒表,每次走一秒,满60秒进一分钟,

此时秒又从0开始算。要求输出分和秒的值。(提示:重载单目运算符++)

#include

using namespace std;

class Time

{

public:

Time(int ,int );

void operator ++();

void display();

private:

int minute,sec;

};

Time::Time(int a,int b)

{

minute=a;

sec=b;

}

void Time::operator ++()

{

if (sec<59)

sec++;

else

{

minute++;

sec=0;

}

}

void Time::display()

{

cout<

}

int main()

{

Time T1(3,59);

T1.display();

T1++;

T1.display();

return 0;

}

29、有一个学生类student,包括学生姓名、成绩,设计一个友元函数,输出成绩对应的等级:大于等于

90:优;80~90:良;70~79:中;60~69:及格;小于60:不及格。

#include

#include

using namespace std;

class student

{

public:

friend void grade(student & );

student (string ,int);

private :

string name;

int score;

};

student::student(string n,int s)

{

name=n;

score=s;

}

void grade (student & s)

{

if(s.score >=90)

cout<<"姓名:"<

if (s.score<90 && s.score>=80)

cout<<"姓名:"<

if (s.score>=70&&s.score<80)

cout<<"姓名:"<

if (s.score>=60&&s.score<70)

cout<<"姓名:"<

if (s.score<60)

cout<<"姓名:"<

}

int main()

{

student s1("小红",98);

grade (s1);

return 0;

}

31、编写一个函数来检验输入的一个字符是大写字母还是小写字母或不是26个英文字母。

#include

#include

using namespace std;

void judge(char s)

{

if(s<='Z'&&s>='A')

cout<<"该字母是大写字母!"<

else

if(s>='a'&&s<='z')

cout<<"该字母是小写字母!"<

else

cout<<"该字母不是26个英文字母!"<

}

int main()

{

char s;

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

cin>>s;

judge(s);

return 0;

}

32、有两个长方柱,其长、宽、高分别为: (1)12,20,25;(2)10,14,20。求它们的体积。编一个基于对象的程序,在类中用带参数的构造函数。

#include

using namespace std;

class Cuboid

{

int length;

int width;

int high;

public:

Cuboid(){length=0,width=0,high=0;}

Cuboid(int a,int b,int c):length(a),width(b),high(c){}

void setnum(int a,int b,int c)

{length=a,width=b,high=c;}

void show()

{cout<<"体积为:"<

};

int main()

{

Cuboid a;

a.setnum(12,20,25);

Cuboid b(10,14,20);

a.show();

b.show();

return 0;

}

34、设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+”,以实现求两个三角形对象的面积之和。

#include

#include

using namespace std;

class Triangle

{

public:

Triangle(double ,double,double);

double operator + (Triangle &);

private:

double a,b,c;

};

Triangle::Triangle(double a1,double b1,double c1)

{

a=a1;

b=b1;

c=c1;

}

double Triangle::operator +(Triangle & T)

{

double p1,m1,s1,p2,m2,s2;

p1=(a+b+c)/2;

m1=p1*(p1-a)*(p1-b)*(p1-c);

s1=sqrt(m1);

p2=(T.a+T.b+T.c)/2;

m2=p2*(p2-T.a)*(p2-T.b)*(p2-T.c);

s2=sqrt(m2);

return (s1+s2);

}

int main()

{

Triangle T1(3,4,5),T2(6,8,10);

double s;

s=T1+T2;

cout<<"面积之和:"<

return 0;}

《面向对象程序设计C 》期末试卷及标准答案

《面向对象程序设计C++》期末考试试卷(B) 一、单项选择题(每小题2分,共40分) 1、关于C++与C语言关系的描述中,()是错误的。 A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的 2、已知:int m=10; 下列表示引用的方法中,()是正确的。 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='*'); 下面函数调用中,不合法的是()。 A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。 A.函数的返回值类型B.参数的类型C.函数名称D.参数个数 5、下列有关C++类的说法中,不正确的是()。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数或类的友元函数才能存取类中的私有成员 C.在类中,如果不做特别说明,所有成员的访问权限均为私有的 D.在类中,如果不做特别说明,所有成员的访问权限均为公用的 6、已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法,不正确的是()。 A.析构函数有且仅有一个 B.析构函数和构造函数一样可以有形参 C.析构函数的功能是在系统释放对象之前作一些内存清理工作 D.析构函数无任何函数类型

c面向对象程序设计试题和答案(经典题目)

一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”<

(A)指针(B)引用(C)枚举(D)结构 3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。 (A)share (B)public (C)private (D)protected 4、关于构造函数,下列说法不正确的是()。 (A)构造函数名字和类名相同 (B)构造函数在创建对象时自动执行 (C)构造函数无任何函数返回类型 (D)构造函数有且只有一个 5、派生类可以访问其基类的()。 (A)公有成员(B)保护成员 (C)私有派生(D)公有和保护成员 6、下列关于运算符重载的描述中,错误的是()。 (A)运算符重载不可以改变操作数的个数 (B)运算符重载不可以改变运算符的功能 (C)运算符重载不可以改变结合方向 (D)运算符重载不可以改变运算优先级 7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是() (A)面向过程(B)面向对象(C)安全性(D)复用性 8、对于类中定义的成员,其隐含访问权限为()。 A.public B.protected C.private D.static 9、下面有关重载函数的说法中正确的是() (A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表(D)重载函数名可以不同; 10、有如下的对类“CSample”的说明,其中()是错误的。 class CSample { A.int a=23; B.CSample(); public: C.CSample(int val); D.~ CSample(); 11、在int a=3,int *p=&a;中,*p的值是( ) A.变量a的地址值 B.无意义 C.变量p的地址值 D.3 12、每个类()构造函数。 (A)只能有一个(B)只可有公有的

什么是面向对象程序设计

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

第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:"<

面向对象程序设计的基本思想

课题:面向对象程序设计的基本思想 (一)教学设计思想与理论依据: 《算法与程序设计》模块的教学强调通过该模块的学习,学生应该体验客 观世界的计算机对象化表征和算法思维,掌握几种基本算法;能运用面向对 象的方法,设计解决简单问题的算法,并能初步使用一种面向对象的程序设 计语言,编制程序实现算法解决该问题。 (二)教学内容分析 教材以广东教育出版社出版的信息技术(选修一)《算法与程序设计》第五章第一节内容为结构框架,本节主要介绍面向对象思想产生的必然性和面向对象思想的机制,以及通过对同一个问题采取面向过程和面向对象两种不同思想解决的区别,让学生感受到面向对象程序设计的优越性。 (三)学生情况分析: 学生已学完教材前四章内容,基本掌握了传统的面向过程结构化程序设计方法,有一定的程序设计基础。 (四)教学策略与模式: 采用讲解、任务驱动、实践和学生自主学习相结合的教学方式 (五)教学资源: 硬件:多媒体电脑教室,投影仪,广播系统 软件:学生机安装vb6.0 (六)教学目标: 知识与技能 1.了解面向对象程序设计的基本思想和面向对象思想的由来,并能够举例说 明现实世界与面向对象系统之间的对应关系。 2.了解面向对象程序设计的优越性并初步理解其实现的机制。 过程与方法 经历分析、调试解决同一问题的两种不同实现思想的程序,初步理解面向对象程序设计的优势及面向过程程序设计的缺陷。 情感态度和价值观 (1)关注传统结构化程序设计存在的问题。 (2)产生学习面向对象程序设计技术的愿望。 (3)关注面向对象技术是当前程序设计的重要发展方向。 (七)重点难点 教学重点 (1)传统结构化程序设计存在的问题 (2)面向对象程序设计所具有的优点。 教学难点 (1)面向对象思想的产生。 (2)传统结构化程序设计与面向对象程序设计的基本点比较。 (3)实现面向对象程序设计的基本机制。 教学过程:

面向对象程序设计C自学考试课程复习题

(07837)《面向对象程序设计C++》复习题 一、单选题 1.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( D ) A. 公有类型 B. 私有类型 C. 保护类型 D. 友元类型 2.下列关于多态性的描述,错误的是( C ) A. C++语言的多态性分为编译时的多态性和运行时的多态性 B. 编译时的多态性可通过函数重载实现 C. 运行时的多态性可通过模板和虚函数实现 D. 实现运行时多态性的机制称为动态绑定 3.在C++语言中,数据封装要解决的问题是( D ) A. 数据的规范化 B. 便于数据转换 C. 避免数据丢失 D. 防止不同模块之间数据的非法访问 4.使用private修饰的成员变量,以下说法正确的是( A ) A. 只能由本类中的函数使用,不能被外面的程序所访问。 B. 可以由本类中的函数使用,也可以被外面的程序所访问。 C. 只能由本类和派生类中的函数使用。 D. 可以在主函数中使用。 5.对类的构造函数和析构函数描述正确的是( A ) A. 构造函数可以重载,析构函数不能重载 B. 构造函数不能重载,析构函数可以重载 C. 构造函数可以重载,析构函数也可以重载 D. 构造函数不能重载,析构函数也不能重载 6.下面对静态数据成员的描述中,正确的是( A ) A. 静态数据成员是类的所有对象共享的数据 B. 类的每个对象都有自己的静态数据成员 C. 类的不同对象有不同的静态数据成员值 D. 静态数据成员不能通过类的对象调用 7.在VC++语言类体系中,不能被派生类继承的有( B ) A. 转换函数 B. 构造函数 C. 虚函数 D. 静态成员函数 8.下面关于句柄正确的说法是( A ) A. 句柄是一个标识Windows资源和设备等对象的变量。 B. 句柄是用户程序自定义的数据类型。 C. 用户程序使用句柄时不需要定义。 D. 句柄仅仅是一个抽象的概念,程序中不能使用句柄。 9.下面关于动态链接库正确的说法是( B ) A. 动态链接库提供的函数,在编译阶段能够连接到应用程序中。 B. 动态链接库提供的函数,在运行阶段能够连接到应用程序中。 C. 动态链接库本身不能单独设计、编译和调试。 D. 动态链接库的使用使得程序缺乏灵活性。 10.下面关于MFC应用程序中InitInstance函数正确的说法是( D ) A. 该函数由用户定义。

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

学号:姓名: 第三章面向对象程序设计作业 一、判断题 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;}

面向对象程序设计试题

《面向对象程序设计》试题(补考) (闭卷考试) 班级:学号:姓名: 1. 单项选择题(每小题3分,共60分) 1)C++语言对C语言做了很多改进。C++语言相对于C语言的最根本的变化是 ( )。 A.增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念 2)下列描述中,不属于面向对象思想主要特征的是( )。 A.封装性B.跨平台性 C.继承性D.多态性 3)每个C++程序中都必须有且仅有一个( )。 A. 类 B. 预处理命令 C. 主函数 D. 语句 4)sizeof(float)是( )。 A. 一个双精度型表达式 B. 一个整型表达式 C. 一种函数调用 D. 一个不合法的表达式 5)设有int x=11;,则表达式(x++*2/3)的值是( )。 A. 7 B. 8 C. 11 D. 12 6)在下面的二维数组定义中,正确的是( )。 A. int a[5][]; B. int a[][5]; C. int a[][3]={{1,3,5},{2}}; D. int a[](10);

7)设有程序代码: int k=10; while(k=0) k=k-1; 则下面描述中正确的是( )。 A. 循环执行10次 B. 无限循环 C. 循环体语句一次也不执行 D. 循环体语句执行一次 8)对表达式for(表达式1; ; 表达式3)可理解为( )。 A. for(表达式1; 0; 表达式3) B. for(表达式1; 1; 表达式3) C. for(表达式1 ; 表达式3;) D. for( ; ; 表达式3) 9)下面的哪个选项不能作为函数的返回类型? ( )。 A.void B.int C.new D.long 10)有如下说明: int a[ ]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=a; 则下面哪一个表达式的值为9 ( )。 A. *p+9 B. *(p+8) C. (*p += 9) D. p+8 11)有如下函数定义: void func(int a, int &b) {a++; b++;} 若执行代码段: int x=0, y=1; func(x, y); 则变量x和y值分别是( )。 A.0和1 B.1和1 C.0和2 D.1和2 12)下列写法正确的是( )。 A. int *p = 15; B. const int a; a=15; C. int& b; D. int b = 15; int* a = &b; 13)下列选项中,与实现运行时多态性无关的是( )。 A.重载函数B.虚函数C.指针D.引用 14)拷贝构造函数的参数一般是( )。 A. 某对象名 B. 某对象成员名 C. 某对象的引用名 D. 指向对象的指针名 15)对类的构造函数和析构函数描述正确的是( )。 A.构造函数可以重载,析构函数不能重载

《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;

c+面向对象程序设计试题和答案题目

系名___ ___ ___ ___ 班级___ ___ ___ ___姓名___ ___ ___ ___学号___ ___ ___ ___ 密 封 线 内 不 答 题 一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”<

面向对象程序设计课后答案(完整版)

第二章2-4 #include using namespace std; Add(int a,int b); int main() { int x,y,sum; cout<<"please input x and y:"; cin>>x>>y; sum = add(x,y); cout < using namespace std; int main() {

int *p,*init; int countp=0; int countn=0; p = new int[20]; init = p; for(int i=0;i<20;i++) { cin>>*p; p++; } p = p-20; for( i=0;i<20;i++) { if(*p>0) countp++; if(*p<0) countn++; cout<<*p<<" "; p++; } cout<<"正数有:"< //#include using namespace std; void checkagescore(string name,int age) { if (name == "exit") throw name; if(age<0||age>50) throw age;

C面向对象程序设计教程第版陈维兴林小茶课后习题答案及解析

C++面向对象程序设计教程课后题答案 1.1 什么是面向对象程序设计? 面向对象程序设计是一种新的程序设计范型.这种范型的主要特征是: 程序=对象+消息 面向对象程序的基本元素是对象。 主要结构特点是: 第一,程序一般由类的定义和类的使用两部分组成; 第二,程序中的一切操作都是通过向对象发送消息来实现的。 1.2 什么是对象?什么是类?对象与类之间的关系是什么? 对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。 类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。 类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。 1.3 现实世界中的对象有哪些特征?请举例说明。 现实世界中的对象具有以下特征: 1) 每一个对象必须有一个名字以区别于其他对象; 2) 用属性来描述对象的某些特征; 3) 有一组操作,每组操作决定对象的一种行为;

4) 对象的行为可以分为两类:一类是作用于自身的行为,另一类是作用于其他对象的行为。 例如一个教师是一个对象。每个教师对象有自己的名字来和别的教师区别。教师具有编号,姓名,年龄,职称,专业等属性。教师拥有走路,吃饭,授课等行为操作。走路,吃饭是作用于自身的行为,授课是作用于其他对象的行为。 1.4 什么是消息?消息具有什么性质? 一个对象向另一个对象发出的请求成为“消息”。 消息具有以下3个性质: 1) 同一个对象可以接收不同形式的多个消息,做出不同的相应; 2) 相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的; 3) 对消息的响应并不是必须的,对象可以响应消息,也可以不响应。 1.5 什么是抽象和封装?请举例说明。 抽象是将有关事物的共性归纳、集中的过程。 例如:把所有具有大学生学籍的人归为一类,成为“大学生”,这就是一个抽象。 封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐藏对象的内部细节。 例如:每一台洗衣机都有出厂日期、机器编号等属性,也有启动、暂停、选择等操作。人们在使用洗衣机的时候只需要按下对应的按钮,而不用关心具体的内部实现。这就是封装。 1.6 什么是继承?请举例说明。 继承就是允许派生类使用基类的数据和操作,同时,派生类还可以增加新的操作和数据。

面向对象程序设计笔记

undeclared identifier “未声明的标识符” (1) 十进制整数:在一个整型常量后面加一个字母 l 或 L,则认为是 long int 型常量? (2) 八进制整数?在常数的开头加一个数字 0,就表示这是以八进制数形 式表示的常数? (3)十六进制整数?在常数的开头加一个数字0和一个英文字母X(或x), 就表示这是以十六进制数形式表示的常数? 2. 浮点数的表示方法 如果在实数的数字之后加字母 F 或f,表示此数为单精度浮点数,如1234F,-43f,占 4 个字节?如果加字母 L 或 l,表示此数为长双精度数(long double), 在Visual C++ 6.0 中占 8 个字节. (2) 指数形式(即浮点形式):用字母 e 表示其后的数是以 10 为底的幂,如 e12 表示 1012? 1.普通的字符常量:用单撇号括起来的一个字符就是字符型常量如′a′,′ #′,′%′,′D′都是合法的字符常量,在内存中占一个字节?“cout<<′\n′; ”将输出一个换行,其作用与“cout<

C面向对象程序设计知识点汇集

C#面向对象程序设计知识点汇集 第一章:C#入门 1.namespace关键字 namespace即命名空间,是定义命名空间的关键字,命名空间包含类,是类的组织方式。namespace 命名空间名 { …//类的定义 } 2.using关键字 using关键字用于导入命名空间 using命名空间名; 3.class关键字 class即类,是定义类的关键字。C#中必须用类来组织程序的变量和方法。 4.Main()方法 C#程序必须且只能包含一个Main()方法,它是程序的入口点。 static void Main(string[] args){} static void Main(){} static int Main(string[] args){} static int Main(){} 5.行输出方法 语句“Console.WriteLine("Hello .NET!");”的功能是向显示屏输出双引号之间的字符串。语句“Console.ReadLine();”的功能是输入一个字符串 6.C#程序结构 C#程序的组成要素如下: 1) 命名空间:命名空间包含一个或多个类。 2) 类。 3) 方法:方法必须包含在某一个类中,作为类的一个成员,每个程序有且仅有一个Main()方法。 4) 语句:语句是C#应用程序中执行操作的命令。C#中的语句必须用分号“;”结束。 5) 关键字:关键字也叫保留字,是对C#有特定意义的字符串。 6) 大括号:在C#中,括号“{”和“}”是一种范围标志,表示代码层次的一种方式。7.C#程序书写格式 1)缩进 2) 字母大小写 C#是大小写敏感的语言,它把同一字母的大小写当作两个不同的字符对待。 3) 程序注释 (1) 单行注释,以双斜线“//”开始,一直到本行尾部,均为注释内容。 (2) 多行注释,以“/*”开始,以“*/”结束,可以注释多行,也可以注释一行代码中间的一部分,比较灵活。 (3) 文档注释,使用“///”,若有多行文档注释,每一行都用“///”开头。 8.Console类 Console类是System命名空间中预定义的一个类,用于实现控制台的基本输入输出。

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

C面向对象程序设计课程设计报告

《C++面向对象程序设计》课程设计报告题目:分数计算器设置 班级: K0312415 专业:计算机科学与技术 学号: 姓名:周林 指导教师: 小组成员:周林,张齐满 二O一三年 10 月 15 日

一、课程设计问题描述 分数计算器设计是高等学校教务管理的重要组成部分,其内容较多,为了简化计论, 要求设计的管理系统能够完成以下功能: (1)定义整数类和分数类。其中,包括构造函数、析构函数、显示函数等。 (2)输入/输出:对流提取和流插入运算符进行重载。 (3)计算功能:可进行分数的加、减、乘和除法运算。 (4)化简功能:将分数化简为最简分数。 (5)异常处理功能:分数中分母不能为零。 (6)菜单功能:每种功能的操作都是在菜单中进行相应选择。 二、课程设计目的和要求: 经过一个学期的《C++面向对象程序设计》课程的学习,已经有了一定地程序设计基础,但是要学好C++面向对象程序设计这门课程,不仅要认真阅读课本知识和从事课堂学习,更重要的是要进行上机实践,通过上机实践才能增强和巩固知识。 三、系统设计(算法分析) 1、系统由5功能,可分别执分数的.加法运算,减法运算,.乘法运算和除法运算,还可以将分数化简。 1.加法运算可计算两个分数相加。 2.减法运算可计算两个分数相减。 3.乘法运算可计算两个分数相乘。 4.除法运算可计算两个分数相除。 5.化简运算可计算一个分数化简。 2、流程图

3、分数计算器设置各函数的功能和实现的相关功能由对应的函数来实现。 (1)函数jia() (2)函数jian() (3)函数cheng()实现分数乘法运算。 (4)函数chu()实现分数除法运算。 (5)函数shuchu()实现分数的输出和化简。 四、程序源代码 pp : Defines the entry point for the console application.

面向对象程序设计期末复习分析

一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1 分,共20 分) 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与(C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 8. 下列不属于类的成员函数的是( C )。 A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 9. 继承机制的作用是( C )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 14. (D )是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. (C ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作 图和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 16.(D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对 象之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 17.(D )就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示 系统中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 18. 在用UML进行数据库的分析与设计过程中,( B ) 就是进行数据库的需求分析,使用用 例图、类图、顺序图、活动图等建立业务模型。 A. 逻辑数据模型设计 B 业务Use Case模型设计 C. 物理数据模型设计 D. 物理实现设计 19. 使用UML进行关系数据库的(B )时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 20. UML的动态建模表示包含(C )种图。 A. 9 B. 5 C. 4 D. 2 二、填空题( 每空1 分,共20 分) 1. 面向对象开发方法一改过去传统的以_功能分析,面向过程_为基础的_对象_的结 构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为

相关文档
最新文档