Implementace tříd a polymorfismus s pHp

Obsah
Polymorfismus je schopnost abstraktní třídy nebo konkrétního objektu reagovat na stejnou metodu vlastním chováním. Polymorfismus určuje, že předaný nebo očekávaný parametr nebo objekty mohou mít více forem a různé chování se stejnými metodami.
Když provádíme objektově orientované programování s polymorfismy, musíme mít na paměti, že instanci třídy nebo objektu lze vyvolat a bude fungovat a chovat se stejně bez ohledu na třídu, do které objekt patří. Pokud máme mnoho tříd a objektů, musíme dobře strukturovat hierarchie tříd a abstraktních tříd. Další výhodou je možnost deklarovat nebo programovat metody se stejným názvem, přestože jejich funkčnost je zcela odlišná, protože odkazujeme na instanci třídy.
Předpokládejme například abstraktní třídu, která představuje počet vozidel, která sdílejí jako některá data společnou úroveň paliva, značku a model vozidla.
Vlastnosti třídy Vehicles pak bude palivo, které bude obsahovat počet litrů, které jsou naloženy do vozidla a značka a model vozidlo.
 
Níže definujeme běžné metody pro všechna vozidla, která budou nakládat palivo, a ukážeme, kolik zbývá, jak se používá, navíc musíme být schopni každému vozidlu přiřadit značku a model a také umět konzultovat jeho značku a model . Dále definujeme metody pro třídu Vehicles.
 palivo = $ palivo; } veřejná funkce show fuel () {return $ this-> fuel; } public function assignvehicle ($ brand, $ model) {$ this-> brandymodel = $ brand. ' '. $ model; } public function showbrandmodel () {return $ this-> markandmodel; }}?> var13 -> 
Pak začneme vytvářet třídy, které dědí z vozidel a budou mít své konkrétní metody, například vytvoříme třídu Auta, bude mít vlastnost k postupu auta a pokaždé, když bude postupovat, spotřebuje litr paliva (aby bylo cvičení snadno pochopitelné)
 třída Auta prodlužuje Vozidlo {public function advance () {// každých 10 kilometrů spotřebuje litr $ this-> palivo - = 1; }} // Koncová třída 
Nyní implementujeme obecnou třídu pro řidiče vozidla, zde vezmeme v úvahu, že jeden řidič nebo několik může řídit různá vozidla.
V této třídě definujeme konstruktor generického nebo abstraktního typu
 funkce __construct ($ object_parameter) {$ this-> myobject = $ object_parameter} 
Můžeme tedy manipulovat s jakýmkoli objektem, který je předán jako parametr konstruktoru, takže naše třída bude mít schopnost přijímat objekt jako parametr, toto je polymorfismus, to znamená, že může používat kompletní objekty, například můžeme odeslat třída autos jako parametr a použije všechny jejich metody.
Implementujeme příklady v php 5, takže je důležité si pamatovat rozsah metody a proměnné, ve většině jazyků je to velmi podobné. Chcete -li přiřadit nebo změnit rozsah proměnné nebo vlastnosti, musíme použít odpovídající vyhrazené slovo, když deklarujeme proměnnou nebo metodu podle přístupu nebo rozsahu, který chceme, aby měla:
  • soukromý: označuje, že k proměnné nebo metodě lze přistupovat pouze metodami třídy, do které objekt patří, a nikoli z jiných.
  • chráněný: označuje, že proměnná nebo metoda je přístupná metodami a také z jakékoli její podtřídy, která patří do této třídy.
  • veřejnost: označuje, že proměnné nebo metody jsou přístupné z jakékoli jiné metody nebo bez ohledu na to, kam patří nebo komu patří. Buďte opatrní s veřejnými atributy, protože by mohly upravit hodnotu, která je také používána jinou třídou nebo jinou metodou.

Dále vytvoříme třídu Driver, která bude mít následující metody: naložit palivo, přiřadit vozidlo, zobrazit značku a model, vylepšit vozidlo a zkontrolovat zbývající palivo, jak postupuje.
 vozidlo = $ předmět; } veřejné plnění paliva ($ palivo) {$ this-> vozidlo-> množství paliva ($ palivo); } public function assignvehicle ($ make, $ model) {$ this-> vehicle-> assignvehicle ($ make, $ model); } veřejná funkce brandymodel () {return $ this-> vehicle-> showbrandmodel (); } public function advancevehicle () {$ this-> vehicle-> advance (); } zbývající veřejné palivo () {return $ this-> vehicle-> show fuel (); }}?> var13 -> 
