php简单多态,PHP 对象 多态性 简单图形计算器

主程序页面 test.php页面

简单的图形计算器

简单的图形计算器

矩形   ||   

三角形


//屏蔽E_NOTICE提示

error_reporting(E_ALL & ~E_NOTICE);

//设置自动加载这个程序需要的类文件

function __autoload($classname){

include $classname.'.class.php';

}

//判断用户是否单击一个形状链接

if(!empty($_GET['action'])){

//第一步:创建形状的对象

$classname = ucfirst($_GET['action']);

$shape = new $classname($_POST);

//第二步:调用形状的对象中的图形界面

$shape->view();

//第三步:用户是否提交了对应的图形界面的表单

if(isset($_POST['dosubmit'])){

//第四步:查看用户输入的数据是否合法,不合法则提示

if($shape->validate($_POST)){

//第五步:计算图形的面积和周长

echo $shape->name.'的面积为:'.$shape->area().'
';

echo $shape->name.'的周长为:'.$shape->circumference().'
';

}

}

}else{//如果用户没有单击则默认访问主程序

echo '请选择一个要计算的图形';

}

?>

形状抽象类Shape.class.php页面

//形状抽象类

abstract class Shape{

public  $name;

//面积

abstract function area();

//周长

abstract function circumference();

//图形界面

abstract function view();

//形状验证方法

abstract function validate($arr);

}

矩形类Rectangle.class.php页面

//矩形类

class Rectangle extends Shape{

private $width;

private $height;

function __construct($arr=array()){

if(!empty($arr)){

$this->width   =  $arr['width'];

$this->height  =  $arr['height'];

}

$this->name   =  '矩形';

}

function area(){

return $this->width*$this->height;

}

//周长

function circumference(){

return 2*($this->width+$this->height);

}

//图形界面

function view(){

$form =  '

';

$form .= $this->name.'的宽:
';

$form .= $this->name.'的高:
';

$form .= '
';

$form .= '

';

echo $form;

}

//形状验证方法

function validate($arr){

$flag = true;

if($arr['width']<0 || !is_numeric($arr['width'])){

echo $this->name.'的宽必须是大于0的整数
';

$flag = false;

}

if($arr['height']<0 || !is_numeric($arr['height'])){

echo $this->name.'的高必须是大于0的整数
';

$flag = false;

}

return $flag;

}}

三角形类Triangle.class.php页面

//三角形类

class Triangle extends Shape{

private $edge1;

private $edge2;

private $edge3;

function __construct($arr=array()){

if(!empty($arr)){

$this->edge1   =  $arr['edge1'];

$this->edge2   =  $arr['edge2'];

$this->edge3   =  $arr['edge3'];

}

$this->name   =  '三角形';

}

function area(){

$p =($this->edge1+$this->edge2+$this->edge3)/2;

return sqrt($p*($p-$this->edge1)*($p-$this->edge2)*($p-$this->edge3));

}

//周长

function circumference(){

return ($this->edge1+$this->edge2+$this->edge3);

}

//图形界面

function view(){

$form =  '

';

$form .= $this->name.'的第一个边:
';

$form .= $this->name.'的第二个边:
';

$form .= $this->name.'的第三个边:
';

$form .= '
';

$form .= '

';

echo $form;

}

//形状验证方法

function validate($arr){

$flag = true;

if($arr['edge1']<0 || !is_numeric($arr['edge1'])){

echo $this->name.'的第一边必须是大于0的整数
';

$flag = false;

}

if($arr['edge2']<0 || !is_numeric($arr['edge2'])){

echo $this->name.'的第二边必须是大于0的整数
';

$flag = false;

}

if($arr['edge3']<0 || !is_numeric($arr['edge3'])){

echo $this->name.'的第三边必须是大于0的整数
';

$flag = false;

}

if(($arr['edge1']+$arr['edge2']

echo '三角形定义必须两边之和大于第三边
';

$flag = false;

}

return $flag;

}

}

浏览器 矩形页面

AAffA0nNPuCLAAAAAElFTkSuQmCC

浏览器 三角形页面

AAffA0nNPuCLAAAAAElFTkSuQmCC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值