汽车类
汽车的抽象描述
类的特征和功能也就是对象(实体)
的特征和功能
汽车类的特征和功能—分析抽象汽车个体
的特征和功能
- 特征:型号、颜色、价格、出厂日期、载客量、载重量、……
- 功能:运动、鸣笛、倒车、播放音乐、恒温、定位、 ……
汽车类的定义
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;
}