Můžeme vidět, jak v každé funkci třídy Cars vytváříme instance běžných metod třídy Super Vehicles, abychom přiřadili vlastnosti nebo metody, které jsou specifické a nejsou společné pro všechna vozidla.
Podívejme se dále, jak tyto třídy používat a samotný polymorfismus.
 přiřadit vozidlo ('Ferrari', '550 MARANELLO'). '
'; // Ukazujeme přiřazenou echo vozidla $ ferrari-> brandymodel (). '
'; // Do vozidla naložíme palivo s uvedením množství v litrech, které odráží „Palivová zátěž“. $ Ferrari-> Palivová zátěž (50). '
'; // Ukazujeme aktuální množství paliva echo 'Aktuální palivo'. $ Ferrari-> palivo zbývá (). ' litrů
'; echo 'Advance Vehicle
'; $ ferrari-> advanceVehicle (); echo $ ferrari-> brandymodel (). ' máte '. $ ferrari-> palivo zbývá ().' litrů paliva
'; // Vytvoříme další instanci s jiným vozidlem, například můžeme vytvořit proměnnou, která je značkou a patentem $ hondaHB0071 = new Driver (new Autos); echo $ hondaHB0071-> assignvehicle ('Honda', 'ACCORD'). '
'; echo $ hondaHB0071-> makeandmodel (). '
'; echo „Palivová zátěž“. $ hondaHB0071-> palivová zátěž (50). '
'; echo 'Aktuální palivo'. $ hondaHB0071-> palivo zbývá (). ' litrů
'; echo 'Advance vozidlo Honda
'; $ hondaHB0071-> advanceVehicle (); echo $ hondaHB0071-> makeandmodel (). ' máte '. $ hondaHB0071-> zbývající palivo ().' litrů paliva
'; ?> var13 ->
Podívejme se dále na skutečné výhody polymorfismu a třídní dědičnosti, přidejme třídu do
 // Třída motocyklů Motocykly prodlužují Vozidlo {public function advance () {// každých 10 kilometrů spotřebuje litr $ this-> palivo - = 1; }} $ moto = nový řidič (nové motocykly); echo $ moto-> přiřadit vozidlo ('Yamaha', 'YBR 125'). '
'; echo $ moto-> makeymodel (). '
'; echo 'Palivová zátěž'. $ motocykl-> palivová zátěž (10). '
'; echo 'Aktuální palivo'. $ moto-> zbývající palivo (). ' litrů
'; echo 'Advances motocyklového vozidla
'; $ moto-> advanceVehicle (); echo $ moto-> makeymodel (). ' odešel jsi '. $ moto-> fuelremaining ().' litrů paliva
'; ?> var13 ->

Tady vidíme, jak byli jsme schopni implementovat rozšíření stejné třídy prostřednictvím polymorfismu opětovné použití nadřazené třídy Vozidla a metody a vlastnosti, které mají auto a motocykl společné, přestože se chovají odlišně, v tomto případě můžeme vidět, že kapacita paliva je odlišná.
Mohli bychom začlenit potřebné výpočty, aby byla spotřeba paliva podle vozidla reálnější.
Výhodou použití polymorfismu je, že můžeme vytvářet podobné metody, ale například s jinými parametry.
Implementace rozhraní s pHp
Rozhraní jsou deklarace, které definují, jaké metody lze implementovat třídou, přičemž skrývají, jak se tyto metody používají nebo spravují. Metody, které jsou deklarovány v rozhraní, musí být veřejné, aby k nim měly přístup třídy, které implementujeme. Umožňují zapouzdření tříd a polymorfismů.
K implementaci rozhraní s php se používá klíčové slovo implements. Pokud máme v rozhraní deklarováno několik metod, musí být implementovány ve třídě. Třídy mohou implementovat více než jedno rozhraní, aby mohly přistupovat k různým metodám, abychom mohli mít různé funkce v různých třídách.
Vidíme příklad rozhraní
 
Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave