文件:triangle.class.php
<?php
/**
Project: 面向对象版图形计算器
file: triangle.class.php
声明了一个三角形子类,根据三角形的特点实现了形状抽象类中的周长和面积方法
package:shape
*/
class Triangle extends Shape {
private $side1 = 0; //声明三角形第一个边的成员属性
private $side2 = 0; //声明三角形第二个边的成员属性
private $side3 = 0; //声明三角形第三个边的成员属性
/* 三角形的构造方法,用表单$_POST中接收的三边值初使化三角形对象 */
function __construct() {
$this->shapeName = "三角形"; //为形状命名
//通过从shape中继承的方法validate(),对三角形的第一边进行验证
if($this->validate($_POST["side1"], "第一个边") &
$this->validate($_POST["side2"], "第二个边") &
$this->validate($_POST["side3"], "第三个边")) {
//通过本类内部的私有方法validateSum(),验证三角形的两边之和是否大于第三边
if($this->validateSum($_POST["side1"], $_POST["side2"], $_POST["side3"])) {
$this->side1 = $_POST["side1"];
$this->side2 = $_POST["side2"];
$this->side3 = $_POST["side3"];
}else {
echo '<font color="red" >三角形的两边之和要大于第三边</font><br>';
}
}
}
/* 按三角形面积的计算公式(海伦公式),实现抽象类shape中的抽象方法area() */
function area() {
$s = ($this->side1+$this->side2+$this->side3)/2;
//返回三角形的面积
return sqrt( $s*($s - $this->side1)*($s - $this->side2)*($s - $this->side3) );
}
/* 按三角形周长的计算公式,实现抽象类shape中的抽象方法perimeter() */
function perimeter() {
return $this->side1+$this->side2+$this->side3; //返回三角形的周长
}
/* 本类内部声明一个私有方法validateSum(),用于验证三角形的两边之和是否大于第三边 */
private function validateSum($s1, $s2, $s3){
//如果三角形任意两个边的和大于第三个边返回true, 否则返回false
if( (($s1 + $s2) > $s3) && (($s1 + $s3) > $s2) && (($s2 + $s3) > $s1) ) {
return true;
}else{
return false;
}
}
}
|