[1]图形类
[2]主界面
[3]矩形类
[4]三角形类
前面的话
本文用面向对象的技术来实现一个简单的图形面积计算器
图形类
//rect.class.php
abstract class Shape{
public $name;
abstract function area();
abstract function view();
abstract function test($arr);
}
?>
主界面
//index.php
.box{
width: 800px;
margin: 0 auto;
}
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 = '
';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 = '
';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;
}
}
?>
发表评论