第十三周 任务三

我就是我 2022-06-12 09:47 338阅读 0赞
  1. /* (程序头部注释开始)
  2. * 程序的版权和版本声明部分
  3. * Copyright (c) 2012, 烟台大学计算机学院学生
  4. * All rights reserved.
  5. * 文件名称: 抽象类
  6. * 作 者: 薛广晨
  7. * 完成日期: 2012 年 5 月 11 日
  8. * 版 本 号: x1.0
  9. * 对任务及求解方法的描述部分
  10. * 输入描述: 使用抽象类
  11. * 问题描述: 【任务3】写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形)。
  12. 用如下的mian()函数,求出定义的几个几何体的面积和。
  13. * 程序输出: ......
  14. * 程序头部的注释结束
  15. */
  16. #include <iostream>
  17. using namespace std;
  18. class Shape
  19. {
  20. public:
  21. virtual float area() const = 0;
  22. };
  23. class Circle:public Shape
  24. {
  25. public:
  26. Circle(float r):radii(r){};
  27. virtual float area() const;
  28. private:
  29. float radii;
  30. };
  31. float Circle::area() const
  32. {
  33. return 3.14159 * radii * radii;
  34. }
  35. class Rectangle:public Shape
  36. {
  37. public:
  38. Rectangle(float l, float w):length(l), wide(w){}
  39. virtual float area() const;
  40. private:
  41. float length;
  42. float wide;
  43. };
  44. float Rectangle::area() const
  45. {
  46. return length * wide;
  47. }
  48. class Triangle:public Shape
  49. {
  50. public:
  51. Triangle(float l, float h):length(l), height(h){}
  52. virtual float area() const;
  53. private:
  54. float length;
  55. float height;
  56. };
  57. float Triangle::area() const
  58. {
  59. return length * height / 2;
  60. }
  61. int main()
  62. {
  63. Circle c1(12.6), c2(4.9); //建立Circle类对象c1,c2,参数为圆半径
  64. Rectangle r1(4.5, 8.4), r2(5.0, 2.5); //建立Rectangle类对象r1,r2,参数为矩形长、宽
  65. Triangle t1(4.5, 8.4), t2(3.4, 2.8); //建立Triangle类对象t1,t2,参数为三角形底边长与高
  66. Shape *pt[6]={&c1, &c2, &r1, &r2, &t1, &t2}; //定义基类指针数组pt,各元素指向一个派生类对象
  67. double areas = 0.0; //areas为总面积
  68. for(int i = 0; i < 6; i++)
  69. {
  70. areas = areas + pt[i]->area();
  71. }
  72. cout << "totol of all areas=" << areas << endl; //输出总面积
  73. system("pause");
  74. return 0;
  75. }

1336733355_8347.JPG
上机感言:使用虚积类提高了扩展性,当调用使更加简单方便

发表评论

表情:
评论列表 (有 0 条评论,338人围观)

还没有评论,来说两句吧...

相关阅读

    相关 任务

    要求:请在原类基础上,增加下列成员函数,要求前三个设计成内置函数,在main()数中增加适当的调用以展示扩充类定义后的功能(最好能一次运行)。 add_a_s