Ich habe im Internet eine schriftliche Testfrage gesehen, die ich sehr interessant fand, also habe ich versucht, sie zu lösen. Korrekturen sind willkommen.
Codierungsfragen (Codieren mit OOP-Ideen, auf Codespezifikationen achten) Schreiben Sie Ihre Ideen auf, am besten haben Sie Code
Schreiben Sie einen Mikrowellenherd in PHP. Beachten Sie, dass die Tür beim Erhitzen von Gegenständen nicht geöffnet werden kann und Lebensmittel mit Gürtelschalen nicht erhitzt werden können.
Vielen Dank für Ihre Vorschläge. Ich verstehe OOP jetzt besser und aktualisiere die zweite Version.
Zweite Ausgabe
<?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();
Erste Ausgabe
<?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();
Das obige ist der detaillierte Inhalt von[Schriftliche Testfrage] Schreiben Sie einen Mikrowellenherd in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!