案例一、
请设计一个 Person 类,Person 类具有 name 和 age 属性,提供初始化函数 (Init),并提供对 name 和 age 的读写函数(set,get),但必须确保 age 的赋值在有 效范围内(0-100),超出有效范围,则拒绝赋值,并提供方法输出姓名和年龄.
#include <iostream>
#include <string.h>
using namespace std;
class Person
{
private://私有数据
char m_name[32];//定义时候不要初始化
int m_age;
public://公有函数
//初始化函数
void initPerson(char *name, int age)
{
strcpy(m_name,name);
m_age = age;
}
//对m_name进行写操作
void setName(char *name)
{
strcpy(m_name,name);
}
//对m_name进行读操作
char *getName(void)
{
return m_name;
}
//对m_name进行写操作
void setAge(int age)
{
if(age>0 && age<100)
m_age = age;
else
cout << "无效"<<endl;
}
//对m_name进行读操作
int getAge(void)
{
return m_age;
}
//遍历数据
void showPerson(void)
{
cout <<"姓名:"<<m_name<<" 年龄:"<<m_age<<endl;
}
};
int main(int argc, char *argv[])
{
Person pee;//通过类,实例化一个对象
pee.initPerson("bbb",20);//初始化一个对象
cout << "姓名:"<<pee.getName()<<endl;
cout <<"年龄" << pee.getAge()<<endl;
pee.showPerson();//遍历
pee.setName("ccc");//写一个名字
pee.setAge(19);//写一个年龄
cout << "姓名:"<<pee.getName()<<endl;
cout <<"年龄" << pee.getAge()<<endl;
pee.showPerson();
return 0;
}
运行结果:
案例二、设计立方体类
设计立方体类(Cube),求出立方体的面积( 2ab + 2ac + 2bc )和体积( a * b * c),分别 用全局函数和成员函数判断两个立方体是否相等。
#include <iostream>
using namespace std;
class Cub
{
private:
int m_l;
int m_w;
int m_h;
public:
void setL(int l)//长
{
m_l = l;
}
void setW(int w)//宽
{
m_w = w;
}
void setH(int h)//高
{
m_h = h;
}
int getL(void)
{
return m_l;
}
int getW(void)
{
return m_w;
}
int getH(void)
{
return m_h;
}
//计算面积
int gets()
{
return 2*(m_l*m_w+m_l*m_h+m_h*m_w);
}
//计算体积
int getc()
{
return m_l*m_w*m_h;
}
//局部比较函数
bool conparecub2(Cub &ob)
{
if(m_l == ob.m_l && m_h == ob.m_h && m_w == ob.m_w)
return true;
else
return false;
}
};
//全局比较 函数
bool comparecub1(Cub &cub1,Cub &cub2)//用引用的好处:传参数,节省空间
{
if(cub1.getL()==cub2.getL() && cub1.getH()==cub2.getH() && cub1.getW()==cub2.getW())
return true;
else
return false;
}
int main(int argc, char *argv[])
{
Cub cub1;
cub1.setL(10);
cub1.setW(10);
cub1.setH(10);
//计算面积
cout << "cub1的面积" <<cub1.gets() << endl;
//计算体积
cout << "cub1的体积" <<cub1.getc() <<endl;
Cub cub2;
cub2.setL(10);
cub2.setW(10);
cub2.setH(10);
//全局比较
if(comparecub1(cub1,cub2)==true)
{
cout << "相等" << endl;
}
else
{
cout << "不相等" <<endl;
}
Cub cub3;
cub3.setL(10);
cub3.setW(20);
cub3.setH(10);
//局部比较
if(cub3.conparecub2(cub1)==true)
cout << "相等" << endl;
else
cout <<"不相等"<<endl;
return 0;
}
运行结果:
案例三、点和圆的关系
设计一个圆形类(AdvCircle),和一个点类(Point),计算点和圆的关系。 假如 圆心座标为 x0, y0, 半径为 r,点的座标为 x1, y1: 1)点在圆上:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) == rr 2)点在圆内:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) < rr 3)点在圆 外:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) > r*r
#include <iostream>
using namespace std;
class Point//设计点的类
{
private:
int m_x;
int m_y;
public:
void setX(int x=0)
{
m_x = x;
}
void setY(int y=0)
{
m_y = y;
}
int getX(void)
{
return m_x;
}
int getY(void)
{
return m_y;
}
};
class Circle//设计圆的类
{
private:
Point m_p;
int m_r;
public:
void setR(int r)
{
m_r = r;
}
int getR(void)
{
return m_r;
}
//设置圆心
void setPoint(int x,int y)
{
m_p.setX(x);
m_p.setY(y);
}
Point getPoint(void)
{
return m_p;
}
//判断点与圆的关系
void compareCircle(Point &ob)
{
int distance =(ob.getX()-m_p.getX())*(ob.getX()-m_p.getX())+(ob.getY()-m_p.getY())*(ob.getY()-m_p.getY());
if( distance >( m_r*m_r ))
cout << "点在圆外"<<endl;
else if( distance ==( m_r*m_r ))
cout << "点在圆上"<<endl;
else
cout << "点在圆内"<<endl;
}
};
int main(int argc, char *argv[])
{
//实例化一个点
Point point;
point.setX(15);
point.setY(15);
//实例化一个圆的对象
Circle circle;
circle.setR(10);
circle.setPoint(20,20);
//判断点与圆的关系
circle.compareCircle(point);
return 0;
}
运行结果: