Object-Oriented Programming în WordPress Moștenirea I

Una dintre cele mai grele părți în scrierea unei serii pentru începători în programarea orientată pe obiecte este aceea de a ști unde să se oprească.

Există atât de multe subiecte care să acopere faptul că putem încet încet să ne îndreptăm spre tehnicile de programare avansată, în cele din urmă renunțând exact la misiunea pe care intenționăm să o realizăm: să învingem începătorii cu un set de instrumente, strategii și înțelegerea conceptelor de început.

Mai întâi, rețineți că în ultimul post din serie am finalizat primul nostru plug-in complet folosind tehnici orientate pe obiecte. În cea mai mare parte, a încapsulat tot ceea ce am acoperit prin acest punct în serie (cu excepția, evident, moștenire).

În acest scop, asigurați-vă că vă apropiați de următoarele articole:

  1. O introducere
  2. Clase
  3. Tipuri
  4. Structuri de control: declarații condiționate
  5. Structuri de control: buclă
  6. Funcții și atribute
  7. domeniu
  8. Construirea Pluginului I
  9. Construirea pluginului II
  10. Documentați Pluginul I
  11. Documentați Pluginul II

Este o mulțime, știu, dar amintiți-vă: Scopul seriei este de a pregăti începătorul absolut cu tot ceea ce este necesar pentru a lucra cu PHP și a scrie plugin-uri WordPress folosind tehnici orientate pe obiecte.

În acest scop, am decis să încep să închei această serie cu un articol din două părți (cu oa treia parte finală care servește ca rezumat), care oferă o temă de dezvoltare în următorul subiect de dezvoltare pentru aspiranții programatori PHP: Moștenirea.

Din nou, pentru cei care sunt programatori mai experimentați, atunci moștenirea nu este un subiect țintă pentru tine; cu toate acestea, dacă sunteți începător, moștenirea este unul dintre conceptele ușor de înțeles, mai dificil de implementat (credeți sau nu) și acest lucru poate provoca și mai multă confuzie atunci când vine vorba de subiecte precum polimorfismul ( despre care vom vorbi mai târziu)

Pe urmatoarele doua articole, am scopul de a acoperi toate cele de mai sus, impreuna cu un eșantion de cod, pentru ao susține. Dar, înainte de a ne uita la codul, cred că este important să înțelegem conceptele de importanță, să privim câțiva pași necesari pentru a pregăti codul orientat pe obiect pentru moștenire.

În acest articol, vom defini moștenirea, vom încerca să formăm un model conceptual al ceea ce se întâmplă de fapt, examinând nuanțele a ceea ce sunt cunoscute sub denumirea de clase de bază și subclase, precum și câteva cuvinte cheie rezervate în limba care trebuie să fie ajustate pentru a susține moștenirea prin clase aflate în afara clasei.

Așadar, odată cu abandonarea ca foaie de parcurs a articolului, să mergem mai departe și să începem.

Moștenire definită

Spre deosebire de o serie de alți termeni de programare, moștenirea este de fapt un cuvânt care descrie conceptul său destul de bine. Straight from Wikipedia:

În programarea orientată pe obiecte (OOP), moștenirea este atunci când un obiect sau o clasă se bazează pe un alt obiect sau clasă, folosind aceeași implementare. Este un mecanism de reutilizare a codului. Relațiile dintre obiecte sau clase prin moștenire dau naștere unei ierarhii.

Relativ clară, nu-i așa? Dar cred că putem face mai bine.

La începutul acestei serii, am vorbit despre câte dintre cele mai comune limbi de programare folosesc exemple, cum ar fi animale și vehicule ca modalitate de a demonstra conceptul de programare orientată pe obiecte.

La urma urmei, ideea din spatele programării orientate pe obiecte este aceea că ar trebui să modelam obiecte din lumea reală? Un fel de. Dar de câte ori ați văzut un fizic Postare pe blog?

Exact.

Ca atare, îmi place întotdeauna să încerc să pun lucrurile în perspectiva unui lucru mult mai tangibil, mai practic și mai strâns legat de conținutul pe care îl vom crea.

Cu aceasta a spus, ceea ce este un mod adecvat putem descrie moștenirea în contextul programării orientate obiect care nu distruge conceptul prin utilizarea exemplelor triviale?

Să încercăm acest lucru: 

Moștenirea este atunci când o clasă servește ca clasă parentală pentru o clasă de copil care oferă un număr de atribute și metode comune atât părintelui cât și copilului; totuși, copilul ca abilitatea de a-și prezenta propriile atribute.

În citatul de mai sus, folosim câțiva termeni precum "clasa părintească" și "clasa copil", fiecare dintre care vom clarifica puțin, dar punctul este acela că putem crea literalmente o ierarhie a clasei tuturor care moşteni informații de la clasele lor părinte.

