您的位置:首页 > 编程语言 > PHP开发

php:的图形计算器的面向对象的版本武器2

2015-09-17 11:48 609 查看
通过自带部分result.class.php分流,由于这三个类继承shape这个类,让我们来看看,面向对象的继承。

shape.class.shape档

<?php
abstract class shape{
public $shapeName;
abstract function area();
abstract function perimeter();

/*
* 全部的实体类都要继承shape以便于统一方法和属性
* 验证 validate方法一致
*  */
protected function validate($value,$message="形状"){
if($value == "" ||!is_numeric($value)||$value < 0){
echo '<font color="red">'.$message.'必须为非负值的数>字,而且不能为空</font><br>';
return false;
}              else{
return true;
}
}

}

?>


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

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

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

rect.class.php实现rect矩形类

<?php
class Rect extends Shape {
private $width = 0;
private $height = 0;
function __construct() {
$this->shapeName = "矩形";

if ($this->validate ( $_POST ["width"], '矩形的宽度' ) & $this->validate ( $_POST ["height"], '矩形的高度' ))

{

$this->width = $_POST ["width"];

$this->height = $_POST ["height"];
} else {
exit ();
}

$this->width = $_POST ["width"];

$this->height = $_POST ["height"];
}
function area() {
return $this->width * $this->height;
}
function perimeter() {
return 2 * ($this->width + $this->height);
}
}

?

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

<?

php
class Triangle extends Shape{
private $side1=0;
private $side2=0;
private $side3=0;

function __construct(){
$this->shapeName="三角形";
if($this->validate($_POST['side1'],'三角形的第一边')&&
$this->validate($_POST['side2'],'三角形的第一边')
&&$this->validate($_POST['side3'],'三角形的第一边')){
$this->side1=$_POST["side1"];
$this->side2=$_POST["side2"];
$this->side3=$_POST["side3"];
}
if(!$this->validateSum()){
echo '<font color="red">三角形的两边之和必须大于第三边</font>';
exit;
}
}
//海伦公式
function area(){
$s=($this->side1+$this->side2+$this->side3)/2;
return  sqrt( $s*($s-$this->side1)*($s-$this->side2)*($s-$this->side3));

}
function perimeter(){
return $this->side1+$this->side2+$this->side3;
}

private function validateSum(){
$condition1=($this->side1+$this->side2) > $this->side3;
$condition2=($this->side1+$this->side3) > $this->side2;
$condition3=($this->side2+$this->side3) > $this->side1;
if($condition1 && $condition2 && $condition3){
return true;
} else{return false;}
}
}
?>
circle.class.php实现circle圆类

<?php
class Circle extends Shape{
private $radius=0;

function __construct(){
$this->shapeName="圆形";
if($this->validate($_POST['radius'],'圆的半径')){
$this->radius.$_POST["radius"];
}else{exit;}
$this->radius=$_POST["radius"];
}
function area(){
return pi()*$this->radius*$this->radius;
}
function perimeter(){
return 2*pi()*$this->radius;
}
}

?>
全部的类都继承了shape类,实现里面的方法和为属性赋值。用构造方法和详细不用的计算方法实现每一个类不同的多态性,同一时候对外部调用人来说,都是调用area()和perimter()方法。此为封装。都封装成在方法内部类可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: