[1]图形类

[2]主界面

[3]矩形类

[4]三角形类

前面的话

  本文用面向对象的技术来实现一个简单的图形面积计算器

 

图形类

//rect.class.php

abstract class Shape{

public $name;

abstract function area();

abstract function view();

abstract function test($arr);

}

?>

 

主界面

//index.php

Document

图形计算器

error_reporting(E_ALL & ~E_NOTICE);

function __autoload($classname){

include strtolower($classname).".class.php";

}

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

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

$shape=new $classname($_POST);

$shape->view();

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

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

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

}

}

}else{

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

}

?>

 

矩形类

//rect.class.php

class Rect extends Shape{

private $width;

private $height;

function __construct($arr=[]){

if(!empty($arr)){

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

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

}

$this->name = "矩形";

}

function area() {

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

}

function view() {

$form = '

';

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

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

$form .='
';

$form .='

';

echo $form;

}

function test($arr) {

$bg = true;

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

echo $this->name."的宽不能小于0!
";

$bg = false;

}

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

echo $this->name."的高度不能小于0!
";

$bg = false;

}

return $bg;

}

}

?>

 

三角形类

//triangle.class.php

class Triangle extends Shape{

private $b1;

private $b2;

private $b3;

function __construct($arr=[]){

if(!empty($arr)){

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

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

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

}

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

}

function area() {

$p = ($this->b1 + $this->b2 + $this->b3)/2;

return sqrt($p*($p-$this->b1)*($p-$this->b2)*($p-$this->b3));

}

function view() {

$form = '

';

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

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

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

$form .='
';

$form .='

';

echo $form;

}

function test($arr) {

$bg = true;

if($arr['b1'] < 0) {

echo "第一个边的宽不能小于0!
";

$bg = false;

}

if($arr['b2'] < 0) {

echo "第二个边的宽不能小于0!
";

$bg = false;

}

if($arr['b3'] < 0) {

echo "第三个边的宽不能小于0!
";

$bg = false;

}

if(($arr['b1'] + $arr['b2'] < $arr['b3'])||($arr['b1'] + $arr['b3'] < $arr['b2'])||($arr['b3'] + $arr['b2'] < $arr['b1'])){

echo '两边之和不能小于第三边
';

$bg = false;

}

return $bg;

}

}

?>

查看原文