通过自带部分result.class.php分流,由于这三个类继承shape这个类,让我们来看看,面向对象的继承。

shape.class.shape档

  1. <?php
  2. abstract class shape{
  3. public $shapeName;
  4. abstract function area();
  5. abstract function perimeter();
  6.  
  7. /*
  8. * 全部的实体类都要继承shape以便于统一方法和属性
  9. * 验证 validate方法一致
  10. * */
  11. protected function validate($value,$message="形状"){
  12. if($value == "" ||!is_numeric($value)||$value < 0){
  13. echo '<font color="red">'.$message.'必须为非负值的数>字,而且不能为空</font><br>';
  14. return false;
  15. } else{
  16. return true;
  17. }
  18. }
  19.  
  20. }
  21.  
  22. ?>

这是一个抽象类,优点就在于,第一个,定义了统一的属性和方法。这样在result里面就能够统一的调用$shapename属性和area()和perimeter()。

同事还能够构造公用的方法。比方验证方法validate。

下面是详细每一个类的实现

rect.class.php实现rect矩形类

  1. <?php
  2. class Rect extends Shape {
  3. private $width = 0;
  4. private $height = 0;
  5. function __construct() {
  6. $this->shapeName = "矩形";
  7.  
  8. if ($this->validate ( $_POST ["width"], '矩形的宽度' ) & $this->validate ( $_POST ["height"], '矩形的高度' ))
  9.  
  10. {
  11.  
  12. $this->width = $_POST ["width"];
  13.  
  14. $this->height = $_POST ["height"];
  15. } else {
  16. exit ();
  17. }
  18.  
  19. $this->width = $_POST ["width"];
  20.  
  21. $this->height = $_POST ["height"];
  22. }
  23. function area() {
  24. return $this->width * $this->height;
  25. }
  26. function perimeter() {
  27. return 2 * ($this->width + $this->height);
  28. }
  29. }
  30.  
  31. ?
  32.  
  33. >

triangle.class.php实现triangle三角形类

  1. <?
  2.  
  3. php
  4. class Triangle extends Shape{
  5. private $side1=0;
  6. private $side2=0;
  7. private $side3=0;
  8.  
  9. function __construct(){
  10. $this->shapeName="三角形";
  11. if($this->validate($_POST['side1'],'三角形的第一边')&&
  12. $this->validate($_POST['side2'],'三角形的第一边')
  13. &&$this->validate($_POST['side3'],'三角形的第一边')){
  14. $this->side1=$_POST["side1"];
  15. $this->side2=$_POST["side2"];
  16. $this->side3=$_POST["side3"];
  17. }
  18. if(!$this->validateSum()){
  19. echo '<font color="red">三角形的两边之和必须大于第三边</font>';
  20. exit;
  21. }
  22. }
  23. //海伦公式
  24. function area(){
  25. $s=($this->side1+$this->side2+$this->side3)/2;
  26. return sqrt( $s*($s-$this->side1)*($s-$this->side2)*($s-$this->side3));
  27.  
  28. }
  29. function perimeter(){
  30. return $this->side1+$this->side2+$this->side3;
  31. }
  32.  
  33. private function validateSum(){
  34. $condition1=($this->side1+$this->side2) > $this->side3;
  35. $condition2=($this->side1+$this->side3) > $this->side2;
  36. $condition3=($this->side2+$this->side3) > $this->side1;
  37. if($condition1 && $condition2 && $condition3){
  38. return true;
  39. } else{return false;}
  40. }
  41. }
  42. ?>

circle.class.php实现circle圆类

  1. <?php
  2. class Circle extends Shape{
  3. private $radius=0;
  4.  
  5. function __construct(){
  6. $this->shapeName="圆形";
  7. if($this->validate($_POST['radius'],'圆的半径')){
  8. $this->radius.$_POST["radius"];
  9. }else{exit;}
  10. $this->radius=$_POST["radius"];
  11. }
  12. function area(){
  13. return pi()*$this->radius*$this->radius;
  14. }
  15. function perimeter(){
  16. return 2*pi()*$this->radius;
  17. }
  18. }
  19.  
  20. ?>

全部的类都继承了shape类,实现里面的方法和为属性赋值。用构造方法和详细不用的计算方法实现每一个类不同的多态性,同一时候对外部调用人来说,都是调用area()和perimter()方法。此为封装。都封装成在方法内部类可以。

