Provedba klasa i polimorfizma s pHp

Sadržaj
Polimorfizam je sposobnost apstraktne klase ili određenog objekta da na istu metodu odgovori svojim ponašanjem. Polimorfizam određuje da proslijeđeni ili očekivani parametar ili objekti mogu imati više oblika i imati različito ponašanje s istim metodama.
Kada provodimo objektno orijentirano programiranje s polimorfizmima moramo imati na umu da se može pozvati instanca klase ili objekta koji će raditi i ponašati se bez obzira na klasu kojoj objekt pripada. Ako imamo mnogo klasa i objekata, moramo dobro strukturirati hijerarhije klasa i apstraktne klase. Druga prednost je mogućnost deklariranja ili programiranja metoda s istim imenom, iako su njihove funkcionalnosti potpuno različite, budući da se pozivamo na instancu klase.
Kao primjer, pretpostavimo apstraktnu klasu koja predstavlja broj vozila koja imaju zajedničke podatke o razini goriva, marki i modelu vozila.
Svojstva klase Vozila tada će biti gorivo koje će sadržavati broj litara koji su utovareni u vozilo i marka i model vozilo.
 
U nastavku definiramo uobičajene metode za sva vozila koja će puniti gorivo i pokazati koliko je preostalo dok se koristi, osim toga svakom vozilu moramo dodijeliti marku i model te se također moći posavjetovati s njegovom markom i modelom . Zatim definiramo metode za klasu Vozila.
 gorivo = $ gorivo; } javna funkcija show fuel () {return $ this-> fuel; } javna funkcija dodijeliti vozilo ($ brand, $ model) {$ this-> brandymodel = $ brand. ' '. $ model; } javna funkcija showbrandmodel () {return $ this-> markandmodel; }}?> var13 -> 
Tada ćemo početi stvarati klase koje nasljeđuju od vozila i one će imati svoje posebne metode, na primjer stvaramo klasu Automobili, imat će svojstvo unaprijediti automobil i svaki put kad napreduje potrošit će litru goriva (tako da se vježba može lako razumjeti)
 klasa Automobili proširuje Vozilo {public function advance () {// svakih 10 kilometara troši litru $ ovo-> gorivo - = 1; }} // Završi klasu 
Sada ćemo implementirati opću klasu za vozača vozila, ovdje uzimamo u obzir da jedan ili više vozača može upravljati različitim vozilima.
U ovoj klasi definirat ćemo konstruktor generičkog ili apstraktnog tipa
 funkcija __construct ($ object_parameter) {$ this-> myobject = $ object_parameter} 
Dakle, tada možemo manipulirati bilo kojim objektom koji je proslijeđen kao parametar konstruktora, pa će naša klasa imati mogućnost primanja objekta kao parametra, ovo je polimorfizam, odnosno može koristiti kompletne objekte, na primjer možemo poslati klasa autos kao parametar i koristi sve njihove metode.
Primjere ćemo implementirati u php 5 pa je važno zapamtiti opseg metode i varijable, u većini jezika vrlo su slične. Za dodjelu ili promjenu opsega varijable ili svojstva moramo koristiti odgovarajuću rezerviranu riječ kada deklariramo varijablu ili metodu u skladu s pristupom ili opsegom koji želimo da ima:
  • privatna: označava da se varijabli ili metodi može pristupiti samo metodama klase kojoj objekt pripada, a ne iz bilo koje druge.
  • zaštićen: označava da je varijabli ili metodi moguće pristupiti metodama i također iz bilo koje od njezinih podklasa koje pripadaju ovoj klasi.
  • javnost: označava da su varijablama ili metodama dostupne iz bilo koje druge metode ili bez obzira na to gdje pripadaju ili kome pripadaju. Budite oprezni s javnim atributima jer bi mogli izmijeniti vrijednost koju također koristi druga klasa ili druga metoda.

Zatim stvaramo klasu vozača koja će imati sljedeće metode: napuniti gorivo, dodijeliti vozilo, pogledati marku i model, unaprijediti vozilo i provjeriti preostalo gorivo kako napreduje.
 vozilo = $ objekt; } javna funkcija punjenje gorivom ($ gorivo) {$ ovo-> vozilo-> punjenje gorivom ($ gorivo); } javna funkcija assignvehicle ($ make, $ model) {$ this-> vehicle-> assignvehicle ($ make, $ model); } javna funkcija brandymodel () {return $ this-> vozilo-> showbrandmodel (); } javna funkcija advancevehicle () {$ this-> vehicle-> advance (); } javna funkcija gorivo preostalo () {vrati $ ovo-> vozilo-> prikaži gorivo (); }}?> var13 -> 
