⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class.cpp

📁 这我们老师对是面向对象程序设计(清华大学出版社)一书制作的PPT
💻 CPP
字号:

#include <iostream.h>


//【例9.1】定义一个表示日期的类

class CDate
{   
private:          //A
	int year , month, day;
public: 
	void SetDate (int y,int m,int d)
	{
		year=y;
		month=m;
		day=d;
	}
	void Print ( ) 
	{
		cout<<year<<"年"<<month<<"月"<<day<<"日";
	}
};


void main()
{
	CDate  dd;
}

//【例9.2】在类体外实现例9.1中成员函数的定义,并增加一个判断是否闰年的成员函数。

class CDate2
{
public :
	void SetDate (int y,int m,int d)    //在类体内实现的函数,为内联函数
    {	
		year=y;
		month=m;
		day=d;
	}
	void Print ();
	int IsLeapYear ( );
private:
	int year, month, day;
};

void CDate2::Print( ) 
{
	cout<<year<<"年"<<month<<"月"<<day<<"日";
}

inline int CDate2::IsLeapYear( )     //在类体外定义内联函数
{
	return  (year%4==0&&year%100!=0)||(year%400==0);
}

void main9_2()
{
	CDate2 dd;
}

//【例9.3】定义一个描述线段的类,要求能够设置该线段,并能获取其坐标值以及该线段的长度。
//分析:一条线段可用两个端点的坐标来描述,两个端点的坐标分别用(x1, y1)和(x2,y2)来表示。


#include<math.h>
	
class CLine{	
    float x1,y1;
public:		
	float x2,y2;
 public:	
	void SetCoord(float,float,float,float);     	//设置坐标值函数
    float GetCoordX1(){ return x1; }    		//获取第一个端点的横坐标
    float GetCoordY1(){ return y1; }    		//获取第一个端点的纵坐标        
	void Print(void)
	{	
		float L;
		L=sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1));
		cout<<"该直线的长度为:"<<L<<'\n';
	}
};

void CLine::SetCoord(float a1,float b1,float a2,float b2)
{
	x1=a1;y1=b1;
	x2=a2;y2=b2;
}

void main9_3(void)
{
	CLine line1 , line2;
	line1.SetCoord(50,60,100,200);
	cout<<"x1="<<line1.GetCoordX1()<<'\n';        	//A
	cout<<"y1="<< line1.GetCoordY1()<<'\n';        	//B
	cout<<"x2="<< line1.x2<<'\n';
	cout<<"y2="<< line1.y2<<'\n';
	line1.Print();
	line2= line1;                                 //C
	line2.Print();
}

//【例9.4】定义一个时间类。

class CTime{
	int hours,minutes;
public:
	void SetTime(int new_hours,int new_minutes) //A 函数体中使用了隐含的*this指针
	{  
		hours=new_hours;minutes=new_minutes;
	}      
	void GetTime(int &current_hours, int &current_minutes)
	{  
		current_hours=hours;current_minutes=minutes; 
	}
	void CopyTime(CTime &Time2);
};	

void CTime::CopyTime(CTime &Time2)
{
	*this=Time2;                      //B    *this指针代表当前对象
}

void main9_4(void)
{
	int hrs,mins;
	CTime Time1,Time2;
	Time1.SetTime(10,30);
	Time2.SetTime(12,15);
    Time1.GetTime(hrs,mins);
	cout<<" Time is:"<<hrs<<":"<<mins<<'\n';
	Time1.CopyTime(Time2);
	Time1.GetTime(hrs,mins);
	cout<<"Affter copying Time2 to Time1, the time is:"
		<<hrs<<":"<<mins<<'\n';
}

//【例9.5】 设计一个CbankAccount类,用来模拟银行为客户开一个银行帐号存款并取款的过程。

class CBankAccount{
public:
	CBankAccount()    		//构造函数
	{account=0;balance=0.0;}       
	void MakeDeposit(long count_num,float amount) //存款 第一个参数:帐号
	{
		account=count_num;
		balance+=amount;
		cout<<account<<"\t"<<"After deposit,the balance is:\t"<<balance<<endl;
	}

	float WithDraw(long count_num,float amount);   //取款	   
private:
	long account;         //帐号
	float balance;         //余额
};

float CBankAccount::WithDraw(long count_num,float amount)   //取款
{
   if(account!=count_num)      //如果输入的帐号不对
   {
	    cout<<"Illegal account_number!"<<endl;
	    return 0.0;
    }
    if(balance<amount)       //如果余额少于取款数额
    {
	    cout<<"The amount to withdraw is beyond the balance."<<endl;
	    return 0.0;
    }
    balance-=amount;
    cout<<account<<"\tAfter withdraw,the balance is :\t"<<balance<<endl;
    return balance;
}

void main9_5()
{
	CBankAccount a,b;       //两个对象中的成员数据都为0
	a. MakeDeposit(1001,1000);
	a.WithDraw(1001,500);
	a.MakeDeposit(1001,2000);
	a.WithDraw(1001,1000);
	b.MakeDeposit(1002,5000);
	b.WithDraw(1002,2000);
	b.WithDraw (1002,8000);
	b.WithDraw(1003,2000);
	b.WithDraw(1002,2000);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -