当前位置:文档之家› c++类与对象练习题

c++类与对象练习题

c++类与对象练习题
c++类与对象练习题

1.概念填空题

1.1 类定义的关键字是class。类的数据成员通常指定为私有成员。类的函数成员通常指定为公有成员,指定为公有的类成员可以在类对象所在域中的任何位置访问它们,类的私有和保护只能被该类的成员函数或友元函数访问。

1.2类的访问限定符包括public、private和protected。类成员默认的访问方式是private。访问限定符在类中无先后次序,各限定符允许(允许/不允许)多次出现。

1.3 构造函数的任务是建立对象。类中可以有多个构造函数,它们由参数区分。如果类说明中没有给出构造函数,则C++编译器会提供构造函数,该函数不完成(完成/不完成)对象初始化工作。

1.4复制构造函数的参数是对象的复制,当程序没有给出复制构造函数时,编译系统会提供默认复制构造函数,完成类对象的复制。复制构造函数被调用情况有 3 种。

1.5析构函数在对象释放时被自动调用。类中没有定义析构函数时,编译系统会提供一个默认的析构函数。该函数不完成(完成/不完成)具体对象的清理工作。

2. 简答题

2.1 为什么说类与对象的概念是客观世界的反映?

2.2 简单解释什么是面向对象程序设计的封装性。

2.3 引用作为函数参数时为什么能实现两个实参之间的数据交换?为什么对应实参不能为引用?为什么返回值为引用的函数可以作为左值?

2.4 什么是默认的构造函数?默认的构造函数可以有多少个?

2.5 复制构造函数用于哪3个方面?

2.6 为什么在友元函数的函数体内访问对象成员时,必须用对象名加运算符”.”再加对象成员名?

2.7 类的静态数据成员与函数中的静态成员有何异同?

2.8 类的成员函数在什么情况下应该定义为私有的?这样做的目的是什么?

2.9 友元关系有何性质?友元关系的优点和缺点各有哪些?

3.选择题

3.1 数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是(B )。

A.类B.对象C.函数体D.数据块

3.2 类的实例化是指(B )。

A.定义类B.创建类的对象C.指明具体类D.调用类的成员

3.3下列说法中正确的是(B )。

A.类定义中只能说明函数成员的函数头,不能定义函数体

B.类中的函数成员可以在类体中定义,也可以在类体之外定义

C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中

D.在类体之外定义的函数成员不能操作该类的私有数据成员

3.4有如下类定义:

class sample {

int n;

public:

sample (int i=0):n(i){ }

void setValue(int n0);

};

下列关于setValue成员函数的实现中,正确的是(B )。

A.sample::setValue(int n0){n=n0;}

B.void sample::setValue(int n0){n=n0;}

C.void setValue(int n0){n=n0;}

D.setValue(int n0){n=n0;}

3.5在下面的类定义中,错误的语句是(C )。

class sample{

public:

sample(int val); //①

~sample( ); //②

private:

int a=2.5; //③

public:

sample( ); //④

};

A.①B.②C.③D.④

3.6类的构造函数被自动调用执行的情况是在创建该类的(C)。

A.成员函数时B.数据成员时

C.对象时D.友元函数时

3.7(A)是析构函数的特征。

A.一个类中只能定义一个析构函数

B.析构函数名与类名不同

C.析构函数的定义只能在类体内

D.析构函数可以有一个或多个参数

3.8 在下列函数原型中,可以作为类AA构造函数的是(D )。

A.void AA(int);B.int AA( );

C.AA(int) const;D.AA(int)

3.9关于成员函数特征的下述描述中,(A)是错误的。

A.成员函数一定是内联函数

B.成员函数可以重载

C.成员函数可以设置参数的默认值

D.成员函数可以是静态的

3.10不属于成员函数的是(B )。

A.静态成员函数B.友元函数

C.构造函数D.析构函数

3.11已知类A是类B的友元,类B是类C的友元,则(d )。

A.类A一定是类C的友元

B.类C一定是类A的友元

C.类C的成员函数可以访问类B的对象的任何成员

D.类A的成员函数可以访问类B的对象的任何成员3.12有如下类定义:

class AA{

int a;

public:

int getRef( ) const {return &a;} //①返回类型为int, return &a为地址int getValue( ) const {return a;} //②

void set(int n) const{a=n;} //③常函数不能修改成员

friend void show(AA aa) const {cout<

};

其中的四个函数定义中正确的是(B)。

A.①B.②C.③D.④

3.13有如下类定义:

class Test{

public:

Test( ){a=0;c=0;} //①常成员必须在初始化列表中初始化

int f(int a) const {this->a=a;} //②常函数不能修改成员

void h(int b) {Test::b=b;}; //③

static int g( ) {return a;} //④静态函数要通过对象访问成员

private:

int a;

static int b;

const int c;

};

int Test::b=0;

在标注号码的行中,能被正确编译的是(C)。

A.①B.②C.③D.④

4写出程序程序执行结果。

4.1#include

using namespace std;

class Test {

public:

Test( ) { n+=2; }

~Test( ) { n-=3;}

static int getNum( ) { return n;}

private:

static int n;

};

int Test::n=1;

int main( ){

Test * p = new Test;

delete p;

cout<<”n=”<

return 0;

}

n=0

4.2#include

using namespace std;

class AA{

int n;

public:

AA(int k):n(k){}

int get( ) {return n;}

int get( ) const{ return n+1;} };

int main( ){

AA a(5);

const AA b(6);

cout<

return 0;

}

5 7

4.3#include

using namespace std;

class MyClass {

public:

int number;

void set(int i);

};

int number=3;

void MyClass::set (int i){

number=i;

}

void main( ){

MyClass my1;

int number=10;

my1.set(5);

cout<

my1.set(number);

cout<

my1.set(::number);

cout<

}

5 10 3

4.4#include

using namespace std;

class Test{

private:

static int val; int a;

public:

static int func( );

void sfunc(Test &r);

};

int Test::val=200;

int Test::func( ){

return val++;

}

void Test::sfunc(Test &r){

r.a=125;

cout<<"Result3="<

}

void main( ){

cout<<"Result1="<

Test a;

cout<<"Result2="<

a.sfunc(a); 125

}

Result1=200

Result2=201

Result1==125

5.编程题

5.1 构造一个日期时间类(Timedate),数据成员包括年、月、日和时、分、秒,函数成员包括设置日期时间和输出时间,其中年、月用枚举类型,并完成测试(包括用成员函数和用普通函数)。

#include

#include

#include

enum YR{Y2000,Y2001,Y2002,Y2003,Y2004,Y2005};//枚举名必须是标识符

enum MT{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};

class Timedate{

private:

YR year;

MT month;

int date;

int hh;

int mm;

int ss;

public:

Timedate(){year=Y2000;month=Jan;date=1;hh=0;mm=0;ss=0;}

Timedate(YR a,MT b,int c){

year=a;

month=b;

date=c;

hh=12;mm=30;ss=0;

}

void getdate(YR &,MT &,int &);//体会用引用的优点,一次可返回3个值void gettime(int &,int &,int &);

void putdate(YR ,MT ,int );

void puttime(int ,int ,int );

void list();

};

void Timedate::getdate(YR &y,MT &m,int &d){

y=year;

m=month;

d=date;

}

void Timedate::gettime(int &a,int &b,int &c){

a=hh;

b=mm;

c=ss;

}

void Timedate::putdate(YR a,MT b,int c){

year=a;

month=b;

date=c;

}

void Timedate::puttime(int a,int b,int c){

hh=a;

mm=b;

ss=c;

}

void Timedate::list(){//成员函数

cout<<"year/month/date :";

switch(year){

case Y2000:cout<<"2000";break;

case Y2001:cout<<"2001";break;

case Y2002:cout<<"2002";break;

case Y2003:cout<<"2003";break;

case Y2004:cout<<"2004";break;

case Y2005:cout<<"2005";break;

}

switch(month){//,,,,,,,,

case Jan:cout<<'/'<<"Jan";break;

case Feb:cout<<'/'<<"Feb";break;

case Mar:cout<<'/'<<"Mar";break;

case Apr:cout<<'/'<<"Apr";break;

case May:cout<<'/'<<"May";break;

case Jun:cout<<'/'<<"Jun";break;

case Jul:cout<<'/'<<"Jul";break;

case Aug:cout<<'/'<<"Aug";break;

case Sep:cout<<'/'<<"Sep";break;

case Oct:cout<<'/'<<"Oct";break;

case Nov:cout<<'/'<<"Nov";break;

case Dec:cout<<'/'<<"Dec";break;

}

cout<<'/'<

cout<<"hour:minite:second :";

cout<

}

void show(Timedate &td){//普通函数,体会两者的不同YR year;

MT month;

int date,hh,mm,ss;

td.getdate(year,month,date);

td.gettime(hh,mm,ss);

cout<<"year/month/date :";

switch(year){

case Y2000:cout<<"2000";break;

case Y2001:cout<<"2001";break;

case Y2002:cout<<"2002";break;

case Y2003:cout<<"2003";break;

case Y2004:cout<<"2004";break;

case Y2005:cout<<"2005";break;

}

switch(month){//,,,,,,,,

case Jan:cout<<'/'<<"Jan";break;

case Feb:cout<<'/'<<"Feb";break;

case Mar:cout<<'/'<<"Mar";break;

case Apr:cout<<'/'<<"Apr";break;

case May:cout<<'/'<<"May";break;

case Jun:cout<<'/'<<"Jun";break;

case Jul:cout<<'/'<<"Jul";break;

case Aug:cout<<'/'<<"Aug";break;

case Sep:cout<<'/'<<"Sep";break;

case Oct:cout<<'/'<<"Oct";break;

case Nov:cout<<'/'<<"Nov";break;

case Dec:cout<<'/'<<"Dec";break;

}

cout<<'/'<

cout<<"hour:minite:second :";

cout<

}

int main(int argc, char* argv[]){

Timedate A(Y2004,Mar,3),B;

A.list();

B.list();

B.putdate(Y2005,Oct,18);

B.puttime(17,30,00);

B.list();

show(B);

return 0;

}

5.2 定义一个日期类Date,具有年月日等数据成员,显示日期、加减天数等函数成员。注意需要考虑闰年。

#include

using namespace std;

class Date{

int year,month,day;

static const int days[];

bool LeapYear();

bool EndofMonth();

public:

Date(int=1900,int=1,int =1);

void Increment(int );

void Decrement(int);

void SetDate(int,int,int);

void Print();

};

const int Date::days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

Date::Date(int y,int m,int d){

SetDate(y,m,d);

}

void Date::SetDate(int y,int m,int d){

year=(y>=1900 && y<=9999)?y:1900;

month=(m>=1 &&m<=12)?m:1;

if(month==2 && LeapYear())

day=(d>=1 && d<=29)?d:1;

else

day=(d>=1 && d<=days[month])?d:1;

}

bool Date::LeapYear(){

return ((year%400 == 0) || (year%4==0 && year%100!=0))? true:false; }

bool Date::EndofMonth(){

if(month==2 && LeapYear())

return day==29;

else

return day==days[month];

}

void Date::Increment(int n){

int i;

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

if(EndofMonth() && month==12){

year++; month=day=1;

}

else if(EndofMonth()){

month++;day=1;

}

else

day++;

}

void Date::Decrement(int n){

int i;

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

if(day==1){

if(month==1){

year--; month=12; day=31;

}

else if(month==3){

day=LeapYear()?29:28; month=2;

}

else

day=days[--month];

}

else

day--;

}

void Date::Print(){

cout<

}

void main(){

Date d1(2005,1,4),d2(2004,12,27);

d1.Print();

d1.Decrement(4);

d1.Print();

d2.Print();

d2.Increment(70);

d2.Print();

}

5.3 定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,默认值为0,周长和面积在构造函数中生成)和复制构造函数。

#include

const double PI=3.1415;

using namespace std;

class Circle{

double radius,length,area;

public:

Circle(double r=0){

setr(r);

length=2*PI*radius;

area=PI*radius*radius;

}

Circle(Circle& c){

radius=c.radius ;

length=c.length ;

area=c.area ;

}

void print(){

cout<<"radius= "<

cout<<"length= "<

cout<<"area= "<

}

void setr(double r){

radius=r;

}

};

int main(){

Circle c1(10),c2(c1);

c1.print();

c2.print();

return 0;

}

5.4 设计一个学校在册人员类(Person)。数据成员包括身份证号(IdPerson)、姓名(Name)、性别(Sex)、生日(Birth-day)和家庭住址(HomeAddress)。成员函数包括人员信息的录入和显示,还包括构造函数与复制构造函数。设计一个合适的初始值。

#include

#include

const double PI=3.1415;

using namespace std;

struct date{

int year,month,day;

};

class Person{

char ID[12];

char Name[10];

char Sex[3];

date Birth;

char HomeAdd[20];

public:

Person(){

ID[0]=Name[0]=Sex[0]=HomeAdd[0]=0;

Birth.year=Birth.month=Birth.day=0;

}

Person(char id[],char name[],char sex[],date birth,char homeadd[]){ strcpy(ID,id);

strcpy(Name,name);

strcpy(Sex,sex);

Birth=birth;

strcpy(HomeAdd,homeadd);

}

Person(Person& p){

strcpy(ID,p.ID);

strcpy(Name,https://www.doczj.com/doc/c54239670.html,);

strcpy(Sex,p.Sex);

Birth=p.Birth;

strcpy(HomeAdd,p.HomeAdd);

}

void setID(char id[]){

strcpy(ID,id);

}

void setName(char name[]){

strcpy(Name,name);

}

void setSex(char sex[]){

strcpy(Sex,sex);

}

void setBirth(date birth){

Birth=birth;

}

void setHome(char homeadd[]){

strcpy(HomeAdd,homeadd);

}

void print(){

cout<<"ID= "<

cout<<"Birth= "<

cout<

}

};

int main(){

date birth;

birth.year =1991;

birth.month =6;

birth.day =12;

Person p1("08124401","陈建华","男",birth,"中吴大道1801号");

p1.print ();

Person p2;

p2.print ();

return 0 ;

}

5.5设计如下类:

1)建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端,内含两个Point类的对象;建立Triangle类,表示一个三角形,内含三个Line类的对象构成一个三角形。

2)设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制

3)设计Triangle类的成员函数完成三条边是否能构成三角形的检验和三角形面积计算,面积显示。

#include

#include

const double PI=3.1415;

using namespace std;

class Point{

double X,Y;

public:

Point(double x=0,double y=0){

X=x;Y=y;

}

Point(Point& p){

X=p.X ; Y=p.Y ;

}

double getx(){return X;}

double gety(){return Y;}

};

class Line{

Point pstart,pend;

double length;

public:

Line(Point p1,Point p2):pstart(p1),pend(p2){

setl();

}

Line(Line& l):pstart(l.pstart),pend(l.pend){

setl();

}

double getl(){return length;}

void setl(){

double deltax,deltay;

deltax=pstart.getx()-pend.getx();

deltay=pstart.gety()-pend.gety();

length=sqrt(deltax*deltax+deltay*deltay);

}

};

class Trangle{

Line lfirst,lsecond,lthird;

double area;

public:

Trangle(Line lf,Line ls,Line lt):lfirst(lf),lsecond(ls),lthird(lt){ area=0;

}

bool check(){

double l1,l2,l3;

l1=lfirst.getl();

l2=lsecond.getl();

l3=lthird.getl();

return l1

}

void calarea(){

if (check()){

double s;

double l1,l2,l3;

l1=lfirst.getl();

l2=lsecond.getl();

l3=lthird.getl();

s=(l1+l2+l3)/2.0;

area=sqrt(s*(s-l1)*(s-l2)*(s-l3));

}

}

void print(){

cout<<"area= "<

}

};

int main(){

Point p1,p2(4,0),p3(0,3);

Line l1(p1,p2),l2(p1,p3),l3(p2,p3);

Trangle t(l1,l2,l3);

if(t.check ())t.calarea();

t.print();

return 0;

}

5.6建立一个分数类Fraction。分数类的数据成员包括分子和分母。成员函数包括构造函数、复制构造函数。构造函数要对初始化数据进行必要的检查(分母不能为0)。将分数显示成“a/b”形式的输出函数。成员函数包括约分、通分、加、减、乘、除、求倒数、比较大小、显示和输入。完成以上所有成员函数并在主函数中进行检验。

#include

using namespace std;

class Fraction{

int numerator,denominator;

int common_divisor(); //计算最大公约数

void contracted(); //分数化简

public:

Fraction(int=0,int=1);

Fraction(Fraction&);

Fraction Add(Fraction);

Fraction Sub(Fraction);

Fraction Mul(Fraction);

Fraction Div(Fraction);

bool operator>=(Fraction);

bool operator<=(Fraction);

bool operator==(Fraction);

bool operator<(Fraction f){return !(operator>=(f));}

bool operator>(Fraction f){return !(operator<=(f));}

bool operator!=(Fraction f){return !(operator==(f));}

Fraction Updown();

void Set(int=0,int=1);

void disp(){cout<<"fraction= "<

};

Fraction::Fraction(int num,int deno){

Set(num, deno);

}

Fraction::Fraction(Fraction& f){

numerator=f.numerator;

denominator=f.denominator;

}

Fraction Fraction::Add(Fraction f){

Fraction

Temp(numerator*f.denominator+f.numerator*denominator,denominator*f.denominator);

Temp.contracted();

return Temp;

}

Fraction Fraction::Sub(Fraction f){

Fraction

Temp(numerator*f.denominator-f.numerator*denominator,denominator*f.denominator);

Temp.contracted();

return Temp;

}

Fraction Fraction::Mul(Fraction f){

Fraction Temp(numerator*f.numerator,denominator*f.denominator);

Temp.contracted();

return Temp;

}

Fraction Fraction::Div(Fraction f){

Fraction Temp(f.denominator,f.numerator );

Temp=Mul(Temp);

Temp.contracted();

return Temp;

}

int Fraction::common_divisor(){

int residue;

int dividend=numerator,divisor=denominator;

while(residue=dividend%divisor){

dividend=divisor;

divisor=residue;

}

return divisor;

}

void Fraction::contracted()

int residue=common_divisor();

numerator/=residue;

denominator/=residue;

if(denominator<0){numerator*=-1;denominator*=-1;}

}

