刚刚学完php面向对象的编程,参考着高洛峰老师的php教程学习了这个实例。
效果图片:



以下是实现代码:
index.php
图形计算(使用面向对象开发技术)
图形(周长&面积) 计算器
矩形
三角形
圆形
form.class.php_这是表单类_
action = $action; $this->shape=isset($_REQUEST["action"])?$_REQUEST["action"]:"rect";
} function __toString()
{
// TODO: Implement __toString() method.
$form=''; return $form;
} private function getRect(){
$input='请输入 | 矩形 | 的宽度和高度:'; $input.='宽度:
'; $input.='高度:
'; $input.=''; return $input;
} private function getTriangle(){
$input='请输入 | 三角形 | 的三条边:
'; $input.='第一边:
'; $input.='第二边:
'; $input.='第三边:
'; $input.=''; return $input;
} private function getCircle(){
$input='请输入 | 圆形 | 的半径:
'; $input.='半径:
'; $input.=''; return $input;
}
}/**
* Created by PhpStorm.
* User: user
* Date: 2018/4/15
* Time: 16:26
*
*/
shape.class.php 这是一个抽象类,用来定义规范的
shapeName = $shapeName; return $this;
} //判断输入的数字是否为大于0的有效数字
protected function validate($value, $message="形状"){
if($value == "" || !is_numeric($value) || $value < 0 ){ echo ' '.$message.' 必须为非负值的数字,并且不能为空
'; return false;
} else { return true;
}
}
}/**
* Created by PhpStorm.
* User: user
* Date: 2018/4/15
* Time: 16:42
*/circle.class.php_就是计算周长和面积的公式了_
shapeName="圆形"; if($this->validate($_POST['radius'], '圆的半径')){ $this->radius=$_POST["radius"];
}else{ exit;
}
} function area(){
return pi()*$this->radius*$this->radius;
} function perimeter(){
return 2*pi()*$this->radius;
}
}/**
* Created by PhpStorm.
* User: user
* Date: 2018/4/15
* Time: 17:06
*/rect.class.php
shapeName="矩形"; if($this->validate($_POST["width"],'矩形的宽度') & $this->validate($_POST["height"],'矩形的高度'))
{ $this->width=$_POST["width"]; $this->height=$_POST["height"];
} else{ exit;
}
} function area(){
return $this->width*$this->height;
} function perimeter()
{
return 2 * ($this->width + $this->height);
}
}/**
* Created by PhpStorm.
* User: user
* Date: 2018/4/15
* Time: 17:02
*/triangle.class.php
shapeName="三角形"; if($this->validate($_POST['side1'], '三角形的第一个边')){ $this->side1=$_POST["side1"];
} if($this->validate($_POST['side2'], '三角形的第二个边')){ $this->side2=$_POST["side2"];
} if($this->validate($_POST['side3'], '三角形的第三个边')){ $this->side3=$_POST["side3"];
} if(!$this->validateSum()){ echo '三角形的两边之和必须大于第三边'; 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;
}
}
}/**
* Created by PhpStorm.
* User: user
* Date: 2018/4/15
* Time: 17:04
*/result.class.php_这里是返回计算结果类_
shape=new Rect(); break; case 'triangle':
$this->shape=new Triangle(); break; case 'circle':
$this->shape=new Circle(); break; default:
$this->shape=false;
}
} /**
* @return string
*/
function __toString()
{ // TODO: Implement __toString() method.
if($this->shape){
$result=$this->shape->shapeName.'的周长:'.$this->shape->perimeter().'
';
$result.=$this->shape->shapeName.'的面积:'.$this->shape->area().'
'; return $result;
}else{ return '没有这个形状';
}
}
}/**
* Created by PhpStorm.
* User: user
* Date: 2018/4/15
* Time: 16:47
*/相关推荐:
立即学习“PHP免费学习笔记(深入)”;










