欢迎来到天天文库
浏览记录
ID:42459782
大小:71.50 KB
页数:4页
时间:2019-09-15
《18-郑传明-实验三》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验三多态性实验课程名:面向对彖程序设计专业班级:14软件工程(1)班学号:201440450118姓名:郑传明实验吋间:2015.11.20实验地点:K4-206指导教师:邓丹科一、实验目的和要求1.了解两种多态性实现的方法;2.了解虚函数和纯虚函数的概念与应用,理解虚函数在类的继承层次屮的作用,虚函数的引用对程序运行时的影响,能够对使用虚两数的简单程序写岀程序结果;3.掌握抽象类的概念及使用方法。二、实验内容1.编写一个程序,计算Circle(圆形)、Square(正方形)、Rectangle(矩形)、Triangle(三角形)、Tr
2、apezoid(梯形)的面积与周长。(1)设讨一个图形抽象基类Shape类,以及由它派生出5个类Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类;(2)在Shape类屮包括纯虚函数area和girth;(3)分别在Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类屮定义这两个函数,用于计算面积和周长。(4)主函数中要求用基类指针数组,使它的每一个元素指向一个派生类
3、对彖,分别计算Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类对象的面积和周长。解答:(1)源代码:#include〈iostream〉#includeusingnamespacestd;classShape{public:virtualdoublearea()const=0;virtualdoublegirth()const二0;};classCircleipublicShapeprivate:doubler;public:Circ
4、le(doublea){r=a;}virtualdoublearea()const{return3.1415*r*r;}virtualdoublegirth()const{return2*3.1415*r;}};classSquare:publicShape{private:doublea;public:Square(doubleal){a=al;}virtualdoublearea()const{returna*a;}virtualdoublegirth()const{return2*a;}};classRectangle:public
5、Shape{private:doublew;double1;public:Rectangle(doubleal,doublea2){w-al;l=a2;}virtualdoublearea()const{returnw*l;}virtualdoublegirth()const{return2*(w+I);}};classTriangle:publicShape{private:doublea;doubleb;doublec;public:Triangle(doubleal,doublea2,doublea3){a=al;b=a2;c=a3
6、;}virtualdoublearea()const{doubles;s=(a+b+c)/2;returnsqrt(s*(s-a)*(s-b)*(s-c));}virtualdoublegirth()const{returna+b+c;}};classTrapezoid:publicShapeprivate【doubleadoublebdoublecdoubledpublic-Trapezoid(doublealkoublea2koublea3koublea4)rHal-CHa3KHa4二virtu巴doublearea()const亠d
7、oubles八sAa+b+c+d)、2八returnsqrb(s*(sla)*(slb)*(SIC)*(sld))-virtualdoublegirth()cons-(returna+b+c+d二intmain。亠CircleCircle(2・0)八SquareSquare(3・0)八RectangleRectangle(4・p5・0);TriangleTrianglep1"2.2・3・1)-TrapezoidTrapczoidp3"4"5)-Shape*p〔5〕-p〔oH0circle;p〔lv0square八p〔2v$Rectangl
8、e-p〔3vwriangle_p〔4v$TrQPCZ0id_cout〈〈、、@-^"、、〈〈、、=n吕史"、、〈〈p〔sl〉area()〈〈、、2E^"、、〈〈p〔o〕l〉girth()〈
此文档下载收益归作者所有