bool Fraction::operator>=(Fraction f){

Fraction Temp=Sub(f);

return (Temp.numerator >=0);

}

bool Fraction::operator<=(Fraction f){

Fraction Temp=Sub(f);

return (Temp.numerator <=0);

}

bool Fraction::operator==(Fraction f){

Fraction Temp=Sub(f);

return (Temp.numerator ==0);

}

Fraction Fraction::Updown(){

int p;

Fraction Temp;

if (numerator!=0){

p=numerator;

numerator=denominator;

denominator=p;

Temp.numerator=numerator;

Temp.denominator=denominator;

}

return Temp;

}

void Fraction::Set(int num,int deno){

if(deno!=0){

numerator=num;denominator=deno;

contracted();

}

}

void main(){

Fraction f1(1,3),f2=2,f3,f4,f5(2,8),f6,f7(8,3),f8(8,3),f9(1,4);

f4=f1.Add(f2);

f4.disp();

f6=f2.Div(f5).Div(f7);

f6.disp();

f5.disp();

f6=f1.Sub(f2);

f6.disp();

f9.Set(5,3);

f9.disp();

f9.Updown();

f9.disp();

cout<<(f7==f8)<

cout<<(f7==f1)<

cout<<(f5==f9)<

cout<<(f1>f2)<

C++实验报告 第四章 类与对象

C++实验报告 实验4 类与对象 一、实验目的 1、掌握类的声明和使用 2、掌握类的声明和对象的声明 3、复习具有不同访问属性的成员的访问方式 4、观察构造函数和析构函数的执行过程 5、学习类的组合使用方法 6、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序 二、实验任务 1、声明一个CPU类,包含等级rank、频率frequency、电压voltage等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU-Rank,声明为enum CPU-Rank{P1=1,P2,P3,P4,P5,P6,P7}, frequency为MHz的整数型,voltage为浮点型的电压值。观察构造函数好析构函数的调用顺序。 2、声明一个简单的Computer类,有数据成员芯片cpu、内存ram、光驱cdrom 等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM 类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 3、设计一个用于人事管理的People类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number编号、sex性别、birthday出生日期、id身份证号等。其中出生日期声明为一个日期类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内嵌成员函数、组合。 三、实验内容 任务1:首先声明枚举类型,在这里出现了知识性错误,不清楚具体应如何声明,经查询相关书籍,知道应在类外进行声明。初次用类来进行编程,在概念上是有一些混乱的,例如构造函数和析构函数的调用顺序等。在用debug单步调试后,明白其中道理。 源程序: //Lab4_1.cpp #include using namespace std; enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7}; class CPU { //CPU类的定义 private: //私有数据成员 CPU_Rank rank; int frequency;

实验3 类和对象

实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.doczj.com/doc/c54239670.html,); error!! } } class Account { private String account; private String name; private String address; private double balance;

C++实验九类和对象的使用实验报告

实验九类和对象的使用实验报告 一实验目的 1、学会用构造函数对类对象进行初始化 2、掌握析构函数,并了解构造函数和析构函数的调用顺序 3、了解对象数组和对象指针的用法 4、学会共用数据的保护,了解常对象、常成员函数等的使用限制 二实验内容和要求 1.回顾课本知识,掌握重点和难点,认真分析例题熟悉本章内容。 2.完成本章课后习题2、6、7题,认真分析每一题的代码。 三实验环境 Visual C++6.0开发环境 四源程序 2、 #include using namespace std; class Date { public: Date(int,int,int); Date(int,int); Date(int); Date(); void display(); private: int month; int day; int year; }; Date::Date(intm,intd,int y):month(m),day(d),year(y) {} Date::Date(intm,int d):month(m),day(d) {year=2005;} Date::Date(int m):month(m) { day=1; year=2005; }

Date::Date() { month=1; day=1; year=2005; } void Date::display() { cout< using namespace std; class Student { public: Student(intn,float s):num(n),score(s) {}; void change(intn,float s) { num=n; score=s; } void display() { cout<

实验报告_实验3 类与对象

实验报告_实验3 类与对象(学生学号_姓 名) 一、实验目的 1.熟悉类的组成,掌握类的声明方法; 2.理解构造方法的作用,并掌握构造方法的定义; 3.熟练使用访问器和设置器实现信息隐藏和封装; 4.熟悉一般方法、构造方法的重载; 5.能够正确地区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用;6.掌握对象的创建、引用和使用及向方法传递参数的方式; 7.掌握this关键字的使用以及对象数组的创建和访问; 8.掌握Java包的创建、包成员的各种访问方式; 9.掌握一维数组:声明,创建,初始化,数组元素的访问; 10.掌握多维数组的概念:二维数组的声明,初始化,元素的访问。 二、实验内容与步骤 1.请回答下列问题: (1)Cirecle类定义了几个属性?它们的类型、访问权限各为什么? 答:两个PI,floatl类型,静态私有权限 Radius,float;类型,私有权限 (2)类中的“PI”的值可以在程序的方法中更改吗? 答:不可以,因为PI为静态变量 (3)Cirecle类定义了几个方法?它们的访问权限怎样?

答:四个,getRadius(),setRadius(float radius),getPerimeter(),getArea()都是公有权限 2.写出Rectangle类的程序代码: class Rectangle { private float width; private float length; public float getWidth( ) //获取矩形宽度 {return width;} public float getLength( ) //获取矩形长度 {return length;} public float getPerimeter( ) //获取矩形周长 {return 2*(width+length);} public float getArea( ) //获取矩形面积 {return (width*length);} public void setWidth(float w) //设置矩形宽度 {width=w;} public void setLength(float l) //设置矩形长度 {length=l;} } 3.回答下列问题: (1)该程序中有几个类?主类是什么?如果将这两个类放在一个文件中,源程序文件名应是什么?答:两个类:Circle、CircleTest;主类是CircleTest;源程序文件名是CircleTest。

C上机实验报告实验四

实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。 4.使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。 5.在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,在成员函数中,构造函数用来初始化所有数据成员;display()中使用cout显示

实验一.类与对象实验报告

浙江理工大学信息学院 面向对象程序设计实验报告 实验名称:类的定义与使用学时安排:3 实验类别:设计性实验实验要求:1人1组姓名:邵旸珂学号:2016329621068  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的 1)掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性; 2)掌握类对象的定义; 3)理解类的成员的访问控制的含义,公有、私有和保护成员的区别; 4)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数; 二、实验原理介绍 通过建立类及对象,用类的成员函数和对象访问类的成员; 利用建立类的构造函数,完成类的成员的初始化工作; 三、实验设备介绍 软件需求: windows或linux下的c++编译器 硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU

处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。 四、实验内容 编写一个程序,模拟电梯的功能。功能接口包括电梯上行按钮、下行按钮、楼层选择和电梯在行驶过程中的楼层显示。 要求: 1.由用户选择按上行按钮还是下行按钮,选择操作后再由用户输入要进入的楼层,进而电梯开始运行,显示所到的每一楼层层数。 2.如果是上行,则选择输入的楼层号不能比当前楼层号小,否则应给出不合法提示。 3. 如果是下行,则选择输入的楼层号不能比当前楼层号大,否则应给出不合法提示。 4.电梯一旦开始运作就会始终运行,直到窗口关闭。 5.电梯在经过不同楼层时,最好每个楼层的显示之间能有延迟,最终停靠的楼层的输出形式能更加醒目。如果可以,在电梯最初开始运行时,能在电梯由内部显示当前日期(提示:实现这些功能时,需要调用系统api,实现时间显示功能可以使用CDate类)。 五程序清单 #include #include #include using namespace std;

C++语言程序设计实验答案_类与对象

实验04 类与对象(6学时) (第4章类与对象) 一、实验目的 二、实验任务 4_1 声明一个CPU类。 包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 4_2 声明一个简单的Computer类。 有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 4_3 声明一个表示时间的结构体。 可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。

4_4(习题4-10)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、内联成员函数、组合。 三、实验步骤 1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。 首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:。(程序见步骤2) ★程序的运行结果: 2.(示例)调试程序文件。 使用调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下: 操作)调试操作步骤如下: (1)单击“调试 | 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS 窗口出现,此时Visual Studio中光标停在main()函数的入口处。