Poate chiar mai curat, ori de câte ori lucrați cu o clasă copil și doriți să profitați de atributele și funcțiile definite în clasa părinte sau în clasa de bază, puteți să o faceți cu ușurință fără nici un cod suplimentar.

Dar ne dăm înainte de noi înșine. Înainte de a face acest lucru, să ne asigurăm că putem obține un model conceptual al aspectului moștenirii. La urma urmei, deși scriem coduri, încercăm să oferim un model care nu reprezintă doar un obiect real, ci creează și o relație între obiecte.

Vizualizarea moștenirii

Înainte de a merge mai departe, să aruncăm o privire la o diagramă de clasă foarte simplă cu privire la modul în care funcționează moștenirea. 

Rețineți că folosim trei clase:
  • Conţinut care va servi drept clasă de bază și care reprezintă un tip generic de informații care dețin date pentru alte tipuri de conținut mai specifice.
  • cometariu care reprezintă un comentariu pe un post pe blog. Această clasă conține informații de la care se moștenește Conţinut și că ea definește în sine.
  • Post moștenesc de asemenea Conţinut care reprezintă un singur post blog. Conține general Conţinut informații, dar conține și propriile informații specifice acelei clase.

Acum, acesta este în mod clar un exemplu simplificat de moștenire, dar în centrul său acest lucru este cum funcționează moștenirea. Într-un articol viitor, vom analiza modul în care funcționează instanțierea, accesul la date și alte funcții.

Dar, mai întâi, trebuie să clarificăm câțiva termeni și să ne asigurăm că avem toate informațiile adecvate.

Clasa Jargon

Așa cum am atins mai devreme în această serie, există un număr de termeni pe care l-am folosit toți, care sunt cheia înțelegerii modului în care diferitele părți ale moștenirii lucrează împreună.

În acest scop, este important să definim câteva definiții comune pentru cuvintele pe care le folosim nu numai din cauza modului în care le folosim în tot acest articol, deoarece nu numai că le veți vedea folosite aici, dar veți merge pentru a le vedea folosite în altă parte și veți vedea să le folosească interschimbabil în alte articole de pe web:

  • O clasă parentală, de asemenea menționată ca o clasă de bază, este clasa din care alte clase moștenează informații așa cum se arată în ilustrația de mai sus. Menține un set de proprietăți și funcții.
  • Rețineți că unele dintre funcțiile disponibile în clasa de bază pentru clasele terțe, clasele copil sau numai în clasa de bază în sine.
  • Clasa copil, denumită în mod obișnuit subclasa, este clasa care moștenește informații, date și funcționalități din clasa părinte. 
  • Vom vedea codul despre acest lucru în următoarea postare; totuși, rețineți că accesul la date merge doar într-un fel. Asta înseamnă că subclasele pot accesa informații în clasa de bază, dar clasele de bază nu cunosc subclasele lor.

Acest ar trebui să clarifică o mulțime de terminologie în jurul acestei; cu toate acestea, dacă nu, gândiți-vă la aceasta, cum ar fi un arbore genealogic în care aveți părinți și copii. Copiii moștenesc trăsături ale părinților, dar părinții nu moștenesc trăsături ale copiilor lor.

Rețineți, de asemenea, că în programare, unii dezvoltatori doresc să introducă ceea ce se numește "moștenire multiplă", ceea ce înseamnă în esență că o singură clasă poate moșteni proprietăți și metode din mai multe clase.

Nu numai că acest lucru este restricționat în PHP, dar este, de asemenea, în afara sferei de aplicare a acestei serii speciale.

Exclusiv pentru clasele abstracte

Pentru cei care sunt puțin mai familiarizați cu conceptul de moștenire, atunci probabil sunteți, de asemenea, familiarizați cu conceptul de clase abstracte.

Apoi, din nou, dacă sunteți familiarizat cu conceptul de clase abstracte, aș susține că nu sunteți începător și că nu sunteți cu adevărat publicul țintă pentru conținutul pe care îl atingem cu acest articol. 

Deci, în funcție de feedbackul pe acest articol, această serie, și dacă alții sunt interesați, poate putem face un articol de urmărire sau câteva articole care acoperă acest subiect exact.

Urmeaza…

În următorul articol, vom continua discuția noastră cu privire la moștenire, pe măsură ce analizăm modul de implementare a acesteia în PHP. De asemenea, vom analiza modul în care subclasele pot accesa date de la părinții lor și cum clasele de părinți pot asigura informații în interiorul lor

Între timp, asigurați-vă că părăsiți orice feedback, întrebări și / sau comentarii despre moștenire în feedul de comentarii și voi căuta să le adresați aici sau în următoarea postare.

Pana atunci!

Cod