第10章 类和对象(例子)

第10章 类和对象(例子)
第10章 类和对象(例子)

例10.4定义并测试长方形类CRect,长方形是由左上角坐标(left, top)和右下角坐标(right, bottom)组成。

#include

#include

class CRect //定义长方形类

{

private:

int left, top, right, bottom ;

public:

void setcoord(int, int, int, int);

void getcoord(int *L, int *T, int *R, int *B)

//注意:形参为指针变量{

*L = left; *T = top;

*R = right; *B = bottom;

}

void print(void)

{

cout<<"Area = ";

cout<

abs(bottom-top)<

}

};

void CRect::setcoord(int L, int T, int R, int B)

{

left=L; top=T; right=R; bottom=B;

}

CRect r, rr;

int a, b, c, d ;

r.setcoord(100, 300, 50, 200);

r.getcoord( &a, &b, &c, &d );

//用变量的指针做参数,带回多个结果cout << "left=" << a << endl;

cout << "top=" << b << endl;

cout << "right=" << c << endl;

cout << "bottom=" << d << endl;

r.print( );

rr = r; //对象可整体赋值

rr.print( );

}

运行结果:

left=100 top=300

right=50 bottom=200

Area = 5000

Area = 5000

返回ppt讲稿

例10.5 定义日期类,利用构造函数初始化数据成员。程序放在头文件date.h中,如下:

#include

class Date

{

int Year, Month, Day;

public:

Date( ) //重载构造函数1

Year=2010; Month=5; Day=1;

}

Date(int y) //重载构造函数2

{

Year=y; Month=5; Day=1;

}

Date(int y, int m) //重载构造函数3

{

Year=y; Month=m; Day=1;

}

Date(int y, int m, int d) //重载构造函数4

{

Year=y; Month=m; Day=d;

}

void ShowDate( )

{

cout <

};

主函数源文件为Li1005.cpp,内容如下:

#include "date.h"

void main( )

