6编程实例.ppt
《6编程实例.ppt》由会员分享,可在线阅读,更多相关《6编程实例.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6 6章面向对象编程实例章面向对象编程实例本章设计两个程序:求解一元二次方程的根和出圈游戏。本章设计两个程序:求解一元二次方程的根和出圈游戏。通过这两个程序,目的是练习如何使用面向对象的思想考通过这两个程序,目的是练习如何使用面向对象的思想考虑问题,如何首先抽象出求解问题的类,然后构造出一个虑问题,如何首先抽象出求解问题的类,然后构造出一个对象,让这个对象来解决实际问题。对象,让这个对象来解决实际问题。主要内容主要内容6.1 求解一元二次方程求解一元二次方程 6.1.1 设计代表方程的类设计代表方程的类 6.1.2 设计成员函数设计成员函数 6.1.2 设计成员函数设计成员函数6.2 出圈
2、游戏出圈游戏 6.2.1 设计思想设计思想 6.2.2 设计头文件设计头文件 6.2.3 实现实现SeqList.cpp文件文件 6.2.4 文件文件count.cpp 6.2.5 程序运行示范程序运行示范 6.2.6 组建工程组建工程 6.1 6.1 求解一元二次方程求解一元二次方程首先要从解一元二次方程出发,抽象一个代表一元二次方首先要从解一元二次方程出发,抽象一个代表一元二次方程的类。为了使用这个类,必需根据要解决的问题,为这程的类。为了使用这个类,必需根据要解决的问题,为这个类设计合适的数据成员和成员函数。个类设计合适的数据成员和成员函数。6.1.1 6.1.1 设计代表方程的类设计代
3、表方程的类因为目的是为了编制一个求方程因为目的是为了编制一个求方程ax2+bx+c=0的根的程的根的程序,所以首先要为这个类起个名字。假设这个类的名序,所以首先要为这个类起个名字。假设这个类的名字为字为FindRoot,至少需要将方程的系数作为至少需要将方程的系数作为FindRoot类的属性。可以将系数设计成类的属性。可以将系数设计成float型。型。为了方便,除了将方程系数设为属性之外,还将方程为了方便,除了将方程系数设为属性之外,还将方程的根的根x1和和x2,以及用来作为判定条件的以及用来作为判定条件的d(d=b*b-4*a*c),均设计成类的属性,并且将方程的两个根设均设计成类的属性,并
4、且将方程的两个根设为为double型,将型,将d设为设为float型。型。成员函数成员函数Find用来求方程的根,用来求方程的根,Display函数则用来输函数则用来输出结果。因为它们都需要用到属性出结果。因为它们都需要用到属性d,所以可以在构所以可以在构造函数中求出造函数中求出d的值,其他成员函数则可以直接使用的值,其他成员函数则可以直接使用这个属性,不必再去计算这个属性,不必再去计算d的值。的值。图图6.1是其类图。假设一个对象为是其类图。假设一个对象为obj,图图6.2是一个典型的是一个典型的obj的对象图,图中表明该方程为的对象图,图中表明该方程为x2-3x+2=0,d=1,x1=2,
5、x2=1。求求d需要使用库函数需要使用库函数sqrt,sqrt在头文件在头文件math.h中定义,只中定义,只要包含它既可。要包含它既可。FindRoota:floatb:floatc:floatd:float x1:double x2:doubleFindRoot:FindRootFind:void Display:voidobj:FindRoota=1b=-3c=2d=1x1=2x2=1FindRootFindDisplay图图6.1类图示意图类图示意图 图图6.2 obj对象图对象图6.1.2 6.1.2 设计成员函数设计成员函数1.1.设计构造函数设计构造函数FindRoot:Find
6、Root(float x,float y,float z)a=x;b=y;c=z;d=b*b-4*a*c;2.设计求根成员函数设计求根成员函数Find可以根据可以根据d大于、等于或小于零来决定求解方法。大于、等于或小于零来决定求解方法。if(d 0)/有两个不相等的实数解有两个不相等的实数解 else if(d=0)/有两个相等的实数解有两个相等的实数解 else /有两个不相等的虚数解有两个不相等的虚数解 一旦满足条件,应该马上退出程序。程序中使用一旦满足条件,应该马上退出程序。程序中使用“return;”语句实现。语句实现。void FindRoot:Find()if(d 0)x1=(-b
7、+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);return;else if(d=0)x1=x2=(-b)/(2*a);return;else x1=(-b)/(2*a);x2=sqrt(-d)/(2*a);3.3.输出结果成员函数输出结果成员函数DisplayDisplay也根据也根据d d的情况显示不同结果,并使用的情况显示不同结果,并使用“return;return;”语句直语句直接退出。接退出。void FindRoot:Display()if(d 0)coutX1=x1nX2=x2endl;return;else if(d=0)coutx1=x2=x1endl
8、;return;else coutX1=x1+x2iendl;coutX2=x1-x2iendl;6.1.3 6.1.3 编程实现编程实现1.1.设计工程和文件设计工程和文件具体实现方法如下:具体实现方法如下:设计设计一个名为一个名为equation的工程。的工程。为工程设计为工程设计一个头文件一个头文件equation.h,声明声明class FindRoot 类并包含需要的头文件。类并包含需要的头文件。为工程设计为工程设计equation.cpp文件,在这个文件中实现文件,在这个文件中实现 FindRoot类。类。在在equation.cpp文件文件中包含头文件中包含头文件equation
9、.h。设计主函数对方程求解。设计主函数对方程求解。主函数求解思想如下:主函数求解思想如下:首先使用首先使用接受的系数创建该类的一个对象接受的系数创建该类的一个对象obj。即:即::FindRoot obj(a,b,c,);构造函数构造函数自动计算自动计算d值。值。对象对象obj调用调用成员函数成员函数Find求出方程的根。即:求出方程的根。即:obj.Find();将求出的根存入属性中。将求出的根存入属性中。对象对象obj调用调用成员函数成员函数Display输出自己的根。即:输出自己的根。即:obj.Display();下面给出完整的程序。下面给出完整的程序。2.头文件头文件/equatio
10、n.h#if!defined(EQUATION_H)#define EQUATION_H#include#include using namespace std;/*/*声明声明FindRoot类类 */*class FindRoot private:float a,b,c,d;double x1,x2;public:FindRoot(float x,float y,float z);void Find();void Display();#endif3.3.实现类实现类在在equation.cpp文件中实现类的成员函数。文件中实现类的成员函数。/equation.cpp#include equ
11、ation.h/*/*实现实现 FindRoot类类 */*/构造函数构造函数FindRoot:FindRoot(float x,float y,float z)a=x;b=y;c=z;d=b*b-4*a*c;/实现成员函数实现成员函数Find/实现成员函数实现成员函数Findvoid FindRoot:Find()if(d 0)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);return;else if(d=0)x1=x2=(-b)/(2*a);return;else x1=(-b)/(2*a);x2=sqrt(-d)/(2*a);/实现成员函数实现成员函
12、数Displayvoid FindRoot:Display()if(d 0)coutX1=x1nX2=x2endl;return;else if(d=0)coutx1=x2=x1endl;return;else coutX1=x1+x2iendl;coutX2=x1-x2iendl;4.4.主函数主函数在在equation.cpp文件中编写主函数。为了解方程,需要在文件中编写主函数。为了解方程,需要在主函数中准备一元二次方程的系数主函数中准备一元二次方程的系数a、b、c,然后使用然后使用这个系数作为构造函数的参数创建一个对象这个系数作为构造函数的参数创建一个对象obj。obj已经已经具有解方程
13、的必要属性:具有解方程的必要属性:a、b、c、d。obj使用自己的成使用自己的成员函数员函数Find求解,利用成员函数求解,利用成员函数Display输出计算结果。输出计算结果。为了能连续求解,使用为了能连续求解,使用for循环语句。如果要停止计算,循环语句。如果要停止计算,使系数使系数a=0即可。即可。void main()float a,b,c;cout“这是一个求方程这是一个求方程ax2+bx+c=0的根的程序。的根的程序。”endl;for(;)couta;if(a=0)/系数系数a为零,则退出计算程序为零,则退出计算程序 getchar();/为了消除回车的影响为了消除回车的影响 r
14、eturn;coutb;coutc;FindRoot obj(a,b,c);/建立对象建立对象obj obj.Find();/求解求解 obj.Display();/输出计算结果输出计算结果 6.1.4 6.1.4 运行示范运行示范程序编译通过,运行示范如下:程序编译通过,运行示范如下:这是一个求方程这是一个求方程ax2+bx+c=0ax2+bx+c=0的根的程序。的根的程序。输入方程系数输入方程系数a:1a:1输入方程系数输入方程系数b:-2b:-2输入方程系数输入方程系数c:1c:1x1=x2=1x1=x2=1输入方程系数输入方程系数a:1a:1输入方程系数输入方程系数b:-3b:-3输入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 实例
限制150内