Možemo vidjeti kako u svakoj funkciji klase Automobili primjenjujemo uobičajene metode klase Super Vehicles kako bismo dodijelili svojstva ili metode koje su posebne, a nisu zajedničke za sva vozila.
Pogledajmo dalje kako koristiti te klase i sam polimorfizam.
 dodijeliti vozilo ('Ferrari', '550 MARANELLO'). '
'; // Prikazujemo dodijeljeno vozilo echo $ ferrari-> brandymodel (). '
'; // Utovarimo gorivo u vozilo pokazujući količinu u litrama koja odjekuje "Utovar goriva". $ Ferrari-> punjenje gorivom (50). '
'; // Prikazujemo trenutnu količinu goriva koja prikazuje odjek "Trenutno gorivo". $ Ferrari-> preostalo gorivo (). ' litara
'; echo 'Napredno vozilo
'; $ ferrari-> advanceVehicle (); echo $ ferrari-> brandymodel (). ' imate '. $ ferrari-> preostalo gorivo ().' litara goriva
'; // Stvaramo drugu instancu s drugim vozilom, na primjer možemo stvoriti varijablu koja je marka i patent $ hondaHB0071 = novi vozač (novi automobili); echo $ hondaHB0071-> assignvehicle ('Honda', 'ACCORD'). '
'; echo $ hondaHB0071-> makeandmodel (). '
'; echo 'Gorivo opterećenje'. $ hondaHB0071-> punjenje gorivom (50). '
'; echo 'Trenutno gorivo'. $ hondaHB0071-> preostalo gorivo (). ' litara
'; echo 'Advance Hondino vozilo
'; $ hondaHB0071-> advanceVehicle (); echo $ hondaHB0071-> makeandmodel (). ' imate '. $ hondaHB0071-> preostalo gorivo ().' litara goriva
'; ?> var13 ->
Pogledajmo zatim prave prednosti polimorfizma i nasljeđivanja klasa, dodajmo klasu
 // Klasa motocikala Motocikli proširuju Vozilo {public function advance () {// svakih 10 kilometara troši litru $ ovo-> gorivo - = 1; }} $ moto = novi vozač (novi motocikli); echo $ moto-> dodijeli vozilo ('Yamaha', 'YBR 125'). '
'; echo $ moto-> makeymodel (). '
'; echo 'Gorivo opterećenje'. $ motocikl-> opterećenje gorivom (10). '
'; echo 'Trenutno gorivo'. $ moto-> preostalo gorivo (). ' litara
'; echo 'Napreduje motorno vozilo
'; $ moto-> advanceVehicle (); echo $ moto-> makeymodel (). ' napustili ste '. $ moto-> fuelremaining ().' litara goriva
'; ?> var13 ->

Ovdje možemo vidjeti kako uspjeli smo implementirati proširenje iste klase kroz polimorfizam ponovna upotreba roditeljske klase Vozila te metode i svojstva koja zajednički imaju automobil i motocikl, iako se ponašaju različito, u ovom slučaju možemo vidjeti da je kapacitet goriva različit.
Mogli bismo uključiti potrebne izračune kako bismo potrošnju goriva učinili stvarnijom prema vozilu.
Prednost korištenja polimorfizma je u tome što možemo stvoriti slične metode, ali s različitim parametrima, na primjer.
Implementacija sučelja s pHp
Sučelja su deklaracije koje definiraju koje metode klasa može implementirati, skrivajući način na koji se te metode koriste ili upravljaju. Metode koje su deklarirane u sučelju moraju biti javne kako bi im mogle pristupiti klase koje implementiramo. Omogućuju inkapsulaciju klasa i polimorfizama.
Za implementaciju sučelja s php -om koristi se ključna riječ implements. Ako imamo nekoliko metoda deklariranih u sučelju, one se moraju implementirati u klasu. Klase mogu implementirati više od jednog sučelja kako bi mogle pristupiti različitim metodama, tako da možemo imati različite funkcionalnosti u različitim klasama.
Vidimo primjer sučelja
 
Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod
wave wave wave wave wave