使用面向对象的图形计算器,面向对象图形计算器
程序员文章站
2022-04-09 11:09:44
...
使用面向对象的图形计算器,面向对象图形计算器
这个例子可能并不实用,但基本概括了面向对象的三个特征:继承性,封装性,多态性。本例的主要功能有:
效果如下:
思路:
需要改进的地方:
index.php代码如下:
1 2 3 4 5 6 1314 php 15 /*自动加载类*/ 16 function __autoload($className){ 17 include (strtolower($className).'.class.php'); 18 } 19 20 /* 21 1.先new一个Form对象,发现没有form类的定义,把类名Form传递到自动加载类的函数参数进行类的自动加载。 22 2.echo一个对象的引用,会调用该对象的__toString方法返回一个字符串,echo输出的就是对象返回的字符串, 23 这里输出一个表单等待用户的输入。 24 */ 25 echo new Form("index.php"); 26 27 /*如果用户点击了提交按钮,自动加载result类,输出结果*/ 28 if(isset($_POST["sub"])){ 29 echo new result(); 30 } 31 ?> 3233 34
form.class.php代码如下:
1 php 2 /* 3 project:面向对象版图形计算器 4 file:form.class.php 5 description:对不同的图形输出不同的表单 6 */ 7 class form{ 8 private $formAction=NULL; //保存响应表单的文件 9 private $shape=NULL; //保存图形的形状 10 11 /* 12 @param string $action 对象初始化传入的参数,代表响应的页面的是哪一个文件 13 */ 14 function __construct($action = ""){ 15 $this->formAction = $action; //把传入的参数保存到$formAction中; 16 $this->shape = isset($_GET["shape"]) ? $_GET["shape"]:"rect"; //从表单传递的变量中获取图形类别,如没有传递,默认为矩形 17 } 18 function __toString(){ 19 $form = ''; 26 27 return $form; 28 } 29 //私有方法,返回矩形表单input部分的字符串; 30 private function getRect(){ 31 //在表单提交后输入的内容继续显示,防止其消失 32 $formheight=isset($_POST['height']) ? $_POST['height'] : NULL; 33 $formwidth=isset($_POST['width']) ? $_POST['width'] : NULL; 34 $input = '
请输入矩形的长和宽
'; 35 $input .= '矩形的高度:'; 36 $input .= '矩形的宽度:'; 37 return $input; 38 } 39 //返回三角形输入表单input部分的字符串 40 private function getTriangle(){ 41 //在表单提交后继续显示出来,防止其消失 42 $formside1=isset($_POST['side1']) ? $_POST['side1'] : NULL; 43 $formside2=isset($_POST['side2']) ? $_POST['side2'] : NULL; 44 $formside3=isset($_POST['side3']) ? $_POST['side3'] : NULL; 45 $input = '
请输入三角形的三边
'; 46 $input .= '边长1:'; 47 $input .= '边长2:'; 48 $input .= '边长3:'; 49 return $input; 50 } 51 //返回圆形表单input部分的字符串 52 private function getCircle(){ 53 $formradius=isset($_POST['radius']) ? $_POST['radius'] : NULL; //在输入表单提交后内容继续显示出来,防止其消失 54 $input = '请输入半径
'; 55 $input .= '半径:'; 56 return $input; 57 } 58 } 59result.class.php代码如下:
1 php 2 class result{ 3 private $shape = NULL; 4 5 //使用GET传递的变量,实例化一个相应的对象,返回一个对象的引用; 6 function __construct(){ 7 $this->shape = new $_GET["shape"](); 8 } 9 //调用对象的属性和方法,返回周长和面积 10 function __toString(){ 11 $result = $this->shape->shapeName.'的周长为'.$this->shape->perimeter().''; 12 $result .= $this->shape->shapeName.'的面积为'.$this->shape->area().''; 13 return $result; 14 } 15 }
抽象类shape.class.php代码如下:
1 php 2 /* 3 project:面向对象版图形计算器 4 file:shape.class.php 5 description:抽象类,定义两个抽象方法area()和perimeter(),以及定义方法validate对输入的值进行验证 6 */ 7 abstract class shape{ 8 public $shapeName; //形状名称; 9 abstract function area(); //抽象类area(),让子类去实现,体现多态性 10 abstract function perimeter(); //抽象类perimeter(); 11 12 /* 13 @param mixed $value 接受表单输入值 14 @param string $message 提示消息前缀 15 @param boolean 返回值,成功为TRUE,失败为FALSE 16 */ 17 protected function validate($value,$message = "输入的值"){ 18 if($value $value
上一篇: 如何利用ajax实现页面加载和内容的删除