{

Date d1; //自动调用构造函数1 Date d2(2010); //自动调用构造函数2 Date d3(2010, 10); //自动调用构造函数3 Date d4(2010, 10, 6); //自动调用构造函数4 d1.ShowDate( );

d2.ShowDate( );

d3.ShowDate( );

d4.ShowDate( );

运行结果是:

2010.5.1

2010.5.1

2010.10.1

2010.10.6

当然我们可以定义带缺省值的构造函数,将上述构造函数简化,下述程序的功能与上述程序相当:

#include

class Date

{

int Year, Month, Day;

public:

Date(int y=2010, int m=5, int d=1)

//带参数缺省值的构造函数

{

Year=y; Month=m; Day=d;

}

void ShowDate( )

{

cout <

}

};

void main( )

{

Date d1, d2(2010), d3(2010, 10), d4(2010, 10, 6);

d1.ShowDate( );

d2.ShowDate( );

d3.ShowDate( );

d4.ShowDate( );

}

运行结果与上例一样。

返回ppt讲稿

例10.6 定义学生类,利用构造函数初始化数据成员,利用析构函数做清理工作。

#include

#include

class Student

{

char Num[10]; //学号,注意:用数组实现

char *Name; //姓名,注意:用指针实现

int Score; //成绩

public:

Student(char *nump, char *namep, int score)

{

if(nump) //在构造函数中,

{ //不需要动态申请Num成员的空间

strcpy(Num, nump);

}

else

strcpy(Num, "");

if(namep) //在构造函数中,

{ //需动态申请Name成员的空间

Name=new char[strlen(namep)+1];

strcpy(Name, namep);

}

else Name=0;

Score=score;

}

~Student( ) //在析构函数中,

{ //需释放Name成员的空间

if(Name) delete [ ] Name;

//new [] 和delete [] new / delete 用于分配和释放单个变量的空间,而new [] / delete[] 则用于分配

连续多个变量的空间。用new[]出连续空间后,指针变量“指向”该空间的首地址。

cout<<"Desturctor Called!\n";

}

void Show( )

{

cout << Num << endl;

cout << Name << endl;

cout << Score << endl;

}

};

void main( )

{

Student a("040120518", "George", 80);

a.Show( );

}

此程序运行结果是:

Constructor Called! //调用构造函数时的输出040120518

George

80

Desturctor Called! //调用析构函数时的输出

返回ppt讲稿

例10.7调用构造函数和析构函数的时机

class Date

{

int Year, Month, Day;

public:

Date(int y=2002, int m=1, int d=1)

{

Year=y; Month=m; Day=d;

cout<<"Constructor: ";

ShowDate( );

}

void ShowDate( )

{

cout <

}

~Date( )

{

cout<<"Destructor: ";

ShowDate( );

}

};

Date d4(2008, 4, 4); //全局对象(静态的)void fun( )

{

cout << "进入fun( )函数!\n";

static Date d2(2008, 2, 2); //局部静态对象

Date d3(2008, 3, 3); //局部动态对象cout << "退出fun( )函数!\n";

}

void main( )

{

cout << "进入main( )函数!\n";

fun( );

fun( );

cout << "退出main( )函数!\n";

}

此程序运行结果是:

Constructor: 2008.4.4 //调用构造函数,产生d4对象

进入main( )函数!

Constructor: 2008.1.1 // 调用构造函数,产生d1对象

进入fun( )函数!

// 第1次进入fun( )函数,产生下述d2, d3对象Constructor: 2008.2.2

Constructor: 2008.3.3

退出fun( )函数!

// 退出fun( )函数,撤消d3对象,不撤消d2对象Destructor: 2008.3.3

进入fun( )函数!

// 第2次进入fun( )函数,再次产生d3对象Constructor: 2008.3.3

退出fun( )函数!

Destructor: 2008.3.3 // 退出fun( )函数,撤消d3对象

退出main( )函数!

// 退出main ( )函数,撤消d1, d2, d4对象Destructor: 2008.1.1

Destructor: 2008.2.2

Destructor: 2008.4.4

返回ppt讲稿

例10.9 定义一个“平面坐标点”类,测试拷贝构造函数的调用。

class Point

{

int x, y;

public:

Point(int a=0, int b=0)//缺省构造函数

{

x=a; y=b;

}

Point(Point &p); //拷贝构造函数原型说明

~Point( ) //析构函数

{

cout<

}

void Show( )

{

cout<<"Point: "<

}

int Getx( )

{ return x; }

int Gety( )

{ return y; }

};

Point::Point(Point &p) //定义拷贝构造函数

{

x=p.x; y=p.y;

cout<

}

//文件Li1009.cpp

#include

#include "point.h"

{

Point p1(6, 8), p2(4, 7);

Point p3(p1); // A调用拷贝构造函数Point p4=p2; // B调用拷贝构造函数

p1.Show( );

p3.Show( );

p2.Show( );

p4.Show( );

}

此程序运行结果是:

6, 8 Copy-initialization Constructor Called. 4, 7 Copy-initialization Constructor Called. Point: 6, 8

Point: 6, 8

Point: 4, 7

Point: 4, 7

4, 7 Destructor Called. // 撤销P4

6, 8 Destructor Called. // 撤销P3

4, 7 Destructor Called. // 撤销P2

6, 8 Destructor Called. // 撤销P1

析构函数与构造函数的调用顺序相反

返回ppt讲稿

例10.10不定义拷贝构造函数时,运行出错。//文件Li1010.cpp

#include

#include

{

char *Name; //姓名,注意:用指针实现

int Age; //年龄

public:

Student(char *namep, int age) //构造函数

{

Age=age;

if(namep) //在构造函数中,需动态申请空间

{

Name=new char[strlen(namep)+1];

strcpy(Name, namep);

}

else Name=NULL;

}

~Student( )//因在构造函数中动态申请了空间,

{ //则在析构函数中,需释放空间

if(Name) delete [ ] Name;

}

void Show( )

{

cout << Name << ',' << Age << endl;

}

};

void main( )

{

Student a("George", 20);

Student b=a; // A

}

此程序运行时出错,原因是: 没有定义类的拷贝构造函数。系统自动产生的拷贝构造函数如下:

Student::Student(const Student &s)

{

Name = https://www.360docs.net/doc/c53298751.html,; // 注意:地址值直接赋值 Age = s.Age;

}

正确的做法是,定义如下拷贝构造函数:

Student::Student(const Student &s)

{

Age=s.Age;

if(https://www.360docs.net/doc/c53298751.html,)

{

Name = new char[strlen(https://www.360docs.net/doc/c53298751.html,)+1]; //C strcpy(Name, https://www.360docs.net/doc/c53298751.html,);

}

else Name=NULL;

}

a 'G' 'e' 'o' 'r' 'g' 'e' '\0'

b

返回ppt 讲稿

例10.11 在本例中,使用例10.9中“平面坐标点”类的头文件point.h ,测试用对象做函数参数及函数返回值时拷贝构造函数的使用。

#include "point.h" //普通函数,不是类的成员函数 Point move(Point p , int xoffset, int yoffset)

{

int x = p.Getx( )+xoffset, y = p.Gety( )+yoffset; Point t (x, y);

return t ;

}

void main( )

a 'G' 'e' 'o' 'r' 'g' 'e' '\0'

b 'G' 'e' 'o' 'r' 'g' 'e' '\0'

Point p1(6, 8), p2;

p2=move(p1, 2, 4);

}

此程序运行结果是:

6, 8 Copy-initialization Constructor Called. //A 8, 12 Copy-initialization Constructor Called. // B 8, 12 Destructor Called. // 撤消对象t

6, 8 Destructor Called. // 撤消对象p

8, 12 Destructor Called. // 撤消内存临时对象8, 12 Destructor Called. // 撤消对象p2

6, 8 Destructor Called. // 撤消对象p1

返回ppt讲稿

例10.13 利用构造函数完成类型转换

//文件Li1013.cpp

#include

class Complex

{

double Real, Image;

public:

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

{

Real=x; Image=y;

Show( );

cout << "调用了构造函数\n";

}

~Complex( )

{

cout << "调用了析构函数\n";

}

void Show( )

{

cout<<'('<

}

};

void main( )

{

Complex c1(3, 5), c2;

//A

c1 = 8.0; //B 等价于c1 = Complex(8.0);

c2 = Complex(9.0, 9.0);//C

}

此程序运行结果是:

(3, 5)调用了构造函数 //在A 行创建c1对象时,

//调用构造函数

(0, 0)调用了构造函数 //在A 行创建c2对象时,

//调用构造函数

(8, 0)调用了构造函数 (8, 0)调用了析构函数

(9, 9)调用了构造函数 (9, 9)调用了析构函数

(9, 9)调用了析构函数 //在程序结束,

//撤消c2对象时,调用析构函数

(8, 0)调用了析构函数 //在程序结束,

//撤消c1对象时,调用析构函数

返回ppt 讲稿

例10.15 处理线性表

//创建、撤消临时对象,B 行 //创建、撤消临时对象,C 行

class ListClass

{

int *ListPtr; // 指向线性表的指针

int nLen; // 线性表的长度

int nElem; // 线性表中当前元素的个数public:

ListClass(int n=10) // 构造函数,初始化线性表,

最大长度的缺省值为10 {

nElem=0;

nLen=n;

if(n)

ListPtr = new int[n];

else

ListPtr=0;

}

~ListClass(void) // 析构函数

{ delete [nLen] ListPtr; }

int Elem(int); //重载函数①,在线性表尾增加一个元素int &Elem(unsigned n) // 重载函数②,

返回线性表中第n个元素的引用{ return ListPtr[n]; }

int Elem(void) //重载函数③,

返回线性表中当前元素的个数{ return nElem; }

{ return nLen; }

int GetElem(int i) // 返回线性表第i个元素的值{

if((i>=0) && (i

return ListPtr[i];

else

{

cout << "下标越界" << endl;

return(-1);

}

}

void Print(void); // 输出线性表中的所有元素,

在类体外实现

};

int ListClass::Elem(int elem) // 重载函数①,

在线性表尾增加一个元素{

if(nElem==nLen) // 线性表已满

{

int *newptr;

newptr = new int[nLen+10]; // A行,

申请新线性表空间for(int i=0; i

newptr[i] = ListPtr[i]; // 将原线性表中的元素

拷贝到新线性表中delete[nLen]ListPtr; // 释放原线性表空间

ListPtr = newptr; // 让指针指向新线性表空间

}

ListPtr[nElem++] = elem; // 添加元素

return(nElem); // 返回新线性表的元素个数}

void ListClass::Print(void) // 输出线性表中全体元素{

for(int i=0; i

cout << ListPtr[i] << '\t';

cout << endl;

}

void main(void)

{

ListClass list(6);

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

list.Elem(i); // 调用重载函数①

cout<<"线性表的长度为:"<

cout<

cout<<"线性表的元素为:";

list.Print( );

list.Elem(3u) = 100; // 调用重载函数②

cout<<"线性表下标为3的元素的值为: ";

cout<

cout<<"现在线性表的长度为:"<

cout <

cout<<"线性表的元素为:";

cout << "线性表的最后一个元素为: ";

cout<

// 调用重载函数③}

程序的运行结果:

线性表的长度为:6

线性表的元素个数为:5

线性表的元素为:0 1 2 3 4

线性表下标为3的元素的值为: 100

现在线性表的长度为:16

现在线性表中的元素个数为: 7

线性表的元素为:0 1 2 100 4 20 200

线性表的最后一个元素为: 200

返回ppt讲稿

例10.16初始化对象成员。

#include

#include

class Point //定义“点”类

{

int x, y;

public:

Point(int a=0, int b=0)

{

x=a; y=b;

cout<

int Getx( )

{ return x; }

int Gety( )

{ return y; }

~Point( )

{ cout<

};

class Line //定义“线”类,两点决定一条线

{

int width, color; //指定“线”的宽度、颜色

Point p1, p2; //指定“线”的两个端点

public:

Line(int x1, int y1, int x2, int y2, int w, int c) :

p1(x1,y1), p2(x2,y2) // A

{

width=w; color=c;

cout<

}

double LineLen( )

{

double len;

int x1, y1, x2, y2;

x1=p1.Getx( ); y1=p1.Gety( );

x2=p2.Getx( ); y2=p2.Gety( );

len=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

return(len);

}

C语言的类和对象

C语言的类和对象 【类实现了C++面向对象程序设计的基础,我们使用类来定义对象的属性,类是 C++封装的基本单元。】 一、----- 类 使用关键字class创建类,一个类声明定义了一个连接代码和一个数据的新类型,这个新的类型又可以用来声明该类的对象。因此,类又是逻辑逻辑抽象概念,儿对象是物理存在的,也就是说对象是类的实例。 类的声明语法上和结构相似。 [一下是完整的类的形式] class class_name { private data and functions access_specifier: data and functions access_specifiter: data and functions //…….. access_specifier:是 data and functions }object_list; 其中,object_list是任选项,如过存在,他声明类的对象。access_specifier为下面的三个关键字之一: Public private protected 默认时,在类声明的函数和数据属于该类私有,只能被该类的成员访问。如果使用,pubilc访问限定符号,函数和程序就可以被其他部分访问。Protected访问限定符,仅在涉及继承的时候才需要(十五章了解)。访问限定符已经使用,其作用就保持到遇到别的访问限定符或者达到类声明的结束处。 在类声明内可以任意改变访问说明符号,对于某些声明,可以转换位public,然后再转换成private。 [如下所述] /******************************* ··构造函数和析构函数学习··· *******************************/ //Using a constructor and destructor. /******************************* 声明C++ 程序头文件 *******************************/ #include #include #include #include /******************************* ·名字空间:组织大型的程序结构·

第10章类和对象

第10章 类和对象 本章工作任务 实现学校类,并描述学校的信息 实现教员类,并输出教员的信息 实现学生类,并输出学生的信息 本章技能目标 掌握类和对象的特征 理解封装 会创建和使用对象

使用Java理解程序逻辑 本章单词 请在预习时学会下列单词的含义和发音,并 填写在横线处。 1.class: 2.object: 3.OOP: 4.return: 5.encapsulation: 6.null: 7.initial: 8.type:

类和对象 本章简介 在前面章节中,我们学习了程序设计的基本知识和流程控制语句。通过这些内容的学习,大家能够用Java语言进行程序设计,但这些程序的规模都很小,一般只有几十行代码。假设我们要编程解决一个很大的问题,需要写几万行代码,如果按照以前的做法,将这些代码都放在一个Java文件中,可以想象这个文件会非常冗长,而且很难维护。 因此,在下面的课程中,你将看到Java程序设计的另一道风景——面向对象程序设计,英语缩写为OOP。面向对象程序设计是一个里程碑,Alan Kay因为设计了世界上第一个面向对象语言Smalltalk而获得图灵奖。Java之父James Gosling结合Internet背景设计了完全面向对象的Java语言。本章将带领你进入面向对象的世界,学习什么是对象和类,以及如何创建和使用类的对象。 10.1 对象 首先问你一个问题,“世界是由什么组成的?”。如果你是一个化学家,你可能会说,“世界是由分子、原子、离子等这些化学物质组成的”。如果你是一个画家,你可能会说,“世界是由不同的颜色组成的”。不同的人会有不同的回答。但如果你是一个分类学家,你会说,“这个世界是由不同类别的事物组成的”,如图10.1所示。 图10.1 世界的组成 其实,这个问题本身就比较抽象,我们说物以类聚,所以可以说世界是由不同类别的事物构成,如图10.1中所示,世界由动物、植物、物品、人和名胜等组成。动物可以分为脊椎动物和无脊椎动物。脊椎动物又可以分为哺乳类、鱼类、爬行类、鸟类和两栖类。 爬行类又可以分为有足类和无足类……,就这样可以继续分下去。当我们提到某一个分类时,就可以找到属于该分类的一个具体的事物。比如乌龟就属于爬行类中的有足类,

java第二版第二章答案

Java iSW程序设il?(郑莉) 第二章习题答案 1.什么是对象、类,它们之间的联系 答:1)对象是包含现实世界物体特征的捕象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象二数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体:在程序中对象是指一组变量和相关方法的集合。 2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象! 3)两者的关系:对象是类的具体实例 2.什么是而向对象的程序设计方法它有那些基本特征 答:而向对象程序设计从所处理的数据入手,以数抵为中心而不是以服务为中心来描述系统。 它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳世性。 它的特征:抽象,封装,继承,多态。 3.在下而的应用中,找出可能用到的对象,对毎一个对象,列出可能的状态和行为。 1)模拟航空预订系统交易的程序 2)模拟银行交易的程序 答:1)航空预订交易: 状态:旅客姓名,身份证号,联系号码,出发地址,抵达地址,出发日期。 行为:订票,领票,买票,退票。 2)银行交易: 状态:客户姓名,账号,身份证号。 行为:存款,取款,『款。 4.请解释类属性、实例属性及其区别。 答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。 5.请解释类方法、实例属性及其区别。 答:实例方法表示特定对象的行为,在声明时前而不加static修饰符,在使用时需要发送给一个类实例。 类方法也称为静态方法,在方法声明时前而需加static修饰符,类方法表示具体实例中类对象的共有行为。 区别:实例方法可以宜接访问实例变量,调用实例方法,实例方法可以直接访问类变量, 调用类方法:类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法: 6.类的访问控制符有哪几种具体含义及其区别。 答:类的访问控制符只有public (公共类)及无修饰符(默认类)两种。 区別:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与

类和对象练习题

类和对象 一、选择题 1、下面对方法的作用描述不正确的是:( d ) A、使程序结构清晰 B、功能复用 C、代码简洁 D、重复代码 2、方法定义的变量:( b ) A 、一定在方法所有位置可见B、可能在方法的局部位置可见 C、在方法外可以使用 D、在方法外可见 3、方法的形参:(a) A、可以没有 B、至少有一个 C、必须定义多个形参 D、只能是简单变量 4、方法的调用:(c) A、必须是一条完整的语句 B、只能是一个表达式 C、可能是语句,也可能是表达式 D、必须提供实际参数 5、return 语句:( d) A、不能用来返回对象 B、只可以返回数值 C、方法都必须含有 D、一个方法中可以有多个return 语句 6、void 的含义:(d) A、方法体为空 B、方法体没有意义 C、定义方法时必须使用 D、方法没有返回值 7、main()方法的返回类型是:( c ) A 、boolean B、int C、void D、static 8、方法重载所涉及的方法:( a ) A、有相同的名字 B、参数个数必须不同 C、参数类型必须不同 D、返回类型必须不同 9、下面关于类和对象之间关系的描述,正确的是( c ) A、联接关系B、包含关系C、具体与抽象的关系D、类是对象的具体化 10、下面关于java中类的说法哪个是不正确的( c ) A、类体中只能有变量定义和成员方法的定义,不能有其他语句。 B、构造方法是类中的特殊方法。 C、类一定要声明为public的,才可以执行。

D、一个java文件中可以有多个class定义。 11、下列哪个类声明是正确的( d) A、public void H1{…} B 、public class Move(){…} C、public class void number{} D、public class Car{…} 12、下面的方法声明中,哪个是正确的(c) A、public class methodName(){} B、public void int methodName(){} C、public void methodName(){} D、public void methodName{} 13、下述哪些说法是不正确的?( b ) A、实例变量是类的成员变量 B、实例变量是用static关键字声明的 C、方法变量在方法执行时创建 D、方法变量在使用之前必须初始化 14、下面对构造方法的描述不正确是( b)。 A、系统提供默认的构造方法 B、构造方法可以有参数,所以也可以有返回值 C、构造方法可以重载 D、构造方法可以设置参数 15、定义类头时,不可能用到的关键字是( b)。 A、class B、private C、extends D、public 16、下列类头定义中,错误的是( )。 A、public x extends y {...} B、public class x extends y {...} C、class x extends y implements y1 {...} D、class x {...} 17、设A为已定义的类名,下列声明A类的对象a的语句中正确的是( ) 。 A、float A a; B、public A a=A( ); C、A a=new int( ); D、static A a=new A( ); 18、设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是( a )。 A、void X(int k ){ i=k; } B、X(int k ){ i=k; } C、X(int m, int n ){ i=m; j=n; } D、X( ){i=0;j=0; } 19、有一个类A,以下为其构造方法的声明,其中正确的是

JAVA类与对象及数组习题及答案

JAV A类和对象及数组习题 一、选择题 (1)下列构造方法的调用方式中,正确的是(D )--原因:在通过new实例化一个类对象时系统会自动调用该类相应的构造方法。 A.按照一般方法调用B.由用户直接调用 C.只能通过new自动调用D.被系统调用 (2)在Java中,能实现多重继承效果的方式是(C )--原因:一个类可以同时实现多个接口。Java接口反映了对象较高层次的抽象,还弥补了Java只支持单继承的不足,可用它来完成多继承的一些功能。 A.内部类B.适配器C.接口D.同步 (3)int型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( D )—原因:java中定义常量用关键字final来定义。 A.public int MAX_LENGTH=100 B.final int MAX_LENGTH=100 C.public const int MAX_LENGTH=100 D.public final int MAX_LENGTH=100 (4)下列叙述中,正确的是( A )—原因:Java严格区分大小写,所以变量number 与Number不相同;Java 中的注释方式除了“//”行注释之外还有段注释“/*-------*/”和文档注释/**-------*/。Java源文件中的public类只能有一个。 A. 声明变量时必须指定一个类型 B. Java认为变量number与Number相同 C. Java中唯一的注释方式是"//" D. 源文件中public类可以有0或多个 (5)下列叙述中,错误的是( D )—原因:子类继承父类,并且可以有自己的成员变量和成员方法。所以可以认为子类是父类的扩展。

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<

《面向对象程序设计》第10章在线测试

《面向对象程序设计》第10章在线测试 A B C D 、关于异常对象的说法正确的是( A B 对象 C、以引用方式传递异常对象时,抛出的是局部静态对象 D 对象 A块相当于一个以类型为单一参数的函数 B 以捕捉 C块中可以声明变量,该变量可以在块外使用 D 数值 A B C D 、为保证程序中的全局变量不与开发商提供的全局变量重名,可以采取的措施是( A B C D

C、C++程序绝对不能出现错误 D、异常处理使C++程序在出现错误的情况下仍能继续运行 2、下面说法正确的是() A、C++程序中可以存在多个名字空间 B、不同的名字空间中不能出现名字相同的变量 C、名字空间能避免名字冲突 D、C++程序中也可以不定义名字空间 3、关于异常处理的说法正确的是() A、将异常的检测与处理分离 B、异常就是错误 C、异常由函数调用引起 D、在上层调用函数中使用try检测函数调用是否引发异常 4、下面与异常处理相关的关键字有() A、Throw B、throw C、try D、Try 5、下面的说法正确的是() A、引发异常用关键字throw B、在被调用函数中检测到异常条件用throw都可以引发异常 C、被调用函数只有在try块中用throw才可以引发异常 D、检测到的异常由catch捕获并处理 第三题、判断题(每题1分,5道题共5分) 1、抛出异常的模块并不负责异常的处理,该异常的处理可以程序中的任何位置。

正确错误、异常处理器根据抛出异常模块的报告来处理异常。 正确错误、异常信号传递方式有三种:传值方式、引用方式和指针方式。 正确错误表示函数将会抛出所有类型的异常 正确错误处理程序的出现次序无关紧要。 正确错误

第10章 面向对象设计

第10章面向对象设计 10.1 软件模块之间的依赖性可以从哪些角度和抽象层次进行分析? 在面向对象软件中,常见的软件模块有类、接口、包、构件。因此,分析软件模块之间的依赖性就可以从类、接口、包和构件的角度和层次进行分析。 10.2 消除包之间循环依赖性的方法是什么? 本质上,两个包之间的依赖性来自于两个包中类之间的依赖性。类之间的循环依赖性是个特别棘手的问题,好在大多数情况下可以通过重新设计避免循环依赖性。具体方法是增加新包。举例说明如下: 在下图中,包A依赖于包B,反过来包B又依赖包A,构成了循环依赖。具体解决办法是:将包B依赖的包A中的元素从包A中分离出来,组成包C,使得包B不再依赖包A,而是依赖包C。 10.3 请给出构件的一般性定义,然后给出传统的软件工程环境及面向对象的软件工程环境中构件的定义,最后选择你熟悉的编程语言说明怎样定义一个构件。 软件构件是一种组装单元,它具有规范的接口规格说明和显式的语境依赖。软件构件可以被独立部署,并由第三方任意组装。OMG UML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口”。 在传统的软件工程环境中,一个构件就是程序的一个功能要素,程序由处理逻辑和实现处理逻辑所需的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成。传统的构件也称为模块,是软件体系结构的一部分。 在面向对象的软件工程环境中,面向对象技术已达到了类级复用,而构件级复用则是比类级复用更高一级的复用,它是对一组类的组合进行封装(当然,在某些情况下,一个构件可能只包含一个单独的类),并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。一个构件可以是一个编译的类,可以是一组编译的类,也可以是其他独立的部署单元,如一个文本文件、一个图片、一个数据文件、一个脚本等。 选择你熟悉的编程语言说明怎样定义一个构件。(略) 10.4 典型的面向对象设计模型在逻辑上由哪几部分组成?对每一部分进行设计时所包含的主要内容是什么? 典型的面向对象设计模型在逻辑上将系统划分为4个部分,分别是问题域部分、人机交互部分、任务管理部分及数据管理部分。

JAVA类与对象的创建

试验四 类和对象的创建 一.类的定义 类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类用来定义对象的模板。 类的实现包括两部分:类声明和类体。基本格式为: 修饰符class类名[extends父类名]{ /*类体的内容*/ } 1.类声明 以下是一个类声明的例子。 class People成为类声明,People是类名。习惯上,类名的第一个字母大写,但这不是必须的。类的名字不能是Java中的关键字,要符合标识符规定,即类的名字可以由字母、下划线、数字或美元符号组成,并且第一个字母不能是数字。但给类命名时,最好遵守下列规则: (1)如果类名使用拉丁字母,那么名字的首写字母使用大写字母,如Hello、Time、People等。 (2)类名最好容易识别,当类名由几个“单词”复合而成时,每个单词的首写字母使用大写,如BeijingTi me、AmericanGame、HelloChina等。 2.类体 编写类的目的是为了描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“{”、“}”以及它们之间的内容称为类体,大括号之间的内容称为类体的内容。 类体的内容由两部分构成:一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画功能。 下面是一个类名为“Trapezia”的类,类体内容的变量定义部分定义了4个float类型变量:top、bottom、h igh和laderArea,方法定义部分定义了两个方法:“getArea”和“setHigh”。

二.对象 1.对象的创建 创建一个对象包括对象的声明和为对象分配内存两个步骤。 (1)对象的声明。 一般格式为: 类的名字对象名字; 如: 这里People是类的名字,zhubajie是我们声明的对象的名字。 (2)为声明的对象分配内存。 使用new运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(你一定还记得构造方法的名字必须和类名相同这一规定),如: 例1: 「注」如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法。 2.对象的使用 对象不仅可以改变自己变量的状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。 通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。 例2:

Java实例对象概念图解

Java编程面向对象——类与对象的关系 面向对象是一种组件化的设计思想,OOA、OOD、OOP 类与对象是整个面向对象之中最为基础的组成单元,如果需要给划出定义:类就是共性的集合,而对象是某一个性的产物;所有类实际上是用来描述一个对象的结构。 类是通过对象来使用的,而对象是通过类来创建的。 类与对象的基本定义: 在程序中,定义类,可以使用“class 类名称{}”的语法结构完成。 而类之中的组成主要有两点: * Field (属性、成员、变量),就是一推变量的集合 * Method (方法、行为),此时的方法是由对象调用的。 这个类中定义了两个属性和一个方法(可以定义更多属性和方法) *类虽然存在,但是类的使用,必须有对象; 对象的定义格式: 声明并实例化对象: 类名称对象名称 = new 类名称(); 分步完成: 声明对象:类名称对象名称 = null; 实例化对象:对象名称 = new 类名称(); 引用数据类型: 引用数据类型最大的不同在于需要内存的开辟及使用,所以关键字new 的主要功能就是开辟内存空间; 即:只要引用数据类型想使用,就必须使用关键字new 来开辟空间。 当一个对象实例化之后就可以使用以下方式利用对象来操作类的结构: 对象.属性:表示要操作类中属性内容 对象.方法():表示要调用类中的方法内容

内存概念: 堆内存:保存每一个对象的属性内容,堆内存需要用关键字 new 才可以开辟; 栈内存:保存的是一块堆内存的地址。简单的理解,栈内存保存的是对象的名字; 编程中的栈内存和堆内存的操作过程: 引用数据的初步分析: 引用是整个 Java 开发中的核心精髓所在,即:只有掌握了“引用”这一概念之后,才能加入下一步学习,类似C/C++ 中的指针概念。 在所有的引用分析里面,最关键的还是在于关键字 “new ”,每一次使用关键字new ,都会开辟新的堆内存空间,如果你的代码里面声明两个对象,并且使用了关键字new 为两个对象分别实例化操作,那么一定是各自占有各自(独立)的堆内存空间

java类和对象的例子

1.实现简易计算器,分别实现两个整数、三个浮点数的加法运算.(用JAVA中的类和对象) 源码如下: package days;//包名自己修改 import java.util.Scanner;//注意别忘记导入这个包名了public class NumSum { public int add(int num1,int num2){ return num1+num2; } public double add(double num1,double num2,double num3){ return num1+num2+num3; } public static void main(String[] args) { // TODO Auto-generated method stub NumSum nc=new NumSum(); NumSum nc1=new NumSum();

//调用2个整数相加的方法 //Scanner是用键盘手动输入数字。 System.out.println("请用键盘手动输入两个整数:"); System.out.println(nc.add(new Scanner(System.in) .nextInt(),new Scanner(System.in).nextInt())); //调用3个浮点数相加的方法 System.out.println("请用键盘手动输入三个浮点数:"); System.out.println(nc1.add(new Scanner(System .in).nextDouble(), new Scanner(System.in).nextDouble( ), new Scanner(System.in).nextDouble())); } }

从C到ObjectiveC类和对象续修订稿

从C到O b j e c t i v e C类 和对象续 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

从 C++ 到 Objective-C(4):类和对象(续) 作者:日期: 2011 年 03 月 19 日(9) 方法 Objective-C 中的方法与 C++ 的函数在语法方面风格迥异。下面,我们就来讲述 Objective-C 的方法。 原型、调用、实例方法和类方法 以–开头的是实例方法(多数情况下都应该是实例方法); 以 + 开头的是类方法(相当于 C++ 里面的 static 函数)。 Objective-C 的方法都是 public 的; 返回值和参数的类型都需要用小括号括起来; 参数之间使用冒号:分隔; 参数可以与一个标签 label 关联起来,所谓标签,就是在 : 之前的一个名字。标签被认为是方法名字的一部分。这使得方法 比函数更易读。事实上,我们应该始终使用标签。注意,第一个 参数没有标签,通常它的标签就是指的方法名; 方法名可以与属性名相同,这使 getter 方法变得很简单。 C++ // 原型 void Array::insertObject(void*anObject, unsigned int atIndex); // shelf 是 Array 类的一个实例,book 是一个对象

shelf.insertObject(book, 2); Objective-C(不带 label,即直接从 C++ 翻译来) // 方法原型 // 方法名字是“insertObject::” // 这里的冒号:用来分隔参数,成为方法名的一部分(注意,这不同于C++ 的域指示符::) -(void) insertObject:(id)anObject:(unsigned int)index // shelf 是 Array 类的一个实例,book 是一个对象 [shelf insertObject:book:2]; Objective-C(带有 label) // 方法原型。“index” 有一个标签“atIndex” // 方法名为“insertObject:atIndex:” // 这样的话,调用语句就很容易阅读了 -(void) insertObject:(id)anObject atIndex:(unsigned int)index // shelf 是 Array 类的一个实例,book 是一个对象 [shelf insertObject:book:2]; // 错误! [shelf insertObject:book atIndex:2]; // 正确 注意,方括号语法不应该读作“调用 shelf 对象的 insertObject 方法”,而应该是“向 shelf 对象发送一个 insertObject 消息”。这是Objective-C 的实现方式。你可以向任何对象发送任何消息。如果目标对象不能处理这个消息,它就会将消息忽略(这会引发一个异常,但不

c类和对象练习题

c类和对象练习题 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

第8章类与对象 8.1知识要点 1.掌握类与对象的概念和定义方法,掌握类成员的访问属性。 2.掌握构造函数的概念、定义方法和使用方法。 3.掌握析构函数的概念、定义方法和使用方法。 4.掌握拷贝构造函数的概念、定义方法和使用方法。 5.掌握包含对象成员的类构造函数的定义方法。 6.掌握静态成员的概念、定义方法、作用和特点。 7.掌握友元的概念、定义方法、作用和特点。 8.掌握类模板的定义格式与使用方法。 8.2典型例题分析与解答 例题1:下列有关类的说法不正确的是()。 A.对象是类的一个实例 B.任何一个对象只能属于一个具体的类 C.一个类只能有一个对象 D.类与对象的关系和数据类型与变量的关系相似 答案:C 分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。 例题2:下面()项是对构造函数和析构函数的正确定义。 A.void X::X(), void X::~X() B.X::X(参数),X::~X() C.X::X(参数),X::~X(参数) D.void X::X(参数),void X::~X(参数) 答案:B 分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。 例题3:()的功能是对象进行初始化。 A.析构函数B. 数据成员 C.构造函数 D.静态成员函数 答案:C 分析:当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作; 例题4:下列表达方式正确的是()。 A.class P{B.class P{ public: public: int x=15; int x; voidshow(){cout<

UML第二章作业答案

1.UML如何表示类?类图标中可以指明哪些信息? 类是描述一类对象的特征和行为,类图包含一组、接口及他们之间的关联、依赖和泛化的关系。它不仅显示了信息的结构,同时还描述了系统对象的的行为。 2.什么是类的多重性(关联的基数)?多重性怎么表示? 多重性是对象之间关联的一个重要方面,它说明了在关联中的一个类的对象可以对应另一个类的多个对象。 主要包含一组上下限数,用来指出可被允许生成的实例(instance)数量,即最多可以生成多少数目(上限),最少不得低于多少数目(下限)。关联的两端以"下限..上限"的格式标示出多重性,如图2-12中的1..*。星号(*)代表无指定上限,下限最低为0。如果上下限数相同,标示出一个数目就可以了 3.两者对象之间能够以多种方式关联吗? 关联两边的"employee"和“employer”标示了两者之间的关系,而数字表示两者的关系的限制,是关联两者之间的多重性。通常有“*”(表示所有,不限),“1”(表示有且仅有一个),“0...”(表示0个或者多个),“0,1”(表示0个或者一个),“n...m”(表示n到m个都可以),“m...*”(表示至少m个)。在关联中有一种叫“限定关联”,还有一种谓之自身关联。另外,对象之间的关联就没那么复杂,只是将类的关联实例化而已 4.什么是约束?为什么要对类图附加注释? 约束用来约束MUL成员的语义。约束用举例在大括号内的条件来表示({contrraint}),可以直接放在图中,类图除了在设计新系统方面的用途外,它们还能用来记录一个存在系统(称它为“遗产”)的对象现在如何交互 5.聚集和组成之间有什么区别? 聚合关系完全是概念上的,只是区分了整体与组成部分,没有改变整体与其组成部分之间的关联导航的含义,也没有将整体与部分的生命周期联系起来。而组合是聚合的变种,整体与部分之间有很强的所有关系,也就是说,在组合关系中,一个对象一次只是一个组合的一部分,而在简单的聚合关系中,一个部分可以被好几个整体共享。 另外,在组合关系中,整体负责部分的创建和破坏,部分的生命周期是依附于整体的,要么和整体一起创建和破坏,要么在整体存在后创建或在整体破坏前破坏,总之它不能单独存在。 6.什么叫实现?实现和继承有何相似之处?两者又有何不同之处? 答:实现是类和它的接口之间的关系,可以说成是类实现了它的接口。相似之处:在于类可以使用它的接口中的操作,也可以操作从父类中继承操作。不同之处:类不能使用它的接口中的属性但可以继承父类中的属性。实现是对接口而言的,继承是对类而言的。 7.写出3种可见性的名称,并描述每一种可见性的含义。 答:public,protected,private及package。

类与对象答案

类与对象 知识要点 1.掌握类与对象的概念和定义方法,掌握类成员的访问属性。 2.掌握构造函数的概念、定义方法和使用方法。 3.掌握析构函数的概念、定义方法和使用方法。 4.掌握拷贝构造函数的概念、定义方法和使用方法。 5.掌握包含对象成员的类构造函数的定义方法。 6.掌握静态成员的概念、定义方法、作用和特点。 7.掌握友元的概念、定义方法、作用和特点。 8.掌握类模板的定义格式与使用方法。 典型例题分析与解答 例题1:下列有关类的说法不正确的是()。 A.对象是类的一个实例 B.任何一个对象只能属于一个具体的类 C.一个类只能有一个对象 D.类与对象的关系和数据类型与变量的关系相似 答案:C 分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。 例题2:下面()项是对构造函数和析构函数的正确定义。 A.void X::X(), void X::~X() B.X::X(参数), X::~X() C.X::X(参数), X::~X(参数) D.void X::X(参数), void X::~X(参数) 答案:B 分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。 例题3:()的功能是对象进行初始化。 A.析构函数 B. 数据成员 C.构造函数 D.静态成员函数 答案:C 分析:当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作; 例题4:下列表达方式正确的是()。 A.class P{ B. class P{ public: public: int x=15; int x; void show(){cout<

实验3 Java类与对象

实验三类与对象 一、实验目的 1、掌握类和构造方法的定义 2、理解静态和非静态成员变量的区别 3、掌握创建类实例的方法 4、理解Java中包的概念及其使用方法 二、实验要求 1.写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width 和height都是double型的,而color则是String类型的。要求该类具有: (1)使用构造函数完成各属性的初始赋值 (2)使用getter和setter的形式完成属性的访问及修改 提供计算面积的getArea()方法 public class mianji { private double height; private double width; private String color; public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } public double getWidth() { return width; } public void setWidth(double width) { this.width = width; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public mianji(double width,double height,String color){ this.setColor(color); this.setHeight(height); this.setWidth(width); } public void getArea(){ double area=0; area=this.height*this.width; System.out.println("矩形的面积为"+area); } public String toString(){ String recStr="矩形的高度:"+this.getHeight() +"宽度:"+this.getWidth() +"颜色:"+this.getColor(); return recStr; } public static void main(String[] args) { mianji rec=new mianji(3, 4, "红色"); rec.getArea(); System.out.println(rec.toString());}

Java类与对象实验报告

实验报告 一、实验项目:类与对象 二、实验目的: 1. 学会使用类来封装对象的属性和功能 2. 掌握类变量与实例变量,以及类方法与实例方法的区别 3. 掌握使用package和import语 三、实验器材:计算机、Java编程软件JCreator 四、实验原理(或仪器装置图): 1. 类与对象 类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的模板。 类声明 class 类名{ 类体 } 对象的声明 一般格式为: 类的名字对象名字; 定义对象引用后,用new运算符完成对象的创建工作,分配存储空间,并对其初始化。 变量名=new 类名([构造方法实参表]); 对象的使用 访问成员的基本语法形式如下: 对象名.变量成员名 对象名.方法成员名([实际参数表]) 2.成员变量和局部变量 成员变量格式:[修饰符] 变量类型变量名[=初值]; 成员方法: 格式:[修饰符] 返回值的数据类型方法名(参数1,参数2,…) { 语句序列; return[表达式]; } 类中定义的变量是成员变量,而方法中定义的变量是局部变量。 3. 构造方法 构造方法是一种特殊的方法,创建对象时被自动调用。与一般的方法不同,它没有返回值类型的说明,方法体中也不可以用return语句带回返回值。构造方法的方法名与类名相同 在构造方法中可以通过this关键字调用该类中其他的构造方法。 4.包 包是Java语言中有效地管理类的一个机制。 ①通过关键字package声明包语句。package 语句作为Java源文件的第一条语句,指明该 源文件定义的类所在的包。package语句的一般格式为:package 包名; ②import 语句:使用import 语句可以引入包中的类。 五、实验步骤及数据记录:

2.1 类和对象 (第二章 C++面向对象程序设计)

1. 什么是类?类的定义格式?类的成员一般分为哪两部分?它们的区别如何? 答:类是C++语言的数据抽象和封装机制,它描述了一组具有相同属性(数据成员)和行为特征(成员函数)的对象。类的定义格式如下: Class 类名 { private: //私有数据成员和成员函数 public: //共有数据成员和成员函数 protected: //受保护的数据成员和成员函数 }; 类的成员分为数据成员和成员函数两部分。数据成员定义了该类对象的属性,不同对象的属性值可以不同;成员函数定义了该类对象的操作即行为。 2. 类与结构体有什么区别? 答:c语言中的结构体只有数据成员,无函数成员。C++语言中的结构可有数据成员和成员函数。在默认情况下,结构体中的数据成员和成员函数都是共有的,而在类中可以是私有的。从外部可以随意修改结构体变量中的数据,对数据的这种操作时很不安全的,程序员不能通过结构体对数据进行保护和控制;在结构体中,数据和其相应的操作是分离的,使得程序的复杂性难以控制,而且程序的可重用性不好,严重影响了软件的生产效率。 3. 什么是对象?如何定义一个对象?对象的成员如何表示? 答:对象是类的实例,是属性和服务的封装体。对象的定义有两种方法: 方法一:在定义类的同时直接定义。 class 类名 { private: // public: // }对象1,对象2; 方法二:在使用时定义对象。 类名对象1,对象2; 对象的成员的表示有:

(1)通过对象调用成员。 格式:对象名.公有成员 其中,“.“成为对象的选择符,简称点运算符。 (2)通过指向对象的指针调用成员。 格式:指向对象的指针->成员 (3)通过对象的引用调用成员。 格式:对象的引用.成员 4. 什么是构造函数?构造函数有哪些特点? 答:构造函数就是与类名有相同名称的成员函数,它可自动进行对象的初始化。 特点:它没有返回值说明;它不能被继承;它可以有默认实参;它不可以是虚(virtual)的;不可以对它取地址;不能用常规调用方法调用构造函数;当定义对象时,编译程序自动调用构造函数。 5. 什么是析构函数?析构函数有哪些特点? 答:析构函数的作用是当对象生命期结束后,收回对象占用的资源。 析构函数的特点是:1) 析构函数名是在类名前加以符号“~”。2) 析构函数没有参数、返回类型和修饰符。3) 一个类中至多有一个析构函数,如果程序员没有定义析构函数,那么系统会自动地加入一个析构函数。4) 不能显式地调用析构函数,而是由系统自动调用。 6. 什么是默认构造函数和默认析构函数? 答:若用户未显式定义一个类的构造函数,则C++语言提供一个默认的构造函数,也叫默认构造函数。同样,如果一个类没有显式的定义类的析构函数,则编译器将合成一个,也就是默认的析构函数。 7. 什么是复制构造函数?它的功能和特点是什么? 答:复制构造函数是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构件及初始化。 复制构造函数的功能是用一个已有的对象来初始化一个被创建的同类对象,是一种特殊的构造函数,具有一般构造函数的所有特性,它的特殊功能是将参数代表的对象逐域拷贝到新创建的对象中。 在C++中,下面三种对象需要拷贝的情况。因此,复制构造函数将会被调用。

C++Primer Plus第十章对象与类课后习题

1. account.h #ifndef ACCOUNT_H_ #define ACCOUNT_H_ #include class BankAccount { private: std::string name; std::string account_m; double saving; public: BankAccount(const std::string & client, const std::string & num, double pr = 0.0); void show() const; void despoit(double pr); void withdraw(double pr); }; #endif account.cpp #include #include"account.h" BankAccount::BankAccount(const std::string & client, const std::string &

num, double pr ) { name = client; account_m = num; saving = pr; } void BankAccount::show() const { std::cout << "BankAccount : " << std::endl; std::cout << "Name is: " << name << " , Account: " << account_m << " , Saving: " << saving << " . " << std::endl; } void BankAccount::despoit(double pr) //存??款? { saving = pr + saving; } void BankAccount::withdraw(double pr) //取¨?款? { if(pr > saving) std::cout << "There is not so much money." << std::endl; else saving = saving - pr; } Main.cpp

相关文档
最新文档