实验一 类和对象

实验一类和对象 Visual C++ 6.0集成开发环境的使用: Visual C++系列产品是微软公司推出的一款优秀的C++集成开发环境,其产品定位为Windows 95/98、NT、2000 系列Win32 系统程序开发,由于其良好的界面和可操作性,被广泛应用。由于2000 年以后,微软全面转向.NET 平台,Visual C++6.0 成为支持标准C/C++规范的最后版本。 1.启动 安装完系统后,可以选择如下两种方式启动 1) 点击Windows “开始”菜单,选择“程序”菜单下“Microsoft Visual Studio 6.0”子菜单下的快捷方式Microsoft Visual C++ 6.0 启动Visual C++ 6.0。 2) 点击Windows “开始”菜单,选择“运行”,输入msdev,即可启动。启动后的界面如下: 图 1 启动界面 2.建立工程

选择“File”菜单下的“New”菜单项或直接按Ctrl+N,启动新建向导,如图2 所示: 图 2 新建向导 选择在“Projects”属性页选择Win32 Console Application,在Project Name 中输入项目名称demo,在Location 中选择项目文件,如图2 中c:\test\demo,项目所有文件将保存在此文件。输入完毕,单击确定按钮,进入下一界面如图3:

图 3 项目类型向导 在图 3 所示界面中选择a simple application,然后点击Finish 按钮,系统显示图4 所示界面。如果想退回上一步可以选择“Back”按钮。 图 4 项目信息 在图 4 中选择OK 按钮,系统完成项目的创建,并保存项目相关的信息。项目的目录结构如图5 所示。 1) Demo.dsw 是项目工作区文件,双击此文件,即可打开此项目; 2) Demo.dsp 为项目文件; 3) demo.cpp 是项目中的一个源程序;stdafx.h 和stdafx.cpp 为自动创建的源程序,一般不用修改。 图 5 目录结构

c++类和对象实验报告

实验一类和对象 实验课程名:面向对象程序设计(C++) 专业班级:学号:姓名: 实验时间:实验地点:指导教师: 一、实验目的和要求 (1) 理解类和对象的概念,掌握声明类和定义对象的方法。 (2) 掌握构造函数和析构函数的实现方法。 (3) 初步掌握使用类和对象编制C++程序。 (4) 掌握对象数组、对象指针和string类的使用方法。 (5) 掌握使用对象、对象指针和对象引用作为函数参数的方法。 (6) 掌握类对象作为成员的使用方法。 (7) 掌握静态数据成员和静态成员函数的使用方法。 (8) 理解友元的概念和掌握友元的使用方法。 二、实验内容 1.设计一个静态数组存储结构的顺序表类,要 求编程实现如下任务:建立一个线性表,首先 依次输人数据元素1,2,3,…,10,然后删除 数据元素6,最后依次显示当前线性表中的数 据元素。要求采用顺序表实现,假设该顺序表 的数据元素个数在最坏情况下不会超过50个。实验代码:#include using namespace std; const int MaxSize=100; //100只是示例性的数据,可根据实际问题具体定义 template //定义模板类SeqList class SeqList { public:

