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 = "
"; $form .= $this->name.' 的宽:
'; $form .= $this->name.' 的高:
'; $form .= '
'; $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 = "
"; $form .= $this->name.' 的c1:
'; $form .= $this->name.' 的c2:
'; $form .= $this->name.' 的c3:
'; $form .= '
'; $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