Așa cum am subliniat în primul post din această serie, ne apropiem de conceptul de programare orientată obiect în contextul WordPress și facem acest lucru pentru foarte începător.
Asta înseamnă că dacă nu ați auzit niciodată de OOP, dacă ați fost curios să-l învățați, și esti cineva care este interesat de WordPress si de a invata cum sa dezvolte solutii deasupra ei, atunci aceasta serie este pentru tine.
În următorul set de articole, vom acoperi toate aspectele majore ale programării orientate pe obiecte. Odată ce vom face acest lucru, vom examina modul în care putem aplica ceea ce am învățat construind o soluție de lucru pentru WordPress.
Dar, în primul rând, trebuie să începem cu elementele de bază.
Dacă ați cere 10 dezvoltatori diferiți pentru definirea unei clase, probabil că veți obține multe asemănător răspunsuri, dar puține dintre ele erau de fapt aceleași. De fapt, cel pe care l-am auzit repetat cel mai adesea când eram mai mic a mers astfel:
O clasă este un model pentru crearea unui obiect.
În teorie, sună minunat mai ales dacă știți ce este un obiect. Dar asta e problema, nu-i așa? Încercăm să învățăm despre programarea orientată pe obiecte, deci nu există nicio garanție că știm chiar și ce este un obiect; prin urmare, cum putem înțelege că o clasă servește ca un plan pentru aceasta?
Într-un fel, este certarea întrebării.
Deci, să facem câteva pași și să definim ce este un obiect pentru a defini mai clar ce este o clasă.
Întreaga idee a paradigmei de programare orientată spre obiect este aceea că noi, ca programatori, putem modela mai ușor informațiile pe care le vedem în lumea reală folosind constructe într-un cod.
De exemplu, în lumea reală avem obiecte care pot fi descrise folosind adjective și aceste obiecte pot efectua acțiuni. Deși acest lucru poate fi un pic de cliche, gândiți-vă pentru un moment, despre o mașină:
Din nou, un exemplu simplu, dar dovedește faptul că tot ceea ce avem în lumea reală poate fi de obicei redus la un substantiv care poate fi descris de adjectivele sale și de acțiunile pe care le efectuează.
Deci, să generalizăm această idee obiectelor. De fapt, să înlocuim un cuvânt cu altul:
Destul de ușor, nu? Scurt este faptul că ar trebui să putem descrie lucrurile pe care le vedem în lumea reală ca obiecte din cadrul unei paradigme de programare. Rețineți că unele limbi aleg proprietățile atributelor și unele funcții ale metodelor de apel. Nu prea contează, este același lucru. Ele se referă pur și simplu la adjective despre obiectul și acțiunile pe care le poate lua, respectiv.
Apoi, cele mai multe cursuri de programare sau cărți mereu începeți cu un exemplu despre modul în care obiectele sunt concepute pentru a modela obiecte din lumea reală (similar cu ceea ce am făcut cu exemplul mașinii de mai sus).
Și într-o oarecare măsură, există adevărul. Pentru cei care avea lucrați în curs de dezvoltare, atunci sunteți probabil familiarizat cu modul în care putem modela oamenii în contextul aplicației noastre, dar asta ne depășește pe noi înșine.
Deși este adevărat că putem folosi programarea orientată pe obiecte pentru a modela obiecte din lumea reală, am constatat că, mai des, nu model, o formă mai generalizată a unui obiect din lumea reală - cum ar fi utilizator mai degrabă decât a persoană - și că acțiunile pe care le desfășoară sunt mai unice pentru ei.
În acest scop, exemplele pe care vreau să le ofer în acest articol și cele din restul acestei serii vor fi mai bine orientate spre aplicații practice în programarea pe calculator. Nimeni nu va scrie un plugin pentru mașină și nimeni nu va crea un obiect animal (ceea ce este și ceva pe care de asemenea îl vedeți și îl auziți în cursurile introductive de programare).
În schimb, vom încerca să ne concentrăm mai mult asupra obiectelor care sunt mult mai probabil să fie văzute în domeniul programării - nu în lumea reală. Nu pentru că programarea orientată spre obiecte este slabă, ci pentru că modul în care ne îndreptăm spre învățătură este slab.
Desigur, aceasta ridică întrebarea a ceea ce constituie un exemplu bun? Problema cu răspunsul la o astfel de întrebare este că poate fi literalmente o varietate largă de lucruri.
Acestea includ obiecte precum:
Și vedeți: multe dintre aceste lucruri nu există cu adevărat în lumea reală. De exemplu, postările pe blog nu sunt tangibile. Sunt lucruri pe care le citim pe ecranele noastre. Dar asta înseamnă că nu au proprietăți precum o dată, un timp și un autor? Sau înseamnă că nu au acțiuni cum ar fi publicarea și ștergerea?
Desigur că nu.
Deci, pe măsură ce progresăm în această serie, vom vorbi despre obiect în ceea ce privește lucrurile cu care vom lucra mai mult.
Nu văd că programăm un animal - și cu siguranță nu așa în WordPress - în orice moment în această serie :).
Bine, acum că am luat o scurtă deviere în ce obiectele sunt, de fapt, exemplele bune și rele ale fiecăruia, este timpul să începem să vorbim despre clase și cum ele servesc cu adevărat ca planuri pentru obiecte.
În programare, un obiect este creat dintr-o clasă. Aceasta înseamnă că o clasă definește toate proprietățile unui obiect și acțiunile pe care le poate lua, iar apoi calculatorul va crea un obiect în memorie.
Când vine vorba de cursuri, puteți auzi dezvoltatorii să discute despre cursuri de scriere, de definire a clasei sau de clase de construire. Orice și toți acești termeni sunt acceptați.
După aceea, ați putea auzi dezvoltatorii vorbind despre crearea obiectelor. Actul de creare a unui obiect se numește instanțiere. Da - este un cuvânt mare pentru un concept relativ simplu. Dar gândiți-vă în acest fel: Când aveți o clasă, aveți o definiție din care puteți crea mai multe instanțe ale unui obiect.
Dacă trebuie să trasăm o analogie cu lumea reală, gândiți-vă mai întâi la un set de planuri pentru o casă. Ea stabilește planul de planșeu, dimensiunile, pereții și așa mai departe, care oferă lucrătorilor din construcții informații despre cum să construiți o casă. Apoi, când vine momentul să construim o casă, atunci o echipă de lucrători în construcții ridică casa pe baza planului.
Acesta este cazul cu clase, instanțiere și obiecte. Clasele sunt planurile, calculatorul este echipa de lucrători în construcții, iar obiectele sunt casa. Și la fel cum pot fi ridicate mai multe case dintr-un singur model, acesta este cazul cu obiectele și clasele.
Când vine vorba de scrierea codului, unii oameni pot să-și imagineze obiectul în capul lor - alții, poate nu.
Personal, cred că acest lucru are mai mult de-a face cu modul în care fiecare dintre noi tind să învețe și să proceseze informații, dar cred că este posibil să începem să imaginăm în mod mental modul în care sistemele software funcționează împreună,.
Aici, nu ne vom uita la nici un sistem complex; in orice caz, sunteți mergând să aruncăm o privire la un exemplu de clasă și apoi o reprezentare vizuală a ceea ce ar putea arăta în termeni de cod și în termeni de imagine mentală.
Deoarece avem de-a face cu WordPress, poate că un exemplu inițial pentru o clasă ar fi unul care reprezintă un post pe blog.
Acordat, acesta va fi un exemplu simplu pentru a demonstra ideile atributelor și funcțiilor, dar vom acoperi diverse construcții în mai multe detalii în articolele viitoare.
Deci, cu asta a spus, să spunem că vom crea o clasă pentru un post pe blog. Să spunem, de asemenea, că postarea pe blog va avea un autor, o dată la care a fost publicat, publicat sau nu și acțiunile de publicare și ștergere.
O definiție de exemplu de clasă pentru un post de blog cu aceste atribute și funcții va arăta astfel:
clasa Blog_Post autor privat $; privat $ publish_date; private $ is_published; funcția publică publica () // Publicarea articolului aici funcția publică șterge () // Șterge articolul aici
Pentru cei care sunt familiarizați cu programarea orientată pe obiecte, este posibil să recunoașteți unele dintre informațiile de mai sus și puteți, de asemenea, să recunoașteți că am lăsat anumite lucruri (cum ar fi constructorul). Nu vă faceți griji despre asta - vom acoperi aceste concepte mai târziu.
Pentru cei care sunt complet noi în programare, aceasta este ceea ce arată o definiție de clasă de bază. Pentru moment, nu vă faceți griji cu privire la cuvinte privat
și public
după cum vom acoperi mai târziu.
În schimb, concentrați-vă pe $ autor
, $ PUBLISH_DATE
, și $ is_published
. Acestea sunt atributele. Observați că acestea se situează deasupra definițiilor funcțiilor din clasă. Acestea sunt similare cu adjectivele care descriu Postare pe blog
.
Apoi, avem funcțiile publica()
și șterge()
. Aceste două funcții sunt acțiunile care pot fi luate pe Postare pe blog
. Amintiți-vă, modul în care obiectele din lumea reală se pot mișca (cum ar putea conduce o mașină), poate fi publicat un articol de blog.
Deci, ce se întâmplă când instanțiați o postare pe blog? Adică atunci când creăm o postare de blog în cod, cum putem imagina în mod mental ce se întâmplă în interiorul calculatorului.
În primul rând, să subliniem modul în care o instanță de blog este instanțiată. Amintiți-vă, instanțiatul este un cuvânt la fel cum a fost construit pentru lucrătorii din construcții - este modul în care un obiect este creat dintr-o clasă.
Apoi, să vedem cum putem folosi definiția unei singure clase pentru a crea trei postări de blog diferite:
$ first_post = nou Blog_Post (); $ second_post = nou Blog_Post ();
Destul de ușor de citit, nu? Mai sus, am creat două variabile care vor referi la două complet diferite Postare pe blog
obiecte.
Rețineți că, deși vom vorbi despre acest lucru mai mult într-un articol viitor, cuvântul nou
este ceea ce instruiește computerul să instanțiate a Postare pe blog
de la noi din definiția clasei.
Așadar, să aruncăm o privire la primul exemplu în care primim prima noastră ședință Postare pe blog
.
Observați în această ilustrație, avem $ first_post
variabilă care se referă la instanța Postare pe blog
care a fost creat. Postare pe blog
există în memoria calculatorului, are atributele sale disponibile, precum și metodele disponibile.
Putem accesa toate acestea prin $ first_post
variabila care face referire la acest obiect. Vom vorbi despre asta în detaliu mai târziu în serie.
Dar cum rămâne cu $ second_post
? Cum se acea să priviți în contextul programării orientate obiect?
Dacă comparăți cele două ilustrații, ele arată aproape la fel, corect? $ first_post
se referă la un exemplu de Postare pe blog
, $ second_post
se referă la oa doua instanță Postare pe blog
chiar dacă ei ambii a venit dintr-o singură clasă.
Rețineți că pentru cei care sunt înțeleși din punct de vedere tehnic, aceasta este este posibil ca ambele variabile să facă trimitere la o singură instanță, dar acest lucru se află în afara domeniului de aplicare al acestui articol.
Oricum, în acest moment ar trebui să aveți o înțelegere la nivel înalt a ceea ce este o clasă, rolul pe care îl joacă în programarea orientată obiect și cum putem crea instanțe de obiecte care sunt accesibile prin variabile.
Acest lucru nu ne arată încă cum să interacționăm cu clasele, nu-i așa? Vom ajunge la asta, dar mai întâi trebuie să discutăm unele dintre aspectele mai primitive ale programării, cum ar fi șiruri de caractere, matrice, bucle și condiționări.
Fiecare dintre constructele menționate mai sus ne va ajuta să ne dăm viață obiectelor noastre și odată ce vom face un tur al fiecăruia, vom reveni pentru a face mai multe clase mature care pot face de fapt lucru.