Încapsularea, moștenire, polimorfism (php de bază - lecție a cursului)

Încapsularea, moștenire, polimorfism (php de bază - lecție a cursului)

In acest tutorial, vă voi spune despre cele trei concepte de bază ale orientat pe obiect de programare: o încapsulare, moștenire, polimorfism; Și vă învețe să le aplice în dezvoltarea.

Încapsularea - o caracteristică limbaj de programare, care vă permite să consolideze și să protejeze datele și codul într-un obiect și ascunde implementarea obiectului de utilizator (programator). În acest caz, utilizatorul este dat numai caietul de sarcini (interfață) a obiectului.

Cu alte cuvinte, atunci când este vorba de clasă bine conceput, putem folosi doar metodele sale, fără a adâncit în modul în care acestea funcționează și modul în care lucrează cu câmpurile de clasă. Este vorba despre o situație în care lucrăm cu o clasă dezvoltată de către alți programatori. Noi folosim doar funcționalitatea deja puse în aplicare.

Aici este un alt exemplu. Principii cum ar fi incapsularea ascunde punerea în aplicare internă construit în orice funcție PHP. Probabil știți deja strpos funcția () pentru siruri de caractere din biblioteca standard PHP. Această funcție caută secvența șir de caractere specificat și returnează poziția sa într-un număr. Dacă vă gândiți la punerea în aplicare a acestei funcții, putem presupune că vom avea nevoie la bucla prin fiecare caracter de la începutul șirului pentru un meci cu caracterul inițial în secvența țintă, și în cazul în sine, pentru a compara aceste două personaje, și așa mai departe. D. Dar pentru noi ca programatori este nevoie să se gândească la acest lucru și să se îngropa în complexitatea punerii în aplicare a acestei funcții. Este suficient să se cunoască parametrii. că este nevoie, și formatul valorii de întoarcere. strpos () funcție încapsulează problema definirii subșir, oferindu-ne doar interfața externă să-l folosească.

În mod similar, clase concepute în mod corespunzător ascunde punerea lor în aplicare internă, oferind o interfață pentru utilizatorii externi, sub forma unui set de metode.

Conceptul de încapsulare limbaj PHP este implementat sub forma de modificatori speciale de acces pentru câmpuri și metode ale unei clase. Acest lucru va fi discutat în continuare.

Moștenirea - un mecanism de programare orientat-obiect care vă permite să descrie o nouă clasă pe baza unui existent (părinte), precum și proprietățile și funcționalitatea clasei părinte împrumutat o nouă clasă.

Să dau un exemplu de moștenire de viața reală. Ca o clasă, puteți lua o figură geometrică. În același timp, nu precizează care indică o cifră ar trebui să fie. Care sunt proprietățile formei pot fi distinse? Să presupunem că are o culoare. Apoi, în clasă, descriind cifra ar trebui să fie câmp de tip șir corespunzător specifică culoarea unei forme. De asemenea, orice formă geometrică are o suprafață. Lăsați zona de proprietate este al doilea în clasa noastră.

Acum, să presupunem că programul nostru are nevoie pentru a lucra cu forme geometrice specifice. patrate si triunghiuri. inclusiv poziția lor geometrică a planului. Este evident că descrierea triunghiuri și pătrate, cu o cifră de clasă este insuficientă, deoarece nu stochează informații privind poziția geometrică. Prin urmare, trebuie să introducem două clase suplimentare, pătrate și triunghiuri. În acest caz, să presupunem că în programul nostru, avem nevoie, de asemenea, culoarea și forme pătrate. Această situație necesită doar utilizarea de moștenire. Pentru că orice pătrat și triunghi în program, evident, este o cifră care este. E. Are culoarea și zona. În același timp, fiecare piesă necesită date suplimentare (în plus față de culoare și spațiu) pentru descrierea sa, care este rezolvată prin introducerea a două clase suplimentare pentru pătrate și triunghiuri. care sunt moștenite de la cifra de clasă.

Acest lucru înseamnă că, în piețe clasă și triunghiuri, nu trebuie să re-setați câmpul de culoare și de spațiu. Este suficient să spunem că aceste clase sunt moștenite de la cifra de clasă.

Acest cod defineste clasa ca NewsArticle succesor articol. Articolul de clasă, la rândul său, este clasa NewsArticle părinte. Acest lucru înseamnă că domeniile și metodele de clasă Articolul va fi de asemenea prezent în clasa NewsArticle. și nu trebuie să re-defini-le.

Folosind moștenire, puteți construi o ierarhie de clase, moștenind una de alta. În același timp, doar un singur părinte poate fi la orice clasă:

Încapsularea, moștenire, polimorfism (php de bază - lecție a cursului)

Uneori putem avea nevoie să redefinim una dintre metodele clasei părinte. Să ne dea încă o dată clasa de implementare articol:

În codul de mai sus folosește funcția strftime (). care vă permite să se afișeze data într-o formă convenabilă. Pentru a înțelege mai bine codul, citiți specificațiile acestei funcții în manual. Pentru noi este important să acorde o atenție la ceea ce clasa NewsArticle. ca articolul. determină metoda de vedere (). Prin urmare, toate obiectele din această clasă se va utiliza metoda vizualizare (). NewsArticle a anunțat în clasă. mai degrabă decât în ​​articolul.

Poate te intrebi de ce este important pentru a trece peste unele dintre metodele, în loc de a introduce noi tehnici în clasele descendenți? O înțelegere a acestei va veni împreună cu o înțelegere a următoarelor concepte importante OOP.

Polimorfismul - interschimbabilitatea obiectelor cu aceeași interfață.

Să considerăm următorul exemplu, care dă o idee despre esența polimorfism:

Acest rând este invocat apel () metoda din clasa obiectului A. Așa cum este definit în Apelul funcției () Clasa A. Testul metoda () este invocata. Satisface metoda de testare () în A. obiect de clasă și afișează textul „Aceasta este o clasa A“.

În această linie, există un test metodă de apel () obiectul de clasa B. Test () metoda de clasa B afișează textul „Aceasta este o clasa B“.

În cele din urmă, ultima linie este un apel de clasă apel () în clasa obiectului B. Cu toate acestea, în punerea în aplicare a clasei B, nu vom vedea o astfel de metodă, ceea ce înseamnă că moștenește de la clasa A. T la clasa B - .. Este un descendent al clasei A. ceea ce vedem în punerea în aplicare a metodei de apel () clasa A. următorul cod:

Apel () metoda invocă testul metoda () a obiectului, care este. Acest lucru înseamnă că îndeplinește metoda de testare () a clasei obiectului B. Aceasta explică rezultatul pe ecran la ieșire.

Acesta este principiul polimorfism. Clasele pot avea aceleași metode. diferite, dar punerea lor în aplicare. La elaborarea codului de script, putem ști doar caietul de sarcini generale pentru grupul clasă de metodele lor, dar nu au o idee, este o instanta a clasei va fi utilizată la un anumit moment.

Conceptele de încapsulare, moștenire și polimorfism poate fi numit trei piloni ai OEP. Înțelegerea și aplicarea atentă a principiilor acestor concepte - succesul dezvoltării cu OEP.

articole similare