SeqList( ) {length=0;} //无参构造函数 SeqList(T a[ ], int n); //有参构造函数 ~SeqList( ) { } //析构函数为空 int Length( ) {return length;} //求线性表的长度 T Get(int i); //按位查找,取线性表的第i个元素 int Locate(T x ); //按值查找,求线性表中值为x的元素序号 void Insert(int i, T x); //在线性表中第i个位置插入值为x的元素 T Delete(int i); //删除线性表的第i个元素 void PrintList( ); //遍历线性表,按序号依次输出各元素 private: T data[MaxSize]; //存放数据元素的数组 int length; //线性表的长度 }; template SeqList::SeqList(T a[ ], int n) { int i; if (n>MaxSize) throw "参数非法";

C++类和对象实验报告

计算机科学与技术实验报告 实验二类和对象(1) 姓名:易XX 班级:计科二班学号:2015110121 实验目的:深入理解类和对象,学会定义类,申明私有、公有变量,学会定义对象,并调用成员函数,解决实际问题。 实验内容: (一)、题目要求: 定义一个描述角度的类CAngle,包含的内容如下: (1)私有成员变量value,表示角度,类型为double; (2)公有成员变量SetValue,实现功能是使用形参为value赋值。 声明为:viod SetValue(double); (3)公有成员函数GetCos,实现功能计算余弦值,并作为返回值返回。 声明为 double GetCos(); 编程实现如下功能:定义一个Cangle类的对象deg,调用成员函数设置deg的角度为30度,调用成员函数计算并输出deg的余弦值。 代码: #include #include using namespace std; #define PI 3.1415 //定义宏常量PI class CAngle{ double value; //定义角度 public: void Setvalue(double x){ value =x/180*PI; //把角度转化为弧度 } double Getcos(){ return ( cos(value) ); //计算cos值 } }; int main(){ CAngle deg; //定义一个Cangle类的对象deg deg.Setvalue(30); cout<

实验报告4类与对象

实验名称:类与对象 一.实验目的: (1)理解C#语言是如何体现面向对象编程基本思想; (2)掌握类对象的定义; (3)了解类的封装方法,以及如何创建类和对象; (4)了解成员变量和成员方法的特性; (5)掌握静态成员的用法; (6)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数; (7)掌握参数传递的用法; (8)掌握属性的作用和使用。 二.上机内容: 1)创建MyDataTime类,熟悉构造函数、析构函数的定义方法、属性的定义方法以及一般方法的定义过程。 (2)创建Fraction类,掌握运算符重载、静态方法的使用及其与实例方法的区别。(3)创建Swap类,掌握C#方法中参数的传递。 (4)整理上机步骤,总结经验和体会。 (4)完成实验报告。 四.上机步骤: 类的创建与应用: 创建一个MyDataTime类,要求如下: (1)私有字段:year,month,day; (2)属性:Year,Month,Day。注意在定义Month和Day的settor时要检验设置值的有效性,其中,,同时在对Day进行设置的时候要注意闰年和平 年的2月的天数。 (3)方法:构造函数:根据需求确定不同参数列表的构造方法。 析构函数:提示析构对象。 PrintMyDataTime:以“2011/4/24”、“2011年4月24日”、“2011.4.24”、“二〇一一年四月二十四日”的形式输出Year,Month和Day。 using System; using ; namespace ConsoleApplication1 { class MyDataTime { private int year; public int Year { set { year = value; } get { return year; }

实验四-类与对象

实验四类与对象 1.实验目的 1、使用类来封装对象的属性和行为; 2、掌握对象的组合以及参数传递; 3、掌握类变量与实例变量,以及类方法与实例方法的区别 2.实验内容 1、参考教科书,完成下面实验: 1)实验1 Tank类 2)实验2 计算机与光盘 3)实验3 家族的姓氏 4)实验4 三角形、梯形和圆形的类封装 5)实验5 实例成员与类成员 2、完成习题: 1)根据要求修改实验1,改进speedUP方法,使得Tank类的对象加速时不能将speed值超过220;增加一个刹车方法:void brake(),Tank类的对象调用它能将speed的值变成0。 2)根据要求修改实验2,主类中再增加一个CD的对象,然后将计算机中的数据(data数组)复制到CD对象中。 3、提高题 编写储蓄账户类及测试类,模拟存款,参考以下运行方式: (1)新开5个储蓄账户,各储蓄账户的编号、户名在新开储蓄账户时初始化,假设每位用户新开储蓄账户时都存入了一笔钱。 (2)提示用户从键盘输入储蓄账户编号。 (3)若输入的储蓄账户编号与新开的5个储蓄账户编号之一匹配,则提示用户从键盘输入存款金额,存款金额必须大于0,否则显示错误提示,直到用户输入的存款金额大于0为止。 (4)相应储蓄账户的余额被更新。 (5)存款完成后,提示存款成功,显示该储蓄账户的编号、户名、余额。 (6)若输入的储蓄账户编号与新开的5个储蓄账户编号均无法匹配,显示错误提示,并询问是否还要继续存款。 (7)用户输入yes,继续执行步骤(2),否则显示退出信息。 最基本要求:绘制UML类图;储蓄账户的余额必须确保大于等于0。 3.实验步骤 参考教材中相关的实验。 4.评分标准

类的设计与封装(一)实验报告

