PHP封装 继承 多态例子
29
2014-01-29
/* 形状 */ abstract class Xz { public $name; // 求面积 abstract function mj(); // 求周长 abstract function zc(); // 表单界面 abstract function view(); // 验证 abstract function yz($arr); } /* 矩形 */ class Jx extends Xz { private $width; private $height; function __construct( $arr=array() ) { if ( !empty($arr) ) { $this->width = $arr['width']; $this->height = $arr['height']; } $this->name = '矩形'; } function mj(){ return $this->width * $this->height; } function zc(){ return ($this->width + $this->height) * 2; } function view(){ $form = ""; echo $form; } function yz( $arr ){ $flag = true; if ( $arr['width'] < 0 ) { echo "{$this->name} 的宽不能小于等于0"; $flag = false; } if ( $arr['height'] < 0 ) { echo "{$this->name} 的高不能小于等于0"; $flag = false; } return $flag; } } /* 三角形 */ class Sjx extends Xz { private $c1; private $c2; private $c3; function __construct( $arr=array() ) { if ( !empty($arr) ) { $this->c1 = $arr['c1']; $this->c2 = $arr['c2']; $this->c3 = $arr['c3']; } $this->name = '三角形'; } // 海伦公式求面积 function mj(){ $p = ($this->c1 + $this->c2 + $this->c3) / 2; return sqrt($p*($p-$this->c1)*($p-$this->c2)*($p-$this->c3)); } function zc(){ return $this->c1 + $this->c2 + $this->c3; } function view(){ $form = ""; echo $form; } function yz( $arr ){ $flag = true; if ( $arr['c1'] < 0 ) { echo "{$this->name} 的 c1 不能小于等于0"; $flag = false; } if ( $arr['c2'] < 0 ) { echo "{$this->name} 的 c2 不能小于等于0"; $flag = false; } if ( $arr['c3'] < 0 ) { echo "{$this->name} 的 c3 不能小于等于0"; $flag = false; } // 两边之和大于第三边 if ( $arr['c1'] + $arr['c2'] < $arr['c3'] || $arr['c1'] + $arr['c3'] < $arr['c2'] || $arr['c3'] + $arr['c2'] < $arr['c1'] ) { echo "两边之和大于第三边"; $flag = false; } return $flag; } } ?>
极简的图形计算器
矩形 三角形 圆形view(); // 用户是否提交了对应图形界面的表单 if ( isset($_POST['submit']) ) { // 验证用户输入的数据 if ( $xz->yz($_POST) ) { // 计算图形的面积、周长 echo $xz->name.' 的面积:'.$xz->mj().'
'; echo $xz->name.' 的周长:'.$xz->zc().'
'; } } } // 若没有单击链接,则提示 else { echo '请选择计算什么图形!'; } ?>
本文由 猫斯基 原创发布。
著作权均归用户本人所有。独家文章转载,请联系本站管理员。获得授权后,须注明本文地址! 本文地址:https://www.maosiji.com/2573.html