计算机程序设计c++ 9-7:类的抽象描述举例-汽车类及圆类设计

汽车类

汽车的抽象描述

类的特征和功能也就是对象(实体)的特征和功能
汽车类的特征和功能—分析抽象汽车个体的特征和功能

  • 特征:型号、颜色、价格、出厂日期、载客量、载重量、……
  • 功能:运动、鸣笛、倒车、播放音乐、恒温、定位、 ……

汽车类的定义

class automobile
{
	private:
		char type[20]; //汽车型号
		char color[20]; //汽车颜色
		float price; //价格
		int carry_weight; //载重量
		int carry_customer; //载客量

	public:
		void set_data(char *t,char *c,float pri,int cw,int cc); //初始化或修改数据成员
		void movecar(int l,int k); //汽车水平运动k步
		void horming(int num); //汽车鸣笛
		void downcar(int l); //汽车垂直向下运动
		void play_mp3(char *ps); //播放歌曲
		char *show_type(){return type;} //取出汽车型号
};

设置数据函数与水平运动函数

void automobile::set_data(char *t, char *c, float pri, int cw, int cc)
{
	strcpy(type, t);
	strcpy(color, c);
	price = pri;
	carry_weight = cw;
	carry_customer = cc;
}

void automobile::movecar(int l,int k)
{
	cout << "\n" << type << "水平直线运动:" << endl;
	for(int i=0; i<l; i++)
	{
		cout << ' ' << "o_o";
		Sleep(1000/k);
		cout << "\b\b\b";
	}
}

垂直下降运动函数与鸣笛函数

void automobile::downcar(int l)
{ 
	//垂直下降运动
	cout<<"\n"<<type<<"垂直下降运动:"<<endl;
	for(int i=0; i<l; i++)
	{
		cout << "o_o";
		Sleep(500);
		cout << "\b\b\b" << " ";
		cout << endl;
	}
}


void automobile::horming(int num)
{
	for(int i=0; i<num; i++)
	{
		cout << type;
		cout << '\007' << " di... " << endl;
		Sleep(1000);
	}
}

播放MP3音乐函数

void automobile::play_mp3(char *ps)
{
	char str[100] = "play "; //play后有空格
	strcat(str, ps);
	cout << str;
	mciSendString(str, NULL, 0, NULL);
	//在Dec-C++环境中还要进行设置:
	//工具\编译器选项\编译器\在连接器命令加入以下命令\-lwinmm
	//mciSendStringA(str, NULL, 0, NULL); //在VC2008调用此函数
	//mciSendString(str, NULL, 0, NULL); //在VC6.0调用此函数
	char a;
	cin >> a; //输入任何字符结束播放
}

测试汽车类的主函数

int main()
{
	automobile nison;
	char tp[] = "yyida";
	char ys[] = "white";
	nison.set_data(tp, ys, 200000, 5, 3); //测试设置初始数据函数
	nison.horming(5); //测试鸣笛函数
	nison.movecar(10, 3); //测试水平直线运动
	nison.downcar(8); //测试垂直下降运动
	char mp[]="./甜蜜蜜.mp3";
	//将歌曲文件"甜蜜蜜.mp3"放到该目录中
	nison.play_mp3(mp); //测试播放mp3歌曲函数
	return 0;
}

圆类

设计平面上的几何图形:图在这里插入图片描述

圆的特征分析:

  • 圆心坐标值(X,Y)和半径值R
  • 外切正方形,两个点坐标值
  • 内接正方形,两个点坐标值
  • 圆周上的三个坐标值

圆的功能

  • 设置初值、计算面积、输出圆属性、得到圆属性等

先设计点类,再设计圆类
点的特征和功能

  • 特征:点坐标,X和Y轴上的整数值
  • 功能:设置坐标、打印坐标、得到坐标等

圆的特征和功能

  • 特征:点坐标和半径
  • 功能:设置初值、计算面积、输出圆属性、得到圆属性等

点类的定义

class Point //点类定义
{
	int x, y; //点的x和y坐标
	public:
		void InitPoint( int, int ); // 设置坐标
		int GetX() { return x; } // 取x坐标
		int GetY() { return y; } // 取y坐标
		void Print(); //输出点的坐标
};

//类外定义两个成员函数
void Point::InitPoint( int a, int b )
{
	x = a;
	y = b;
}


void Point::Print()
{
	cout << '[' << x << ", " << y << ']';
}

圆类的定义

class Circle //圆类定义
{
	private:
		double radius; //定义半径对象(变量)
		Point Center; //定义圆心对象(变量)

	public:
		void InitCircle( double, Point ); //设置圆类的数据
		double GetRadius(); //取半径
		Point GetCenter(); //取圆心
		double Area(); //计算面积a
		void Print(); //输出圆心坐标和半径
};

// 类外定义成员函数
void Circle::InitCircle( double r, Point p )
{
	radius = ( r >= 0 ? r : 0 );
	Center = p;
}

double Circle::GetRadius() { return radius; }

Point Circle::GetCenter() { return Center; }

double Circle::Area()
{
	return 3.14159 * radius * radius;
}

void Circle::Print()
{
	cout << "Center = ";
	Center.Print();
	cout << "; Radius = " << radius << endl;
}

测试主函数

// 测试主函数
int main()
{
	Point p,center;
	p.InitPoint(30,50);
	center.InitPoint(120,80);
	
	Circle c;
	c.InitCircle(10.0 ,center);
	cout << "Point p:";
	p.Print();
	cout << endl;
	cout << "Circle c:";
	c.Print();
	cout << "The center of circle c:";
	c.GetCenter().Print();
	cout << "\nThe area of circle c:" << c.Area() << endl;
	return 0;
}

Guess you like

Origin blog.csdn.net/uncle_ll/article/details/121723301