Implementeringsklasser og polymorfisme med pHp

Innholdsfortegnelse
Polymorfisme er evnen til en abstrakt klasse eller et bestemt objekt til å reagere på den samme metoden med sin egen oppførsel. Polymorfisme spesifiserer at en bestått eller forventet parameter eller objekter kan ha flere former og ha ulik oppførsel med de samme metodene.
Når vi utfører objektorientert programmering med polymorfismer, må vi huske på at en forekomst av en klasse eller et objekt kan påberopes, og det vil fungere og oppføre seg det samme uavhengig av klassen objektet tilhører. Hvis vi har mange klasser og objekter, må vi strukturere hierarkiene til klasser og abstrakte klasser godt. En annen fordel er å kunne deklarere eller programmere metoder med samme navn, selv om funksjonaliteten deres er helt annerledes, siden vi refererer til forekomsten av klassen.
Anta som et eksempel en abstrakt klasse som representerer antall kjøretøyer, som deler data til felles drivstoffnivå, merke og kjøretøymodell.
Egenskapene til kjøretøyklassen vil da være drivstoff som vil inneholde antall liter som lastes inn i kjøretøyet og merke og modell kjøretøy.
 
Nedenfor definerer vi de vanlige metodene for alle kjøretøyene som skal laste drivstoff og vise hvor mye som er igjen mens det brukes, i tillegg må vi kunne tilordne hvert kjøretøy et merke og en modell og også kunne konsultere merke og modell. . Deretter definerer vi metodene for kjøretøyklassen.
 drivstoff = $ drivstoff; } offentlig funksjon vis drivstoff () {return $ this-> fuel; } offentlig funksjon tilordne kjøretøy ($ merke, $ modell) {$ this-> brandymodel = $ merke. ' '. $ modell; } offentlig funksjon showbrandmodel () {return $ this-> markandmodel; }}?> var13 -> 
Deretter vil vi begynne å lage klassene som arver fra kjøretøyer, og de vil ha sine spesielle metoder, for eksempel lager vi klassen Biler, den vil ha eiendommen til å forskuttere bilen, og hver gang den går videre vil den forbruke en liter drivstoff (slik at øvelsen er lett å forstå)
 klasse Biler utvider Kjøretøy {forhåndsfunksjon for offentlig funksjon () {// hver 10. kilometer bruker en liter $ this-> drivstoff - = 1; }} // Sluttklasse 
Nå skal vi implementere en generell klasse for føreren av kjøretøyet, her tar vi i betraktning at en eller flere førere kan kjøre forskjellige kjøretøyer.
I denne klassen vil vi definere en generisk eller abstrakt type konstruktør
 funksjon __construct ($ object_parameter) {$ this-> myobject = $ object_parameter} 
Så vi kan deretter manipulere ethvert objekt som sendes som en parameter for konstruktøren, så vår klasse vil ha muligheten til å motta et objekt som en parameter, dette er polymorfisme, det vil si at den kan bruke komplette objekter, for eksempel kan vi sende klassebiler som parameter og bruke alle metodene deres.
Vi vil implementere eksemplene i php 5, så det er viktig å huske omfanget av en metode og variablene, på de fleste språk er det veldig likt. For å tildele eller endre omfanget av en variabel eller eiendom må vi bruke det tilsvarende reserverte ordet når vi deklarerer variabelen eller metoden i henhold til tilgangen eller omfanget vi vil ha den:
  • privat: indikerer at variabelen eller metoden bare kan nås med metodene i klassen objektet tilhører og ikke fra noen andre.
  • beskyttet: indikerer at variabelen eller metoden er tilgjengelig med metodene til og også fra noen av dens underklasser som tilhører denne klassen.
  • offentlig: indikerer at variabler eller metoder er tilgjengelige fra en hvilken som helst annen metode eller uansett hvor den tilhører eller hvem den tilhører. Vær forsiktig med offentlige attributter, da de kan endre en verdi som også brukes av en annen klasse eller annen metode.

Deretter lager vi førerklassen, som vil ha følgende metoder: last drivstoff, tilordne kjøretøy, se merke og modell, forhåndsbil og sjekk gjenværende drivstoff etter hvert som det utvikler seg.
 kjøretøy = $ objekt; } drivstoffbelastning for offentlig funksjon ($ drivstoff) {$ dette-> kjøretøy-> drivstoffbelastning ($ drivstoff); } offentlig funksjon tilordne kjøretøy ($ merke, $ modell) {$ dette-> kjøretøy-> tilordne kjøretøy ($ merke, $ modell); } merkevaremodell for offentlig funksjon () {return $ this-> vehicle-> showbrandmodel (); } public function advancevehicle () {$ this-> vehicle-> advance (); } resterende drivstoff for offentlig funksjon () {return $ this-> vehicle-> show fuel (); }}?> var13 -> 
Vi kan se hvordan vi i hver funksjon i bilklassen instanserer de vanlige metodene i Super Vehicles -klassen for å tildele egenskaper eller metoder som er spesielle og ikke felles for alle kjøretøyer.
La oss se hvordan du bruker disse klassene og selve polymorfismen.
 tilordne kjøretøy ('Ferrari', '550 MARANELLO'). '
'; // Vi viser det tildelte kjøretøyet ekko $ ferrari-> brandymodel (). '
'; // Vi laster drivstoff inn i bilen og indikerer mengden i liter ekko 'Drivstoffbelastning'. $ Ferrari-> drivstoffbelastning (50). '
'; // Vi viser gjeldende drivstoffmengde ekko 'Current fuel'. $ Ferrari-> resterende drivstoff (). ' liter
'; echo 'Advance kjøretøy
'; $ ferrari-> advanceVehicle (); echo $ ferrari-> brandymodel (). ' du har '. $ ferrari-> drivstoff igjen ().' liter drivstoff
'; // Vi lager en annen forekomst med et annet kjøretøy, for eksempel kan vi lage en variabel som er merket og patent $ hondaHB0071 = ny driver (ny bil); echo $ hondaHB0071-> tilordne kjøretøy ('Honda', 'ACCORD'). '
'; echo $ hondaHB0071-> makeandmodel (). '
'; ekko 'Drivstoffbelastning'. $ hondaHB0071-> drivstoffbelastning (50). '
'; ekko 'Current fuel'. $ hondaHB0071-> drivstoff igjen (). ' liter
'; echo 'Advance Honda -kjøretøy
'; $ hondaHB0071-> advanceVehicle (); echo $ hondaHB0071-> makeandmodel (). ' du har '. $ hondaHB0071-> drivstoff igjen ().' liter drivstoff
'; ?> var13 ->
La oss deretter se de sanne fordelene med polymorfisme og klassearv, la oss legge klassen til
 // Motorsykler klasse Motorsykler forlenger Kjøretøyet {offentlig funksjon forhånd () {// hver 10. kilometer bruker en liter $ this-> drivstoff - = 1; }} $ moto = ny driver (nye motorsykler); echo $ moto-> tilordne kjøretøy ('Yamaha', 'YBR 125'). '
'; echo $ moto-> makeymodel (). '
'; ekko 'Drivstoffbelastning'. $ motorsykkel-> drivstoffbelastning (10). '
'; ekko 'Current fuel'. $ moto-> gjenværende drivstoff (). ' liter
'; echo 'Advances motorsykkelbil
'; $ moto-> advanceVehicle (); echo $ moto-> makeymodel (). ' du har forlatt '. $ moto-> fuel resterende ().' liter drivstoff
'; ?> var13 ->

Her kan vi se hvordan vi klarte å implementere en forlengelse av samme klasse gjennom polymorfisme gjenbruk av foreldreklassen Kjøretøy og metodene og egenskapene som en bil og en motorsykkel har til felles, selv om de oppfører seg annerledes, i dette tilfellet kan vi se at drivstoffkapasiteten er forskjellig.
Vi kan inkorporere de nødvendige beregningene for å gjøre drivstofforbruket mer reelt i henhold til kjøretøyet.
Fordelen med å bruke polymorfisme er at vi kan lage lignende metoder, men med forskjellige parametere for eksempel.
Implementering av grensesnitt med pHp
Grensesnitt er erklæringer som definerer hvilke metoder som kan implementeres av en klasse, og skjuler hvordan disse metodene brukes eller administreres. Metodene som er deklarert i et grensesnitt må være offentlige for å få tilgang til klassene vi implementerer. De tillater en innkapsling av klasser og polymorfismer.
For å implementere et grensesnitt med php, brukes søkeordimplementene. Hvis vi har flere metoder deklarert i et grensesnitt, må de implementeres i en klasse. Klasser kan implementere mer enn ett grensesnitt for å få tilgang til forskjellige metoder, slik at vi kan ha forskjellige funksjoner i forskjellige klasser.
Vi ser et eksempel på grensesnitt
 
Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng
wave wave wave wave wave