通过自带部分result.class.php分流,由于这三个类继承shape这个类,让我们来看看,面向对象的继承。

shape.class.shape档

<?php
abstract class shape{
public $shapeName;
abstract function area();
abstract function perimeter(); /*
* 全部的实体类都要继承shape以便于统一方法和属性
* 验证 validate方法一致
* */
protected function validate($value,$message="形状"){
if($value == "" ||!is_numeric($value)||$value < 0){
echo '<font color="red">'.$message.'必须为非负值的数>字,而且不能为空</font><br>';
return false;
} else{
return true;
}
} } ?>

这是一个抽象类,优点就在于,第一个,定义了统一的属性和方法。这样在result里面就能够统一的调用$shapename属性和area()和perimeter()。

同事还能够构造公用的方法。比方验证方法validate。

下面是详细每一个类的实现

rect.class.php实现rect矩形类

<?php
class Rect extends Shape {
private $width = 0;
private $height = 0;
function __construct() {
$this->shapeName = "矩形"; if ($this->validate ( $_POST ["width"], '矩形的宽度' ) & $this->validate ( $_POST ["height"], '矩形的高度' )) { $this->width = $_POST ["width"]; $this->height = $_POST ["height"];
} else {
exit ();
} $this->width = $_POST ["width"]; $this->height = $_POST ["height"];
}
function area() {
return $this->width * $this->height;
}
function perimeter() {
return 2 * ($this->width + $this->height);
}
} ? >

triangle.class.php实现triangle三角形类

<?

php
class Triangle extends Shape{
private $side1=0;
private $side2=0;
private $side3=0; function __construct(){
$this->shapeName="三角形";
if($this->validate($_POST['side1'],'三角形的第一边')&&
$this->validate($_POST['side2'],'三角形的第一边')
&&$this->validate($_POST['side3'],'三角形的第一边')){
$this->side1=$_POST["side1"];
$this->side2=$_POST["side2"];
$this->side3=$_POST["side3"];
}
if(!$this->validateSum()){
echo '<font color="red">三角形的两边之和必须大于第三边</font>';
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;}
}
}
?>

circle.class.php实现circle圆类

<?php
class Circle extends Shape{
private $radius=0; function __construct(){
$this->shapeName="圆形";
if($this->validate($_POST['radius'],'圆的半径')){
$this->radius.$_POST["radius"];
}else{exit;}
$this->radius=$_POST["radius"];
}
function area(){
return pi()*$this->radius*$this->radius;
}
function perimeter(){
return 2*pi()*$this->radius;
}
} ?>

全部的类都继承了shape类,实现里面的方法和为属性赋值。用构造方法和详细不用的计算方法实现每一个类不同的多态性,同一时候对外部调用人来说,都是调用area()和perimter()方法。此为封装。都封装成在方法内部类可以。

版权声明:本文博主原创文章,博客,未经同意不得转载。

php:的图形计算器的面向对象的版本武器2的更多相关文章

  1. php:兄弟连之面向对象版图形计算器1

    曾经看细说PHP的时候就想做这个,可是一直没什么时间,这次总算忙里偷闲搞了代码量比較多的project. 首先,文档结构,都在一个文件夹下就好了,我的就例如以下. 一開始,进入index.php文件. ...

  2. PHP.11-PHP实例(二)-面向对象实例(图形计算器)

    面向对象实例(图形计算器) [PHP语法详解] 1.实现外观 #不同的动作,输出不同的表单 ###关于PHP中,无法使用localhost访问.php文件[http://www.360doc.com/ ...

  3. PHP学习笔记06——面向对象版图形计算器

    index.php 用于显示页面 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h ...

  4. PHP图形计算器(计算三角形矩形周长面积)

    运用PHP面向对象的知识设计一个图形计算器,同时也运用到了抽象类知识,这个计算器可以计算三角形的周长和面积以及矩形的周长和面积.本图形计算器有4个页面:1.PHP图形计算器主页index.php;   ...

  5. php实现图形计算器

    存档: index.php <html> <head> <title>图形计算器开发</title> <meta http-equiv=" ...

  6. [图形计算器]Desmos

    一.图形计算器 var elt = document.getElementById('calculator'); var calculator = Desmos.GraphingCalculator( ...

  7. 英特尔® 图形性能分析器 2019 R1 版本

    了解并下载全新英特尔® 图形性能分析器 2019 R1 版本.新版本新增了 DX11 和 Vulkan 多帧流捕获模式,可以在“帧和图形跟踪分析器”中分析 Vulkan 应用.此外,帧分析器还添加了 ...

  8. 图形计算器(geogebra[5.0.278.0])使用QQ浏览器打开下载

    点击这里下载Geogebra图形计算器

  9. PHP面向对象实例(图形计算器)

    效果:

随机推荐

  1. uva live 4394 String painter 间隔dp

    // uva live 4394 String painter // // 问题是,在培训指导dp运动主题,乍一看,我以为只是一点点复杂 // A A磕磕磕,两个半小时后,.发现超过例子.然而,鉴于他 ...

  2. IOS加强知识(1)理解力Objective-C

    一直想写一般Objective-C帖子,总是没时间.所以,我希望有一个巨大的知识更小.温馨提示小的变化.写一点点,每天.东西把他们的学习分享,好了废话不多. 1.一门动态的语言OC Object-C( ...

  3. hdu 2191 悼念512四川汶川大地震遇难者——如今宝,感恩生活

    悼念512四川汶川大地震遇难者--如今宝,感恩生活 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  4. UML之轻松入门(3)-SRP做好厨子,让别人编程去吧

         一个厨子能够做出一手好菜,或许他是新东方毕业的或者是祖传秘方.你让他做上一桌佳肴那是简单.快乐而又高效的,然而让他编程就会成为一种苦恼并且让人想不通的一件事.或许这个比喻不是非常恰当,可是对 ...

  5. leetcode dfs Validate Binary Search Tree

    Validate Binary Search Tree Total Accepted: 23828 Total Submissions: 91943My Submissions Given a bin ...

  6. 冒泡排序java

    先对冒泡排序做一个简单的解释,然后是代码的实现.解释出资<java的数据结构和算法>,大家可以看看. 排序类: package com.dxx.order; public class Bu ...

  7. uva 10817 Headmaster&#39;s Headache 出发dp 位计算

    出发dp,用在一些议题的操作非常~  给出s个课程.m个教师.n个求职者,教师必须招聘.然后招聘一些求职者,使得每一门课都至少有两个老师能教.问题就转换成了招聘哪些求职者使得花费最少.由于s范围小于8 ...

  8. Directx11学习笔记【十二】 画一个旋转的彩色立方体

    上一次我们学习了如何画一个2D三角形,现在让我们进一步学习如何画一个旋转的彩色立方体吧. 具体流程同画三角形类似,因此不再给出完整代码了,不同的部分会再说明. 由于我们要画彩色的立方体,所以顶点结构体 ...

  9. (转)maven设置内存

    Windows环境中 找到文件%M2_HOME%\bin\mvn.bat ,这就是启动Maven的脚本文件,在该文件中你能看到有一行注释为: @REM set MAVEN_OPTS=-Xdebug - ...

  10. [LeetCode234]Palindrome Linked List

    题目: Given a singly linked list, determine if it is a palindrome. 判断一个单链表是不是回文 思路: 1.遍历整个链表,将链表每个节点的值 ...