Heim  >  Artikel  >  Backend-Entwicklung  >  Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen

Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen

不言
不言Original
2018-04-21 13:50:0111305Durchsuche


Ich habe gerade das Erlernen der objektorientierten PHP-Programmierung abgeschlossen und dieses Beispiel anhand des PHP-Tutorials von Lehrer Gao Luofeng gelernt.

Effektbild:

Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen
Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen
Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen

Das Folgende ist der Implementierungscode:

Index .php
<html><head>
    <title>图形计算(使用面向对象开发技术)</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>
    <center>
        <h1>图形(周长&面积) 计算器</h1>
        <a href="index.php?action=rect">Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen</a>
        <a href="index.php?action=triangle">Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen</a>
        <a href="index.php?action=circle">Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen</a>
        <hr>
    </center>


    <?php  //php代码部分
        error_reporting(E_ALL & ~E_NOTICE);//提示错误的等级
    // __autoload是php中的魔术方法,在用到类的时候自动调用
        function __autoload($className){
            //自动导入这个类
            include strtolower($className).".class.php";
        }
        //输出表单,form类中有魔术方法__toString,因此可以直接输出类的对象引用,就是输出对象返回的字符串
        echo new Form();

        if(isset($_POST["sub"])){
            //输出结果
            echo new Result();//直接输出对象的引用表示
        }

    ?></body></html>
form.class.php_Dies ist die Form class_
<?php
    //根据index中提交的不同action的值返回不同的表单
    class Form{
        private $action;        private $shape;        //构造方法
        function __construct($action=""){
            $this->action = $action;            $this->shape=isset($_REQUEST["action"])?$_REQUEST["action"]:"rect";
        }        function __toString()
        {
            // TODO: Implement __toString() method.
            $form=&#39;<form action="&#39;.$this->action.&#39;"  method="post">&#39;;            switch($this->shape){                case "rect":                    $form.=$this->getRect();                    break;                case "triangle":                    $form.=$this->getTriangle();                    break;                case "circle":                    $form.=$this->getCircle();                    break;                default:                    $form.=&#39;请选择一个形状<br>&#39;;
            }            $form.=&#39;<input type="submit" name="sub" value="计算">&#39;;            $form.=&#39;</form>&#39;;            return $form;
        }        private function getRect(){
            $input=&#39;<b>请输入 | Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen | 的宽度和高度:</b><p>&#39;;            $input.=&#39;宽度:<input type="text" name="width" value="&#39;.$_POST[&#39;width&#39;].&#39;"><br>&#39;;            $input.=&#39;高度:<input type="text" name="height" value="&#39;.$_POST[&#39;height&#39;].&#39;"><br>&#39;;            $input.=&#39;<input type="hidden" name="action" value="rect">&#39;;            return $input;
        }        private function getTriangle(){
            $input=&#39;<b>请输入 | Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen | 的三条边:</b><p>&#39;;            $input.=&#39;第一边: <input type="text" name="side1" value="&#39;.$_POST[&#39;side1&#39;].&#39;" ><br>&#39;;            $input.=&#39;第二边: <input type="text" name="side2" value="&#39;.$_POST[&#39;side2&#39;].&#39;" ><br>&#39;;            $input.=&#39;第三边: <input type="text" name="side3" value="&#39;.$_POST[&#39;side3&#39;].&#39;" ><br>&#39;;            $input.=&#39;<input type="hidden" name="action" value="triangle">&#39;;            return $input;
        }        private function getCircle(){
            $input=&#39;<b>请输入 | Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen | 的半径:</b><p>&#39;;            $input.=&#39;半径: <input type="text" name="radius" value="&#39;.$_POST[&#39;radius&#39;].&#39;" ><br>&#39;;            $input.=&#39;<input type="hidden" name="action" value="circle">&#39;;            return $input;
        }

    }/**
 * Created by PhpStorm.
 * User: user
 * Date: 2018/4/15
 * Time: 16:26
 *
 */
shape.class.php Dies ist eine abstrakte Klasse, die zum Definieren von Spezifikationen verwendet wird
<?phpabstract class Shape {
    public $shapeName;    //规范circle、triangle、rect中必须有area()、perimeter()方法
    abstract function area();
    abstract function perimeter();

    public function setShapeName($shapeName)
    {
        $this->shapeName = $shapeName;        return $this;
    }    //判断输入的数字是否为大于0的有效数字
    protected function validate($value, $message="形状"){
        if($value == "" || !is_numeric($value) || $value < 0 ){            echo &#39;<font color="red"> &#39;.$message.&#39; 必须为非负值的数字,并且不能为空 </font><br>&#39;;            return false;
        } else {            return true;
        }
    }
}/**
 * Created by PhpStorm.
 * User: user
 * Date: 2018/4/15
 * Time: 16:42
 */
circle.class.php_is die Formel zur Berechnung von Umfang und Fläche_
<?phpclass Circle extends Shape {
    private $radius=0;    function __construct(){
        $this->shapeName="Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen";        if($this->validate($_POST[&#39;radius&#39;], &#39;圆的半径&#39;)){            $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
<?phpclass Rect extends Shape{
    private $width=0;    private $height=0;    function __construct()
    {
        $this->shapeName="Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen";        if($this->validate($_POST["width"],&#39;Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen的宽度&#39;) & $this->validate($_POST["height"],&#39;Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen的高度&#39;))
        {            $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
<?phpclass Triangle extends Shape{
    private $side1=0;    private $side2=0;    private $side3=0;    function __construct(){
        $this->shapeName="Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen";        if($this->validate($_POST[&#39;side1&#39;], &#39;Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen的第一个边&#39;)){            $this->side1=$_POST["side1"];
        }        if($this->validate($_POST[&#39;side2&#39;], &#39;Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen的第二个边&#39;)){            $this->side2=$_POST["side2"];

        }        if($this->validate($_POST[&#39;side3&#39;], &#39;Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen的第三个边&#39;)){            $this->side3=$_POST["side3"];
        }        if(!$this->validateSum()){            echo &#39;<font color="red">Übungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen的两边之和必须大于第三边</font>&#39;;            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_Hier ist die Ergebnisklasse der Rückgabeberechnung_
<?php
    class Result{        private $shape;

        function __construct()
        {            switch($_POST[&#39;action&#39;]){                case &#39;rect&#39;:
                    $this->shape=new Rect();                    break;                case &#39;triangle&#39;:
                    $this->shape=new Triangle();                    break;                case &#39;circle&#39;:
                    $this->shape=new Circle();                    break;                default:
                    $this->shape=false;
            }
        }        /**
         * @return string
         */
        function __toString()
        {            // TODO: Implement __toString() method.
            if($this->shape){
                $result=$this->shape->shapeName.&#39;的周长:&#39;.$this->shape->perimeter().&#39;<br>&#39;;
                $result.=$this->shape->shapeName.&#39;的面积:&#39;.$this->shape->area().&#39;<br>&#39;;                return $result;
            }else{                return &#39;没有这个形状&#39;;
            }
        }
    }/**
 * Created by PhpStorm.
 * User: user
 * Date: 2018/4/15
 * Time: 16:47
 */

Verwandte Empfehlungen:

PHP objektorientiert Statisch verzögerte Bindung statisch::

                                             

Das obige ist der detaillierte Inhalt vonÜbungen zur objektorientierten PHP-Programmierung: Berechnen Sie den Umfang und die Fläche von Rechtecken, Dreiecken und Kreisen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn