Objektorientert programmering i WordPress Arvelighet I

En av de vanskeligste delene av å skrive en serie for nybegynnere på objektorientert programmering er å vite hvor du skal stoppe.

Det er så mange emner å dekke at vi langsomt kan begynne å bevege seg i retning av avanserte programmeringsteknikker, og i det siste forgår nøyaktig hva vårt tilsiktede oppdrag var: å begynne nybegynnere med et sett med verktøy, strategier og forståelse av begynnende konsepter.

Merk først at i det siste innlegget i serien, fullførte vi vårt første, fullstendige plugin ved hjelp av objektorienterte teknikker. For det meste inkapslet det alt vi har dekket opp gjennom dette punktet i serien (unntatt, åpenbart arv).

For å oppnå dette må du være sikker på å ta opp følgende artikler:

  1. En introduksjon
  2. klasser
  3. typer
  4. Kontrollstrukturer: betingede uttalelser
  5. Kontrollstrukturer: Looper
  6. Funksjoner og attributter
  7. omfang
  8. Bygg pluggen jeg
  9. Bygg Plugin II
  10. Dokument Plugin I
  11. Dokument Plugin II

Det er mye, jeg vet, men husk: Målet med serien er å forberede den absolutte nybegyneren med alt som er nødvendig for å jobbe med PHP og skrive WordPress-plugins ved hjelp av objektorienterte teknikker.

For det formål har jeg bestemt meg for å begynne å pakke opp denne serien med en todelt artikkel (med en tredje del som tjener som sammendrag) som gir en segue til neste tema for utvikling for aspirerende PHP-programmerere: Arv.

Igjen, for de som er mer erfarne programmerere, er arv ikke et målfag for deg; Men hvis du er nybegynner, er arv et av begrepene som er enkle å forstå, litt mer utfordrende å implementere (tro det eller ikke), og det kan føre til enda mer forvirring når det gjelder temaer som polymorfisme ( som vi snakker om senere)

I løpet av de neste to artiklene, tar jeg sikte på å dekke alle de ovennevnte sammen med prøvekode for å sikkerhetskopiere det. Men før vi ser på kode, mener jeg det er viktig å forstå viktige begrep, å se på noen få trinn som er nødvendige for å forberede objektorientert kode for arv.

I denne artikkelen skal vi definere arv, forsøke å danne en konseptuell modell av det som faktisk foregår, undersøke nyansene til det som kalles grunnklasser og underklasser, samt noen av de reserverte søkeordene på språket som må justeres for å støtte arv gjennom ut klasser.

Så med det satt som vår veikart for artikkelen, la oss gå videre og komme i gang.

Arv definert

I motsetning til en rekke andre programmeringsbetingelser er arv egentlig et ord som beskriver det konseptet ganske bra. Rett fra Wikipedia:

I objektorientert programmering (OOP) er arv når et objekt eller en klasse er basert på et annet objekt eller en klasse, med samme implementering. Det er en mekanisme for kodeutnyttelse. Forholdet mellom objekter eller klasser gjennom arv gir opphav til et hierarki.

Relativt klart, er det ikke? Men jeg tror vi kan gjøre det bedre.

Tidligere i denne serien snakket vi om hvor mange av de mer vanlige programmeringsspråkene som brukes dyr og kjøretøy som en måte å demonstrere begrepet objektorientert programmering på.

Tross alt er ideen bak objektorientert programmering at vi skal modellere virkelige objekter? Vel, slags. Men hvor mange ganger har du sett en fysisk Blogg innlegg?

Nøyaktig.

Som sådan liker jeg alltid å prøve å sette ting i perspektiv på noe som er langt mer håndgripelig, mer praktisk, og det er nærmere knyttet til innholdet som vi faktisk skal skape.

Med det sagt, hva er en tilstrekkelig måte vi kan beskrive arv innenfor rammen av objektorientert programmering som ikke ødelegger konseptet ved bruk av trivielle eksempler?

La oss prøve dette: 

Arv er når en klasse tjener som overordnet klasse for en barneklasse som gir en rekke attributter og metoder som er felles for både foreldre og barn; Imidlertid barnet som evnen til å introdusere sine egne attributter.

I sitatet ovenfor bruker vi et par begreper som "foreldre klasse" og "barn klasse", hver av disse vil vi avklare litt, men poenget er at vi bokstavelig talt kan lage et hierarki av klasser alle hvilken arve informasjon fra foreldrenes klasser.

Kanskje enda bedre, når du jobber med en barneklasse, og du vil dra nytte av attributter og funksjoner som er definert i foreldreklassen eller grunnklassen, kan du enkelt gjøre det uten ekstra kode.

Men vi kommer foran oss selv. Før vi gjør det, la oss sørge for at vi kan få en konseptuell modell av hvilken arv ser ut. Tross alt, selv om vi skriver kode, prøver vi å gi en modell som ikke bare representerer et faktisk objekt, men skaper et forhold mellom objektene, også.

Visualiserer arv

Før vi går videre, la oss ta en titt på et veldig enkelt klassediagram om hvordan arv fungerer. 

Legg merke til at vi bruker tre klasser:
  • Innhold som vil fungere som grunnklassen, og som representerer en generisk type informasjon som inneholder data for andre, mer spesifikke innholdstyper.
  • Kommentar som representerer en kommentar på et blogginnlegg. Denne klassen inneholder informasjon som den arver fra Innhold og at den definerer i seg selv.
  • Post arver også fra Innhold som representerer et enkelt blogginnlegg. Den inneholder generell Innhold informasjon, men inneholder også sin egen informasjon spesifikk for den klassen.

Nå er dette klart et forenklet eksempel på arv, men i kjernen dette er hvordan arv fungerer. I en fremtidig artikkel tar vi en titt på hvordan instantiering, dataadgang og andre funksjoner fungerer også.

Men først trenger vi å klargjøre noen få betingelser og sørge for at vi har all riktig informasjon.

Klassesjargong

Som vi tidligere har snakket om i denne serien, er det en rekke vilkår som vi har brukt som alle er viktige for å forstå hvordan de ulike arvene fungerer sammen.

I den forbindelse er det viktig å definere noen vanlige definisjoner for ordene vi bruker, ikke bare på grunn av hvordan vi bruker dem gjennom denne artikkelen fordi du ikke bare skal se dem brukt her, men du skal å se dem brukt andre steder, og du kommer til å se dem brukt om hverandre i andre artikler over hele nettet:

  • En overordnet klasse, også referert til som en grunnklasse, er klassen som andre klasser arver informasjon som vist i illustrasjonen ovenfor. Den opprettholder et sett med egenskaper og funksjoner.
  • Vær oppmerksom på at noen av funksjonene som er tilgjengelige i grunnklassen til tredjepartsklasser, barneklassene eller bare innenfor selve baseklassen.
  • Barneklassen, som vanligvis kalles underklassen, er klassen som arver informasjon, data og funksjonalitet fra sin overordnede klasse. 
  • Vi ser på kode om dette i neste innlegg; Vær imidlertid oppmerksom på at tilgang til data bare går en vei. Det vil si at underklasser kan få tilgang til informasjon i grunnklassen, men baseklassene er uvitende om sine underklasser.

Dette bør fjerne mye av terminologien rundt dette; Men om ikke, tenk på det når det gjelder å si et slektstre der du har foreldre og barn. Barn arver trekk fra foreldrene sine, men foreldre arver ikke egenskaper fra barna sine.

Legg merke til at i programmeringen vil noen utviklere introdusere det som kalles "multiple arv" som i utgangspunktet betyr at en enkelt klasse kan arve egenskaper og metoder fra flere klasser.

Ikke bare er dette begrenset i PHP, men det er også utenfor omfanget av denne serien.

En bortsett fra abstrakte klasser

For de som er litt mer kjent med begrepet arv, så er du sannsynligvis også kjent med begrepet abstrakte klasser.

Så igjen, hvis du er kjent med begrepet abstrakte klasser, vil jeg hevde at du ikke er en nybegynner, og du er egentlig ikke målgruppen for innholdet som vi når med denne artikkelen. 

Så avhengig av tilbakemelding på denne artikkelen, denne serien, og hvis andre er interessert, kan vi kanskje gjøre en oppfølgingsartikkel eller et par artikler som dekker dette eksakte emnet.

Nestemann…

I neste artikkel skal vi fortsette vår diskusjon om arv, da vi ser på hvordan vi implementerer det innen PHP. Vi skal også se på hvordan underklasser kan få tilgang til data fra foreldrene sine, og hvordan foreldreklasser kan sikre informasjon i seg selv

I mellomtiden, vær sikker på å legge igjen tilbakemelding, spørsmål og / eller kommentarer om arv i kommentarfeltet, og jeg vil se for å adressere dem her eller i neste innlegg.

Inntil da!