2015级C++第5周项目 类和对象
来源:互联网 发布:得熊猫者得天下知乎 编辑:程序博客网 时间:2024/06/11 03:25
【项目1 - 三角形类雏形】
[参考解答]
(1)下面设计一个三角形类,请给出各成员函数的定义
class Triangle{public: void setABC(double x, double y, double z);//置三边的值,注意要能成三角形 double perimeter();//计算三角形的周长 double area();//计算并返回三角形的面积private: double a,b,c; //三边为私有成员数据};int main(){ Triangle tri1; //定义三角形类的一个实例(对象) tri1.setABC(4,5,6); //为三边置初值 cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl; return 0;}//请在下面定义Triangle类中的各个成员函数
(2)在上面程序的基础上,重新定义Triangle类,其中逻辑特别简单的set和get成员函数,要处理为内联成员函数,直接在类内定义。
int main() { Triangle tri1; //定义三角形类的一个实例(对象) double x,y,z; cout<<"请输入三角形的三边:"; cin>>x>>y>>z; tri1.setA(x); tri1.setB(y); tri1.setC(z); //为三边置初值 if(tri1.isTriangle()) //isTriangle()返回值为布尔型,用于判断给出的三边是否能构成一个三角形 { cout<<"三条边为:"<<tri1.getA()<<','<<tri1.getB()<<','<<tri1.getC()<<endl; cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl; } else cout<<"不能构成三角形"<<endl; return 0; }
(3)设计三角形类带参数的构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出,使对象在定义时能够进行初始化。需要的测试函数是:
int main(){ Triangle Tri(7,8,9); //定义三角形类的一个实例(对象) Tri.showMessage(); //定义一个能显示三角形信息的成员函数 return 0;}
(4)使用有默认参数的构造函数,不给定实参时,默认边长为1;注意——只需要一个构造函数即可。需要的测试函数是:
int main(){ Triangle Tri1; //定义边长为1 1 1的三角形类实例 Tri1.showMessage(); Triangle Tri2(1.5);//定义边长为1.5 1 1的三角形类实例 Tri2.showMessage(); Triangle Tri3(1.5,1.5);//定义边长为1.5 1.5 1的三角形类实例 Tri3.showMessage(); Triangle Tri4(7,8,9); //定义边长为7 8 9的三角形类实例 Tri4.showMessage(); return 0;}
(5)使用复制构造函数,能用一个已有的三角形对象,复制出新的三角形对象:
int main(){ Triangle Tri1(3,4,5); //定义边长为1 1 1的三角形类实例 Tri1.showMessage(); Triangle Tri2(Tri1); //调用复制构造函数 Tri2.showMessage(); return 0;}
【项目2-游戏中的角色类】
[参考解答]
(1)基于下面设计的游戏中角色类,补充完整需要的成员函数,使角色能一定的规则行动或改变状态。下面代码中包含的是最基本的要求,可以根据你的设计进行扩充。
class Role{public: ……private: string name; int blood; bool life;};int main( ){ Role mary; mary.setRole("Mary", 4); mary.show(); mary.attack(); mary.eat(2); mary.beAttack(); mary.beAttack(); mary.show(); return 0;}
(2)设计构造函数,使角色对象在创建时被初始化;设计析构函数,当角色对象被撤消时,提示一句“XXX(名称)退出江湖…”。可以用下面的代码进行测试,运行结果参考右图:
int main( ){ Role mary("Mary", 4); Role jack("Jack", 0); mary.show(); jack.show(); return 0;}
【项目3 - 时间类】
[参考解答]
阅读、运行程序后,按要求扩充类的功能
class Time{public: void set_time( ); void show_time( ); private: bool is_time(int, int, int); int hour; int minute; int sec;};void Time::set_time( ) { char c1,c2; cout<<"请输入时间(格式hh:mm:ss)"; while(1) { cin>>hour>>c1>>minute>>c2>>sec; if(c1!=':'||c2!=':') cout<<"格式不正确重输"<<endl; else if (!is_time(hour,minute,sec)) cout<<"时间非法,请重新输入"<<endl; else break; }}void Time::show_time( ) { cout<<hour<<":"<<minute<<":"<<sec<<endl;}bool Time::is_time(int h,int m, int s){ if (h<0 ||h>24 || m<0 ||m>60 || s<0 ||s>60) return false; return true;}int main( ){ Time t1; t1.set_time( ); T1.show_time( ); return 0;}
要求:
(1)请在原类基础上,在类内增加下列成员函数(将是内联成员函数)
- add_a_sec() //增加1秒钟
- add_a_minute() //增加1分钟
- add_an_hour() //增加1小时
在main()数中,调用新增加的成员函数,以测试扩充后的功能。
(2)再增加三个成员函数,要求在类内声明,类外定义。
- add_seconds(int) //增加n秒钟
- add_minutes(int) //增加n分钟
- add_hours(int) //增加n小时
提示:
- 要考虑增加后超出取值范围的情形;
- 增加n秒后,秒数可能会超过60,调整秒数,并可以调用增加分钟数的成员函数,使时间合法;同理,增加分钟数也有类似问题。
【项目4 - 长方柱类】
[参考解答]
编写基于对象的程序,求3个长方柱(Bulk)的体积。数据成员包括长(length)、宽(width)、高(heigth)、体积,要求设计成员函数实现下面的功能:
(1)由键盘输入3个长方柱的长、宽、高;
(2)计算长方柱的体积(volume)和表面积(areas);
(3)输出这3个长方柱的体积和表面积。
- 2015级C++第5周项目 类和对象
- 第2周项目类和对象--图书馆类
- 第2周项目初见类和对象-旱冰场造价
- 第3周项目类和对象5- 数组作数据成员
- 2013级C++第4周(春)项目——再和对象找感觉【项目1 - 三角形类1】
- 2013级C++第4周(春)项目——再和对象找感觉【项目2 - 三角形类2】
- 第7周项目3-第8章(类和对象的特性)思维导图
- 第7周项目3-第9章(怎样使用类和对象)思维导图
- 2015-第5周项目2-对象作为数据成员
- 第5周项目【项目2 - 对象作为数据成员】
- 2013级C++第4周(春)项目——再和对象找感觉
- 大一下学期第2周项目旱冰场造价(类和对象)
- object-c 类、对象和方法 第三天
- Objective - C基础: 第一天 - 5.对象和类
- 第五天(objective-c)(类和对象)
- 【C++】第10章 对象和类 知识点总结
- C++第8周项目 数组和指针 【项目2-用对象数组操作长方柱类】(复习新版)
- C02-程序设计基础提高班(C++)第9周上机任务-类和对象
- linux-matlab2015b安装步骤
- ViewController的生命周期
- csuoj-1716-Morse
- 选择排序
- javascript匿名函数的运用
- 2015级C++第5周项目 类和对象
- ibatis 的remapResults属性
- Python1————安装
- 一个简单的猜数字游戏
- (转)编码格式----乱码问题
- 亿级Web系统搭建——单机到分布式集群
- allinone—更亲密的接触
- 二分 csu1712 Refract Facts
- 新一代列式存储格式Parquet