资讯专栏INFORMATION COLUMN

面向对象的实例应用:图形计算器

tangr206 / 2287人阅读

摘要:使用动态页面实现图形计算器,可以计算给定图形的周长和面积可以使用接口或抽象类作为规范,再写各子类的多态动态页面如下图形计算器矩形三角形圆形的周长为的面积为请选择图形接口与各子类如下三角形三角形第一条边为三角形第二条边

1.使用动态页面实现图形计算器,可以计算给定图形的周长和面积
2.可以使用接口或抽象类作为规范,再写各子类的多态
3.动态页面如下:

</>复制代码

  1. 图形计算器

  2. 矩形||
  3. 三角形||
  4. 圆形

  5. input();
  6. if(!empty($_POST)){
  7. if($s->identify($_POST)){
  8. echo $s->name."的周长为:".$s->getPerimeter()."
    ";
  9. echo $s->name."的面积为:".$s->getArea()."
    ";
  10. }
  11. }
  12. }else{
  13. echo "请选择图形!
    ";
  14. }
  15. ?>

4.接口与各子类如下:

</>复制代码

  1. line1=$arr["line1"];
  2. $this->line2=$arr["line2"];
  3. $this->line3=$arr["line3"];
  4. $this->name="三角形";
  5. }
  6. }
  7. function input(){
  8. if(!empty($_POST)){
  9. $line1=$_POST["line1"];
  10. $line2=$_POST["line2"];
  11. $line3=$_POST["line3"];
  12. }else{
  13. $line1=null;
  14. $line2=null;
  15. $line3=null;
  16. }
  17. $form="
    ";
  18. $form.="
    ";
  19. $form.="
    ";
  20. $form.="
    ";
  21. $form.="
    ";
  22. $form.="";
  23. echo $form;
  24. }
  25. function getPerimeter(){
  26. return $this->line1+$this->line2+$this->line3;
  27. }
  28. function getArea(){
  29. $p=$this->getPerimeter()/2;
  30. return sqrt($p*($p-$this->line1)*($p-$this->line2)*($p-$this->line3));
  31. }
  32. function identify($arr){
  33. $line1=$arr["line1"];
  34. $line2=$arr["line2"];
  35. $line3=$arr["line3"];
  36. $identifier=true;
  37. if($line1<0){
  38. echo "第一条边小于0
    ";
  39. $identifier=false;
  40. }
  41. if($line2<0){
  42. echo "第二条边小于0
    ";
  43. $identifier=false;
  44. }
  45. if($line3<0){
  46. echo "第三条边小于0
    ";
  47. $identifier=false;
  48. }
  49. if(($line1+$line2<$line3)||($line1+$line3<$line2)||($line2+$line3<$line1)){
  50. $identifier=false;
  51. echo "两边之和小于第三边
    ";
  52. }
  53. return $identifier;
  54. }
  55. }
  56. class Cycle implements Calculate {
  57. private $radius;
  58. public $name;
  59. function __construct($arr){
  60. if(!empty($arr)){
  61. $this->radius=$arr["radius"];
  62. $this->name="圆形";
  63. }
  64. }
  65. function input(){
  66. $form="
    ";
  67. $form.="
    ";
  68. $form.="
    ";
  69. $form.="";
  70. echo $form;
  71. }
  72. function getPerimeter(){
  73. return 2*pi()*$this->radius;
  74. }
  75. function getArea(){
  76. return pi()*$this->radius*$this->radius;
  77. }
  78. function identify($arr){
  79. $identifier=true;
  80. if($arr["radius"]<0){
  81. echo "半径不能小于0!
    ";
  82. $identifier=false;
  83. }
  84. return $identifier;
  85. }
  86. }
  87. class Rect implements Calculate {
  88. private $height;
  89. private $width;
  90. public $name;
  91. function __construct($arr){
  92. if(!empty($arr)){
  93. $this->width=$arr["width"];
  94. $this->height=$arr["height"];
  95. $this->name="矩形";
  96. }
  97. }
  98. function input(){
  99. $form="
    ";
  100. $form.="
    ";
  101. $form.="
    ";
  102. $form.="
    ";
  103. $form.="";
  104. echo $form;
  105. }
  106. function getPerimeter(){
  107. return 2*($this->width+$this->height);
  108. }
  109. function getArea(){
  110. return $this->width*$this->height;
  111. }
  112. function identify($arr){
  113. $identifier=true;
  114. if($arr["width"]<0){
  115. echo "宽度不能小于0!
    ";
  116. $identifier=false;
  117. }
  118. if($arr["height"]<0){
  119. echo "高度不能小于0!
    ";
  120. $identifier=false;
  121. }
  122. return $identifier;
  123. }
  124. }
  125. ?>

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25602.html

相关文章

  • S.O.L.I.D: PHP 面向对象设计五个基准原则

    摘要:是首个个面向对象设计准则的首字母缩写,这些准则是由提出的他更为人所熟知的名字是。单一功能原则开闭原则里氏替换原则接口隔离原则依赖反转原则接下来让我们看看每个原则,来了解为什么可以帮助我们成为更好的开发人员。 showImg(https://segmentfault.com/img/remote/1460000019313380?w=1680&h=656); S.O.L.I.D 是 首个...

    JayChen 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    李昌杰 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    Lyux 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    AaronYuan 评论0 收藏0
  • [零基础学python]关于类初步认识

    摘要:反对者在某些领域对此予以否认。下面再引用一段来自维基百科中关于的历史。类的更严格的定义是由某种特定的元数据所组成的内聚的包。类还可以有运行时表示形式元对象,它为操作与类相关的元数据提供了运行时支持。 在开始部分,请看官非常非常耐心地阅读下面几个枯燥的术语解释,本来这不符合本教程的风格,但是,请看官谅解,因为列位将来一定要阅读枯燥的东西的。这些枯燥的属于解释,均来自维基百科。 1、问题...

    王岩威 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<