18-郑传明-实验三.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
18-郑传明-实验三

实验三 多态性 实验课程名:面向对象程序设计 专业班级: 14软件工程(1)班 学号:201440450118 姓名:郑传明 实验时间: 2015.11.20 实验地点: K4-206 指导教师: 邓丹君 一、实验目的和要求 1.了解两种多态性实现的方法; 2.了解虚函数和纯虚函数的概念与应用,理解虚函数在类的继承层次中的作用,虚函数的引用对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果; 3.掌握抽象类的概念及使用方法。 二、实验内容 1.编写一个程序,计算Circle(圆形)、Square(正方形)、Rectangle(矩形)、Triangle(三角形)、Trapezoid(梯形)的面积与周长。 (1)设计一个图形抽象基类Shape类,以及由它派生出5个类Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类; (2)在Shape类中包括纯虚函数area和girth; (3)分别在Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类中定义这两个函数,用于计算面积和周长。 (4)主函数中要求用基类指针数组,使它的每一个元素指向一个派生类对象,分别计算Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类对象的面积和周长。 解答: (1)源代码: #includeiostream #includemath.h using namespace std; class Shape { public: virtual double area() const=0; virtual double girth() const=0; }; class Circle:public Shape { private: double r; public: Circle(double a){r=a;} virtual double area() const {return 3.1415*r*r;} virtual double girth() const {return 2*3.1415*r;} }; class Square:public Shape { private: double a; public: Square(double a1){a=a1;} virtual double area() const{return a*a;} virtual double girth() const{return 2*a;} }; class Rectangle:public Shape { private: double w; double l; public: Rectangle(double a1,double a2){w=a1;l=a2;} virtual double area() const {return w*l;} virtual double girth() const {return 2*(w+l);} }; class Triangle:public Shape { private: double a; double b; double c; public: Triangle(double a1,double a2,double a3){a=a1;b=a2;c=a3;} virtual double area() const { double s; s=(a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)); } virtual double girth() const {return a+b+c;} }; class Trapezoid:public Shape { private: double a; double b; double c; double d; public: Trapezoid(double a1,double a2,double a3,double a4){a=a1;b=a2;c=a3;d=a4;} virtual double area() const { double s; s=(a+b+c+d)/2; return sqrt(s*(s-a)*(s-b)*(s-c)*(s-d)); } virtual double girth() const {return a+b+c

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档