最新公告
  • 欢迎您光临立业阁,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 【笔试题】用PHP写一个微波炉_php教程


    在网上看到一个笔试题,感觉挺有意思的,然后我尝试着解一解,欢迎各位大佬指正。

    代码题(用 OOP 的思想编码,注意代码规范) 写出你的思路,最好有代码

    用 php 写一个微波炉,注意物品正加热时不能开门,带皮带壳食物不能被加热。

    感谢大佬们的建议,更进一步理解了 OOP,现更新第二版

    第二版

    <?php
    /**
     * Created by PhpStorm.
     * User: arun
     * Date: 2019-04-30
     * Time: 16:10
     */
    /**
     * 厨房用具
     * Interface kitchenWare
     */
    interface kitchenWare {
        /**
         * 加工食材
         * @param Food $food
         * @return mixed
         */
        public function process(Food $food);
        /**
         * 是否正在加工
         * @return mixed
         */
        public function hasProcess();
    }
    /**
     * 微波炉
     * Class MicrowaveOven
     */
    class MicrowaveOven implements kitchenWare
    {
        /**
         * 是否加热中
         * @var bool
         */
        protected $is_heat = false;
        /**
         * @param Food $food
         * @return mixed|string
         */
        public function process(Food $food)
        {
            if ($this->hasProcess()) {
                return '已有食物在加热,无法打开';
            } else {
                if ($food->hasShuck() || $food->hasPericarp()) {
                    return '食物带壳或者带皮,无法进行加热';
                } else {
                    $this->is_heat = true;
                    return '食物加热中,加热完成即可取出';
                }
            }
        }
        /**
         * 是否正在加工
         * @return bool|mixed
         */
        public function hasProcess()
        {
            return $this->is_heat;
        }
    }
    /**
     * 烤箱
     * Class Oven
     */
    class Oven implements kitchenWare
    {
        /**
         * 是否烧烤中
         * @var bool
         */
        protected $is_heat = false;
        /**
         * @param Food $food
         * @return mixed|string
         */
        public function process(Food $food)
        {
            if ($this->is_heat) {
                return '已有食物在烤制,无法打开';
            } else {
                if ($food->hasShuck()) {
                    return '食物带壳,无法进行烤制';
                } else {
                    $this->is_heat = true;
                    return '食物烤制中,完成即可取出';
                }
            }
        }
        /**
         * 是否正在加工
         * @return bool|mixed
         */
        public function hasProcess()
        {
            return $this->is_heat;
        }
    }
    /**
     * 食物
     * Class Food
     */
    class Food
    {
        /**
         * 是否带壳
         * @var bool
         */
        protected $is_shuck = false;
        /**
         * 是否带皮
         * @var bool
         */
        protected $is_pericarp = false;
        /**
         * Food constructor.
         * @param bool $is_shuck
         * @param bool $is_pericarp
         */
        public function __construct(bool $is_shuck, bool $is_pericarp)
        {
            $this->is_shuck = $is_shuck;
            $this->is_pericarp = $is_pericarp;
        }
        /**
         * 判断是否带壳
         * @return bool
         */
        public function hasShuck()
        {
            return $this->is_shuck;
        }
        /**
         * 判断是否带皮
         * @return bool
         */
        public function hasPericarp()
        {
            return $this->is_pericarp;
        }
    }
    /**
     * 烹饪
     * Class Cooking
     */
    class Cooking
    {
        /**
         * @var kitchenWare
         */
        protected $kitchenWare;
        /**
         * Cook constructor.
         * @param kitchenWare $kitchenWare
         */
        public function __construct(kitchenWare $kitchenWare)
        {
            $this->kitchenWare = $kitchenWare;
        }
        /**
         * 烹饪食物
         * @param Food $food
         * @return mixed
         */
        public function cooking(Food $food)
        {
            $data = $this->kitchenWare->process($food);
            return $data;
        }
    }
    /**
     * 微波炉加热
     * @return mixed
     */
    function test()
    {
        $cooking = new Cooking(new MicrowaveOven());
        $food = new Food(false, false);
        $result = $cooking->cooking($food);
        $result2 = $cooking->cooking($food);
        var_dump($result, $result2);
    }
    /**
     * 烤箱烤制
     * @return mixed
     */
    function test2()
    {
        $cooking = new Cooking(new Oven());
        $food = new Food(false, true);
        $result =  $cooking->cooking($food);
        $result2 =  $cooking->cooking($food);
        var_dump($result, $result2);
    }
    test();
    test2();

    第一版

    <?php
    /**
     * Created by PhpStorm.
     * User: arun
     * Date: 2019-04-30
     * Time: 16:10
     */
    /**
     * 厨房用具
     * Interface kitchenWare
     */
    interface kitchenWare {
        /**
         * 加工食材
         *
         * @param $food
         * @return mixed
         */
        public function process($food);
    }
    /**
     * 微波炉
     * Class MicrowaveOven
     */
    class MicrowaveOven implements kitchenWare
    {
        /**
         * 是否加热中
         * @var bool
         */
        protected $is_heat = false;
        public function process($food)
        {
            if ($this->is_heat) {
                return '已有食物在加热,无法打开';
            } else {
                if ($food['is_shuck'] || $food['is_pericarp']) {
                    return '食物带壳或者带皮,无法进行加热';
                } else {
                    $this ->is_heat = true;
                    return '食物加热中,加热完成即可取出';
                }
            }
        }
    }
    /**
     * 烤箱
     * Class Oven
     */
    class Oven implements kitchenWare
    {
        /**
         * 是否烧烤中
         * @var bool
         */
        protected $is_heat = false;
        public function process($food)
        {
            if ($this->is_heat) {
                return '已有食物在烤制,无法打开';
            } else {
                if ($food['is_shuck']) {
                    return '食物带壳,无法进行烤制';
                } else {
                    $this ->is_heat = true;
                    return '食物烤制中,完成即可取出';
                }
            }
        }
    }
    /**
     * 食物
     * Class Food
     */
    class Food
    {
        /**
         * 是否带壳
         * @var bool
         */
        protected $is_shuck = false;
        /**
         * 是否带皮
         * @var bool
         */
        protected $is_pericarp = false;
        /**
         * Food constructor.
         * @param bool $is_shuck
         * @param bool $is_pericarp
         */
        public function __construct(bool $is_shuck, bool $is_pericarp)
        {
            $this->is_shuck = $is_shuck;
            $this->is_pericarp = $is_pericarp;
        }
        public function getFood()
        {
            return [
                'is_shuck' => $this->is_shuck,
                'is_pericarp' => $this->is_pericarp,
            ];
        }
    }
    /**
     * 烹饪
     * Class Cooking
     */
    class Cooking
    {
        /**
         * @var kitchenWare
         */
        protected $kitchenWare;
        /**
         * Cook constructor.
         * @param kitchenWare $kitchenWare
         */
        public function __construct(kitchenWare $kitchenWare)
        {
            $this->kitchenWare = $kitchenWare;
        }
        /**
         * 烹饪食物
         * @param $food
         * @return mixed
         */
        public function cooking($food)
        {
            $data = $this->kitchenWare->process($food);
            return $data;
        }
    }
    /**
     * 微波炉加热
     * @return mixed
     */
    function test()
    {
        $cooking = new Cooking(new MicrowaveOven());
        $food = new Food(false, false);
        $result = $cooking->cooking($food->getFood());
        $result2 = $cooking->cooking($food->getFood());
        var_dump($result, $result2);
    }
    /**
     * 烤箱烤制
     * @return mixed
     */
    function test2()
    {
        $cooking = new Cooking(new Oven());
        $food = new Food(false, true);
        $result =  $cooking->cooking($food->getFood());
        $result2 =  $cooking->cooking($food->getFood());
        var_dump($result, $result2);
    }
    test();
    test2();

    以上就是【笔试题】用PHP写一个微波炉的详细内容,更多请关注liyege.cn其它相关文章!

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    • 1145会员总数(位)
    • 111856资源总数(个)
    • 6本周发布(个)
    • 0 今日发布(个)
    • 239稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
    冀ICP备19022365号-1 百度地图

    侵权联系邮箱[email protected]

    立业阁(www.liyege.cn)免费提供wordpress主题模板、dedecms模板、帝国cms模板、小说网站源码、电影网站源码以及网络技术分享,建站源码,小说模板,电影模板,网赚教程,VPS推荐