"Bună, Amigo! Astăzi voi deschide o lume nouă și interesantă în viziunea ta. Vorbesc despre programarea orientată pe obiecte (OOP) . Ați ajuns deja să cunoașteți clasele și obiectele. Astăzi mergeți pentru a afla mai multe despre ei, mult mai multe.”

Vom începe cu cei patru piloni ai POO. Ele sunt abstracția, încapsularea, moștenirea și polimorfismul. (Odinioară erau trei, dar abstracția a fost adăugată mai târziu)

1) Abstracția.

Un bun exemplu de abstractizare în viața reală sunt fișele posturilor la o companie. Un titlu de post este un lucru, dar îndatoririle sale sunt cu totul altceva.

Imaginați-vă că creați organigrama pentru viitoarea dvs. companie. Ați putea împărți sarcinile unui secretar, împrăștiindu-le pe mai multe alte poziții. Ați putea împărți jobul CEO-ului în mai multe poziții separate: director financiar, director de tehnologie, director de marketing, director de resurse umane. Sau puteți combina pozițiile de manager de birou și de recrutor într-una singură.

Să presupunem că veniți cu nume pentru posturile din compania dvs. și apoi „distribuiți” responsabilitățile pentru aceste posturi. Aceasta este abstractizare - împărțirea a ceva mare și monolitic în mai multe părți mici.

POO: principii de bază - 1

Din perspectiva unui programator, abstractizarea este împărțirea corectă a unui program în obiecte.

Un program mare poate fi reprezentat, de obicei, ca obiecte care interacționează în oricare dintre cele zece moduri diferite. Abstracția vă permite să alegeți principalele caracteristici ale unui obiect și să omiteți ceva mai puțin important.

Abstracția este ca o strategie militară. Dacă alegeți o strategie greșită, nicio tactică ingenioasă nu va salva situația.

2) Încapsulare.

Încapsularea are scopul de a îmbunătăți interacțiunea dintre obiecte prin simplificarea acestora.

OOP: principii de bază - 2

Cel mai bun mod de a simplifica ceva este să ascunzi orice lucru complicat de cei care nu trebuie să știe despre asta. De exemplu, dacă te-ai așeza în spatele comenzilor pilot ale unui avion Boeing, ar dura mult timp să înțelegi cum funcționează acestea:

POO: principii de bază - 3

Pe de altă parte, pentru pasagerii din avion totul pare mai simplu: cumpără un bilet și se îmbarcă în avion, care apoi decolează și aterizează. Puteți zbura cu ușurință de la un continent la altul, știind doar cum să „cumpărați un bilet” și să „urcați într-un avion”. Nu vedem nimic din complexitatea legată de pregătirea avionului pentru zbor, decolare, aterizare și diferite situații potențiale de urgență. Și nu am făcut nicio mențiune despre centrele de navigație prin satelit, pilot automat și de control al traficului aerian. Acest lucru ne simplifică viața.

În ceea ce privește programarea, încapsularea înseamnă „ascunderea implementării”. Îmi place acea definiție. Clasa noastră poate conține sute de metode și poate implementa un comportament extrem de complex în diverse situații. Dar putem ascunde toate metodele sale de privirile indiscrete (prin marcarea lor „ private ”), lăsând doar două sau trei metode de interacțiune cu alte clase (prin marcarea lor „ publice ”). Apoi, toate celelalte clase din programul nostru vor vedea și vor apela doar aceste câteva metode din această clasă . Toată complexitatea clasei va fi ascunsă în interior, la fel cum cabina de pilotaj este ferită de vederea pasagerilor fericiți.

3) Moștenirea.

Moștenirea este un concept în programare și în viața reală. În programare, moștenirea este o relație specială între două clase. Dar moștenirea în viața reală este mult mai interesantă.

Dacă trebuie să creăm ceva în viața reală, avem două opțiuni:

1) facem ceea ce avem nevoie de la zero și petrecem mult timp și efort făcând asta.

2) facem ceea ce avem nevoie folosind lucruri care există deja.

Cea mai bună strategie este aceasta: luăm o soluție bună existentă, o reluăm și o modificăm pentru a ne satisface nevoile, apoi o folosim.

Luați în considerare evoluția umană. Dacă urmărim începutul lor până la începutul vieții pe planetă, vedem că au trecut miliarde de ani. Dar dacă ne gândim la oameni ca pornind de la maimuțe, atunci au trecut doar câteva milioane de ani. Crearea a ceva de la zero durează mai mult. Mult mai lung.

În mod similar, în programare putem crea o clasă bazată pe alta. Noua clasă devine un descendent (moștenitor) al unei clase existente. Acest lucru este foarte util atunci când aveți deja o clasă care conține 80-90% din datele și metodele necesare. Pur și simplu declarăm o clasă potrivită ca părinte a noii noastre clase. Toate datele și metodele clasei părinte devin automat parte a noii clase. Convenabil, nu?

4) Polimorfism.

Polimorfismul este un concept de programare care descrie situația în care diferite implementări sunt ascunse în spatele aceleiași interfețe. Pentru a găsi un analog în viața reală, ne putem uita la procesul de conducere a unei mașini.

Dacă o persoană poate conduce un camion, atunci el sau ea ar putea fi pusă și la volanul unei ambulanțe sau al unei mașini sport. O persoană poate conduce o mașină indiferent de ce fel de mașină este, deoarece toate au aceeași interfață de control: un volan, pedale și un schimbător de viteze. Mașinile sunt organizate diferit în interior, dar toate au aceeași interfață de control.

Revenind la programare, polimorfismul ne permite să interacționăm cu obiecte din clase diferite (de obicei cu un strămoș comun) în același mod. Semnificația acestui lucru nu poate fi subliniată prea mult. Devine mai important pe măsură ce un program crește.

OOP este principii. Legile de programare. Fiecare dintre ele ne limitează într-un fel, dar în schimb oferă avantaje uriașe pe măsură ce programele cresc. Cele patru principii ale OOP sunt ca cele patru picioare ale unui scaun. Dacă eliminați chiar și unul dintre ele, întregul sistem devine instabil.