好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

【笔试题】用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写一个微波炉的详细内容,更多请关注Gxl网其它相关文章!

查看更多关于【笔试题】用PHP写一个微波炉的详细内容...

  阅读:46次