版权声明:本文博主原创文章,博客,未经同意不得转载。

php:的图形计算器的面向对象的版本武器2的更多相关文章

  1. php:兄弟连之面向对象版图形计算器1

    曾经看细说PHP的时候就想做这个,可是一直没什么时间,这次总算忙里偷闲搞了代码量比較多的project. 首先,文档结构,都在一个文件夹下就好了,我的就例如以下. 一開始,进入index.php文件. ...

  2. PHP.11-PHP实例(二)-面向对象实例(图形计算器)

    面向对象实例(图形计算器) [PHP语法详解] 1.实现外观 #不同的动作,输出不同的表单 ###关于PHP中,无法使用localhost访问.php文件[http://www.360doc.com/ ...

  3. PHP学习笔记06——面向对象版图形计算器

    index.php 用于显示页面 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h ...

  4. PHP图形计算器(计算三角形矩形周长面积)

    运用PHP面向对象的知识设计一个图形计算器,同时也运用到了抽象类知识,这个计算器可以计算三角形的周长和面积以及矩形的周长和面积.本图形计算器有4个页面:1.PHP图形计算器主页index.php;   ...

  5. php实现图形计算器

    存档: index.php <html> <head> <title>图形计算器开发</title> <meta http-equiv=" ...

  6. [图形计算器]Desmos

    一.图形计算器 var elt = document.getElementById('calculator'); var calculator = Desmos.GraphingCalculator( ...

  7. 英特尔® 图形性能分析器 2019 R1 版本

    了解并下载全新英特尔® 图形性能分析器 2019 R1 版本.新版本新增了 DX11 和 Vulkan 多帧流捕获模式,可以在“帧和图形跟踪分析器”中分析 Vulkan 应用.此外,帧分析器还添加了 ...

  8. 图形计算器(geogebra[5.0.278.0])使用QQ浏览器打开下载

    点击这里下载Geogebra图形计算器

  9. PHP面向对象实例(图形计算器)

    效果:

随机推荐

  1. Windows7在自由的虚拟机(微软官方虚拟机)

    Windows7在自由的虚拟机(微软官方虚拟机) 前言: 不是说windows7自带的虚拟机最好用,但他的正式版.免费.只是希望你能windows7用户.它将能够自由使用: 还是Vmware. 微软为 ...

  2. Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程

    原文:Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程 Red Gate系列之三 SQL S ...

  3. [原创] 使用rpi + crontab + git 定时向bitbucket 推送 照片

    #前提条件,你得有一个bitbucket的帐户 1.定时启动脚本代码 使用的是crontab Cronfile 内容如下: 此文件的意思是,每隔10分钟,就运行一次 /home/pi/Rpi_uplo ...

  4. JTree demo

    JFrame居中方法一:   setLocationRelativeTo(null); 注意:必须在整个frame初始化完成后再加上此语句,否则将显示在屏幕右下角 方法二: private Dimen ...

  5. mybaits使用存储过程

    如何使用Mybaits调用数据库存储过程,按以下顺序Oracle案例库: 1.在数据库中创建以下存储过程: create or replace procedure pro_hello(p_result ...

  6. 离PACKET_INp获取信息acket data

         于Floodlight模块假设要packet in消息,就对对应的消息类型进行监听就可以.然后在receive方法中就能够操纵这个上传上来的packet_in.      关键代码:   E ...

  7. Appium0.18.x迁移到Appium1.x须知事项(灰常实用,解答了本人几个疑问)

    英文原版:https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/migrating-to-1-0.md Migr ...

  8. OCP-1Z0-051-题目解析-第14题

    14. Using the CUSTOMERS table,  you need to generate a report that shows 50% of each credit        a ...

  9. poj 4088:Set操作

    poj 4088:集合运算 题目:(至于4089.那个问题做过.使用归并思想,所以没有写) 描写叙述 小张须要从一批数量庞大的正整数中挑选出第k小的数.由于数据量太庞大,挑选起来非常费劲,希望你能编程 ...

  10. 讲座:采用Store检查邮件(1)

    讲座:采用Store检查邮件(1) 一.邮件接收的体系结构 JavaMail API中定义了一个java.mail.Store类,用于运行邮件的接收任务,该类的实例对象封装了某种邮件接收协议的底层实施 ...