php:的图形计算器的面向对象的版本武器2
通过自带部分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的更多相关文章
- php:兄弟连之面向对象版图形计算器1
曾经看细说PHP的时候就想做这个,可是一直没什么时间,这次总算忙里偷闲搞了代码量比較多的project. 首先,文档结构,都在一个文件夹下就好了,我的就例如以下. 一開始,进入index.php文件. ...
- PHP.11-PHP实例(二)-面向对象实例(图形计算器)
面向对象实例(图形计算器) [PHP语法详解] 1.实现外观 #不同的动作,输出不同的表单 ###关于PHP中,无法使用localhost访问.php文件[http://www.360doc.com/ ...
- PHP学习笔记06——面向对象版图形计算器
index.php 用于显示页面 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h ...
- PHP图形计算器(计算三角形矩形周长面积)
运用PHP面向对象的知识设计一个图形计算器,同时也运用到了抽象类知识,这个计算器可以计算三角形的周长和面积以及矩形的周长和面积.本图形计算器有4个页面:1.PHP图形计算器主页index.php; ...
- php实现图形计算器
存档: index.php <html> <head> <title>图形计算器开发</title> <meta http-equiv=" ...
- [图形计算器]Desmos
一.图形计算器 var elt = document.getElementById('calculator'); var calculator = Desmos.GraphingCalculator( ...
- 英特尔® 图形性能分析器 2019 R1 版本
了解并下载全新英特尔® 图形性能分析器 2019 R1 版本.新版本新增了 DX11 和 Vulkan 多帧流捕获模式,可以在“帧和图形跟踪分析器”中分析 Vulkan 应用.此外,帧分析器还添加了 ...
- 图形计算器(geogebra[5.0.278.0])使用QQ浏览器打开下载
点击这里下载Geogebra图形计算器
- PHP面向对象实例(图形计算器)
效果:
随机推荐
- Windows7在自由的虚拟机(微软官方虚拟机)
Windows7在自由的虚拟机(微软官方虚拟机) 前言: 不是说windows7自带的虚拟机最好用,但他的正式版.免费.只是希望你能windows7用户.它将能够自由使用: 还是Vmware. 微软为 ...
- Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程
原文:Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程 Red Gate系列之三 SQL S ...
- [原创] 使用rpi + crontab + git 定时向bitbucket 推送 照片
#前提条件,你得有一个bitbucket的帐户 1.定时启动脚本代码 使用的是crontab Cronfile 内容如下: 此文件的意思是,每隔10分钟,就运行一次 /home/pi/Rpi_uplo ...
- JTree demo
JFrame居中方法一: setLocationRelativeTo(null); 注意:必须在整个frame初始化完成后再加上此语句,否则将显示在屏幕右下角 方法二: private Dimen ...
- mybaits使用存储过程
如何使用Mybaits调用数据库存储过程,按以下顺序Oracle案例库: 1.在数据库中创建以下存储过程: create or replace procedure pro_hello(p_result ...
- 离PACKET_INp获取信息acket data
于Floodlight模块假设要packet in消息,就对对应的消息类型进行监听就可以.然后在receive方法中就能够操纵这个上传上来的packet_in. 关键代码: E ...
- Appium0.18.x迁移到Appium1.x须知事项(灰常实用,解答了本人几个疑问)
英文原版:https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/migrating-to-1-0.md Migr ...
- OCP-1Z0-051-题目解析-第14题
14. Using the CUSTOMERS table, you need to generate a report that shows 50% of each credit a ...
- poj 4088:Set操作
poj 4088:集合运算 题目:(至于4089.那个问题做过.使用归并思想,所以没有写) 描写叙述 小张须要从一批数量庞大的正整数中挑选出第k小的数.由于数据量太庞大,挑选起来非常费劲,希望你能编程 ...
- 讲座:采用Store检查邮件(1)
讲座:采用Store检查邮件(1) 一.邮件接收的体系结构 JavaMail API中定义了一个java.mail.Store类,用于运行邮件的接收任务,该类的实例对象封装了某种邮件接收协议的底层实施 ...