浙江大学城市学院实验报告课程名称面向对象程序设计 实验项目名称类的设计与封装实验(一) 学生姓名专业班级学号 一. 实验目的和要求 1.掌握使用类将对象的属性与功能封装在类中的特点 2.掌握实例方法与构造方法 二. 实验内容 1. 分析Time类的设计 2. 分析并设计Product类 3. 分析并设计Fraction类 4. 设计Rectangle类 5. 设计Student类及其测试类School类 三. 实验结果与分析(可将程序运行结果截屏,也可分析运行结果) 1. 阅读以下关于Time类的代码,分析程序并回答相关的问题 import java.text.DecimalFormat; public class Time{ private int hour; private int minute; private int second; Time(){hour=0;minute=0;second=0;} Time(int h){ hour=h;minute=0;second=0;} Time(int h,int m){hour=h;minute=m;second=0;} Time(int h,int m,int s){hour=h;minute=m;second=s;} Time(Time time){ this.hour=time.getHour(); this.minute=time.getMinute(); this.second=time.getSecond(); } public int getHour(){return hour;} public int getMinute(){ return minute;}

实验一、类与对象

实验一类与对象 一、实验目的 1.掌握类的定义和使用。 2.掌握类的对象的声明。 3.复习具有不同访问属性的成员的访问方式。 4.观察构造函数和析构函数的执行过程。 5.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 二、实验课时 4学时 三、实验任务 1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run(提示信息“CPU开始运行”)、stop(提示信息“CPU停止运行”)。其中,为枚举类型CPU_Rank,定义为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage 为浮点型的电压值。在main函数中定义该类的一个对象,并调用其公有成员函数,观察构造函数和析构函数的调用顺序。试试能不能在主函数中打印该对象的属性值,并分析原因。 2.在上述CPU类中添加成员函数,分别用于设置及获取各属性的值,并在main函数中调用这些函数。观察当这些函数被设置成private或public时会有什么不同。 3.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram 为RAM类的一个对象,cdrom为CDROM类的一个对象。CPU类的定义为实验任务1,RAM、CDROM类可以自由设置一些属性,并提供类似的run、stop这两个成员函数。在main函数中测试这个类,分析成员函数的运行顺序。 4.定义一个Point类,属性为坐标X、Y的值,包含有如下成员函数:构造函数、析构函数、设置与获取X和Y的值的函数,并测试程序的输出结果。

实验3 类与对象

实验3 类与对象 一、实验目的 本实验的目的用于指导读者掌握Java语言面向对象的程序设计方法,理解对象的封装等概念,要求读者在调试实例程序后,总结出面向对象的事务定义以及以对象的形式进行封装等内容。 二、实验内容 1、课本P221,8-6 和课本P237,8.1题 2、编写一个名为“复数”的类,包含复数的实部和虚部(数据成员),以及复数之间的基本算术运算:加、减(方法成员),并要求复数加减运算,程序运行中能对给定的复数进行运算,并打印运算的结果。 3、用类来描述游戏角色的交手次数、经验值、生命值之间的关系,并断定角色决斗的胜负。 三、实验要求 1、加减运算能够接收不同类型的参数既可以实现复数与实数的加减、复数与复数的加减运算。 2、两游戏角色决斗。角色1交手次数+1,生命值-1,经验值+2;角色2交手次数+1,生命值-2,经验值+3。经验值每增加50时,生命值+1;生命值<0判为负。生命值初始为1000,经验值初始为0。 3、给定二个不同的角色,判定交手的胜负关系。 4、实验报告给出决斗结果和交手次数 5、实验报告给出所有源代码。 四、实验环境 1、PC微机; 2、DOS操作系统或 Windows 操作系统; 3、Eclipse程序集成环境。 五、实验步骤 内容一: 1、创建“复数”类Complex,定义实部、虚部成员 2、定义构造函数接收二个double参数用来初始化数据成员

3、定义二个复数运算函数plus()以及minus()各接收一个复数类型以实现复数与复数的加减运算。 4、定义二个复数运算函数plus()以及minus()各接收一个double类型以实现复数与与实数的加减运算。 4、定义一个打印方法。 5、在main()方法中创建复数对象并调用相关方法来验证。 内容二: 1、建立角色类Role,给出相应的成员,并能以生命值、经验值初始化角色对象。 2、在角色类中建立fight方法,接收一个角色类型的参数并与之“战斗”,返回胜者信息。 3、在主函数中初始化二个角色,调用fight方法。 六、测试数据 略 七、实验报告(学生完成) 实验报告应包括以下几个部分: 1、程序流程图; 2、程序的数据结构设计; 3、程序的源代码及相关注释 4、程序运行结果的分析。 八、思考题(学生完成) 1.定义一个点类“Point”。Point 类的属性有x 轴和y 轴坐标,可以通过方法setX()设置x轴坐标,方法setY()设置y 轴坐标,方法getX()获得x 轴坐标,方法getY()获得y 轴坐标。编写一个测试类PointTest 来创建Point 类的对象,测试该类。 2.编程定义一个栈类,它封装了栈数组,判断栈空方法、判断栈满方法以及进栈和出栈。

c++类和对象实验报告

实验一类和对象实验课程名:面向对象程序设计(C++) 专业班级:学号: 实验时间:实验地点:姓名: 指导教师: 一、实验目的和要求 (1)理解类和对象的概念,掌握声明类和定义对象的方法。 (2)掌握构造函数和析构函数的实现方法。 (3)初步掌握使用类和对象编制C++ 程序。 (4)掌握对象数组、对象指针和string 类的使用方法。 (5)掌握使用对象、对象指针和对象引用作为函数参数的方法。 (6)掌握类对象作为成员的使用方法。 (7)掌握静态数据成员和静态成员函数的使用方法。 (8)理解友元的概念和掌握友元的使用方法。 二、实验内容 1.设计一个静态数组存储结构的顺序表类,要求编程实现如下任务:建立一个线性表,首先 依次输人数据元素1,2,3,?,10,然后删除 数据元素 6,最后依次显示当前线性表中的数 据元素。要求采用顺序表实现,假设该顺序表 的数据元素个数在最坏情况下不会超过50个。实验代码: #include using namespace std; const int MaxSize=100; //100只是示例性的数据,可根据 实际问题具体定义 template //定义模板类SeqList class SeqList { public:

SeqList( ) {length=0;}//无参构造函数SeqList(T a[ ], int n);//有参构造函数 ~SeqList( ) { }//析构函数为空 int Length( ) {return length;} //求线性表的长度T Get(int i);//按位查找,取线性表的第i个元素 int Locate(T x );//按值查找,求线性表中值为x 的元素序号 void Insert(int i, T x); //在线性表中第i 个位置插入值为x 的元素 T Delete(int i); void PrintList( );// // 删除线性表的第i 个元素 遍历线性表,按序号依次 输出各元素private: T data[MaxSize]; int length;////存放数据元素的数组 线性表的长度 }; template SeqList::SeqList(T a[ ], int n) { int i; if (n>MaxSize) throw "参数非法";

实验报告实验类与对象精修订

实验报告实验类与对象标准化管理部编码-[99968T-6889628-J68568-1689N]

实验报告_实验3类与对象(学生学号_姓名)一、实验目的 1.熟悉类的组成,掌握类的声明方法; 2.理解构造方法的作用,并掌握构造方法的定义; 3.熟练使用访问器和设置器实现信息隐藏和封装; 4.熟悉一般方法、构造方法的重载; 5.能够正确地区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用; 6.掌握对象的创建、引用和使用及向方法传递参数的方式; 7.掌握this关键字的使用以及对象数组的创建和访问; 8.掌握Java包的创建、包成员的各种访问方式; 9.掌握一维数组:声明,创建,初始化,数组元素的访问; 10.掌握多维数组的概念:二维数组的声明,初始化,元素的访问。 二、实验内容与步骤 1.请回答下列问题: (1)Cirecle类定义了几个属性?它们的类型、访问权限各为什么? 答:两个PI,floatl类型,静态私有权限 Radius,float;类型,私有权限 (2)类中的“PI”的值可以在程序的方法中更改吗? 答:不可以,因为PI为静态变量 (3)Cirecle类定义了几个方法它们的访问权限怎样 答:四个,getRadius(),setRadius(floatradius),getPerimeter(),getArea()都是公有权限 2.写出Rectangle类的程序代码: classRectangle

{ privatefloatwidth; privatefloatlength; publicfloatgetWidth() //获取矩形宽度 {returnwidth;} publicfloatgetLength() //获取矩形长度 {returnlength;} publicfloatgetPerimeter() //获取矩形周长 {return2*(width+length);} publicfloatgetArea() //获取矩形面积 {return(width*length);} publicvoidsetWidth(floatw) //设置矩形宽度 {width=w;} publicvoidsetLength(floatl) //设置矩形长度 {length=l;} } 3.回答下列问题: (1)该程序中有几个类主类是什么如果将这两个类放在一个文件中,源程序文件名应是什么? 答:两个类:Circle、CircleTest;主类是CircleTest;源程序文件名是CircleTest。 (2)Circle类定义了几个构造方法(即构造器) Circle类中存在无参构造方法吗?如果要使用无参构造方法,应如何做? 答:Circle类定义了个构造方法;不存在,写入Circle(){}; (3)CircleTest类中创建了几个Circle对象?这些对象是如何创建的? 答:CircleTest类创建了两个Circle对象;Circle对象名=newCircle()。 (4)CircleTest类中如何调用对象的方法? 答:CircleTest类调用对象方法:对象名.方法 4.写出OverrideTest中所缺的三行代码:

实验二 类与对象

实验二类与对象(2) 一、实验目的 1、掌握类的定义和使用。 2、掌握类声明和类体。 3、掌握成员变量和局部变量的区别和使用方法。 4、多维数组的使用。 二、实验设备 1、硬件:PC机。 2、软件:DOS运行环境、EditPlus编辑软件。 三、实验预习要求 1、阅读3.2节类的定义和使用。 2、阅读3.2.2 成员变量和局部变量的区别的使用方法。 3、预习程序【例3-1】【例3-2】 4、多维数组的使用。熟悉程序【例2-32】 四、实验内容和步骤 1、展示简单数据类型与引用数据的区别 import java.io.*; public class PassTest { float ptValue; public void changeInt(int value) { value = 55; // 在方法内部对值参数进行了修改 } public void changeObjValue(PassTest ref) { ref.ptValue = 99f; // 在方法内部对引用参数进行了修改 } public static void main(String args[]) { int val; PassTest pt = new PassTest(); val = 11; System.out.println("初始的整型值是: " + val); pt.changeInt(val); // 值参数 System.out.println("改变后整型值是: " + val); // 值参数值的修改,没有影响值参数的值 pt.ptValue = 101f; System.out.println("初始的整型值是: " + pt.ptValue); pt.changeObjValue(pt); // 引用类型的参数 System.out.println("改变后整型值是: " + pt.ptValue); // 引用参数值的修改,改变了引用参数的值 } } 2、展示局部变量和类成员变量作用域 class Variable { int x = 0, y = 0, z = 0; //类的成员变量

实验5 类和对象(二)

实验5 类和对象(二) 实验目的: 1.进一步理解类和对象的概念; 2.进一步理解类的成员的访问控制的含义,公有和私有成员的区别; 3.掌握构造函数和析构函数的含义与作用、定义方式和实现; 4.能够根据给定的要求定义类并实现类的成员函数; 5.了解C++面向对象程序设计的基本思想、基本方法和基本步骤; 6.掌握MS Visual C++6.0调试C++程序的基本方法、基本步骤。 实验内容: 一、基础题: 1、输入下列程序,按要求进行实验,并记录实验的结果。 #include using namespace std; class Coordinate { public: Coordinate(int x1, int y1){x=x1; y=y1;} Coordinate(Coordinate &p); ~Coordinate(){cout<<"Destructor is called."<

cout<<"Copy initianization constructor is called."< class Date{ public: void printDate(); //显示日期 void setDay(int); //设置日的值 void setMonth(int); //设置月的值 void setYear(int); //设置年的值

相关主题
文本预览
相关文档 最新文档