Ce este programarea orientată pe obiecte? Elementele de bază sunt explicate în termenii lui Layman
Dacă ați făcut o programare pentru începători sau chiar ați început să vă uitați la diferite limbi, ați întâmpinat probabil fraza “programare orientată pe obiecte” (sau “OOP”).
Există tot felul de explicații tehnice cu privire la ceea ce este, dar astăzi vom examina definirea programării orientate obiect într-un mod simplu.
Înainte de a începe: Limbi procedurale
Pentru a înțelege ce este un limbaj de programare orientat pe obiecte, trebuie să înțelegeți ce a înlocuit. Limbile de programare precoce au fost procedurale așa-numite, deoarece programatorul ar defini un set foarte specific de proceduri pe care calculatorul le-ar întreprinde.
În primele zile, procedurile au fost scrise pe cărți cu pumn. Acești pași au preluat date, au efectuat o serie de acțiuni asupra acelor date, apoi au introdus date noi.
Limbile de procedură au funcționat bine pentru o perioadă (și unele sunt încă în uz). Dar când doriți să programați ceva dincolo de o secvență de pași de bază, limbile de procedură pot deveni dificil de gestionat. Aici intră programul de orientare orientat-obiect.
Obiectul programării orientate pe obiecte
Deci, atunci, ce este programarea orientată pe obiect?
Primul limbaj orientat pe obiecte (în general convenit să fie Simula) a introdus ideea de obiecte. Obiectele sunt colecții de informații care sunt tratate ca entități singulare.
Ne vom arunca mai adânc în ceea ce înseamnă, într-o secundă, un exemplu, dar mai întâi trebuie să vorbim clase. Clasele sunt un fel de pre-obiecte. Ele conțin o listă de atribute care, atunci când sunt definite, devin un obiect.
Să luăm exemplul programării unui joc de șah. S-ar putea să avem o clasă numită Piece. În cadrul Piece, avem o listă de atribute:
- Culoare
- Înălţime
- Formă
- Mișcarea permisă
Un obiect definește pur și simplu o anumită instanță a unui lucru care aparține acelei clase.
Așadar, am putea avea un obiect numit WhiteQueen. Acest obiect ar avea definiții pentru toate cele patru atribute (alb, înalt, cilindric cu crenelări, orice număr de spații în orice direcție). S-ar putea să aibă și metode sau funcții.
Ceea ce face acest lucru mult mai bine decât abordarea procedurală?
Pe scurt, limbajele de programare orientate pe obiecte (cum ar fi Java) facilitează organizarea datelor și a codului într-un mod mai versatil pentru un proiect mai mare.
Pentru a discuta detaliat, vom vorbi despre cele patru elemente de bază ale programării orientate pe obiecte.
Programarea orientată pe obiecte: Abstractizare
Doar pentru că vrei să folosești ceva nu înseamnă că trebuie să știi cum funcționează. O mașină de espresso, de exemplu, este complexă. Dar nu trebuie să știți cum funcționează. Trebuie doar să știi asta când te-ai lovit “Pe,” vei primi espresso.
Același lucru este valabil și pentru obiectele din programarea orientată obiect. În exemplul nostru de șah, este posibil să avem o metodă move (). Această metodă ar putea necesita o mulțime de date și alte metode. S-ar putea să fie nevoie de poziția inițială și variabilele poziției finale. Ar putea folosi o altă metodă pentru a determina dacă a fost capturată o piesă.
Dar nu trebuie să știi asta. Tot ce trebuie să știți este că atunci când spuneți piesei să se miște, se mișcă. Asta e abstractizarea.
Programarea orientată pe obiecte: încapsulare
Encapsularea este una dintre modalitățile prin care programarea orientată obiect creează abstractizare. Fiecare obiect este o colecție de date care este tratată ca o singură entitate. Și în cadrul acestor obiecte există date - atât variabile cât și metode.
Variabilele dintr-un obiect sunt, în general, păstrate private, ceea ce înseamnă că alte obiecte și metode nu le pot accesa. Obiectele pot fi afectate numai prin utilizarea metodelor lor.
Un obiect Bishop poate conține mai multe informații. De exemplu, ar putea avea o variabilă numită “poziţie.” Această variabilă este necesară pentru utilizarea metodei move (). Și, desigur, are o culoare.
Prin transformarea variabilei de poziție privată și a metodei move () public, un programator protejează variabila de mișcare de a fi afectată de orice altceva. Și dacă culoarea este o variabilă privată, nu există nicio modalitate pentru al modifica alt obiect dacă nu există o metodă care să permită modificarea. (Pe care probabil nu l-ați avea, deoarece culoarea piesei ar trebui să rămână constantă).
Aceste variabile și metode sunt păstrate în obiectul Bishop. Deoarece sunt încapsulate, un programator ar putea schimba structura sau conținutul obiectului fără să se preocupe de interfața publică.
Object-Oriented Programming: Moștenire
În plus față de clase, limbile de programare orientate obiect au, de asemenea, subclase. Acestea conțin toate atributele din clasa părinte, dar pot conține și alte atribute.
În jocul nostru de șah, piesele de pioni au nevoie de o metodă care să le poată transforma în alte piese dacă ajung la sfârșitul tabloului. O vom numi metoda transformPiece ().
Nu fiecare piesă are nevoie de metoda transformPiece (). Așa că nu vrem să o punem în clasa Piece. În schimb, putem crea o sub-clasă numită Pion. Pentru că este o subclasă, ea moștenește toate atributele de la Piece. Deci, un exemplu al pionului subclass include o culoare, o înălțime, o formă și o mișcare permisă.
Dar include, de asemenea, metoda transformPiece (). Acum nu trebuie niciodată să ne facem griji cu privire la folosirea accidentală a acestei funcții pe un vârf. Iată o explicație tehnică:
Crearea de subclase economisește și o mulțime de timp. În loc să creeze noi clase pentru totul, programatorii pot crea o clasă de bază și apoi să o extindă la noi sub-clase atunci când au nevoie. (Cu toate acestea, merită remarcat faptul că supra-dependența de moștenire este rău 10 Principii de bază de programare Fiecare programator trebuie să urmeze 10 principii de bază de programare Fiecare programator trebuie să urmeze Întotdeauna scrie cod care pot fi întreținute de oricine care ar putea ajunge să lucreze la software-ul dvs. la sfârșit, aici sunt câteva principii de programare care vă ajută să vă curățați actul.
Object-Oriented Programming: Polimorfism
Polimorfismul este rezultatul moștenirii. Înțelegerea pe deplin a polimorfismului are nevoie de cunoștințe de programare, așa că vom rămâne doar la elementele de bază aici. Pe scurt, polimorfismul permite programatorilor să utilizeze metode de același nume, dar cu obiecte diferite.
De exemplu, clasa noastră Piece poate avea o metodă move () care mișcă o piesă un spațiu în orice direcție. Asta merge pentru bucata regelui, dar nu pentru nimic altceva. Pentru a rezolva această problemă, putem defini o nouă metodă move () în subclasa Rook care definește mișcarea ca un număr nelimitat de spații înainte, înapoi, stânga sau dreapta.
Acum, când un programator invocă metoda move () și folosește o piesă ca argument, programul va ști exact cum trebuie să se miște piesa. Acest lucru economisește o tona de timp peste încercarea de a afla care dintre cele mai multe metode diferite ar trebui să utilizați.
Programarea orientată pe obiecte pe scurt
Dacă capul tău se rotește puțin după ultimele patru definiții, nu-ți face griji prea mult. Iată principalele lucruri pe care trebuie să le ții minte:
- Programarea orientată pe obiecte colectează informații în entități singulare numite obiecte.
- Fiecare obiect este o singură instanță a unei clase.
- Abstracția ascunde operațiunile interioare ale unui obiect atunci când nu este necesar să le vedeți.
- Incapsularea stochează variabilele și metodele legate de obiecte și le protejează.
- Moștenirea permite subclaselor să utilizeze atributele din clasele părinte.
- Polimorfismul permite obiectelor și metodelor să se ocupe de mai multe situații diferite cu o singură interfață.
Dacă vă amintiți acele puncte, veți avea un mâner bun în ceea ce privește programarea orientată spre obiect. Cele patru elemente de bază ale programării orientate pe obiecte, așa cum am menționat, pot fi un pic dificil pentru a obține un mâner. Dar odată ce începeți programarea, acestea vor deveni mai clare.
Amintiți-vă că am discutat numai despre generalități în acest articol. Diferite limbi orientate pe obiecte vor avea propriile lor ciudățenii și modalități de a face lucrurile să se întâmple. Odată ce ați ales limba potrivită pentru dvs. Căutați cele mai bune limbi de programare? Începe aici! Căutați cele mai bune limbi de programare? Începe aici! Indiferent dacă sunteți complet nou în limbile de programare sau căutați să intrați într-un nou tip de programare, una dintre cele mai importante întrebări pe care trebuie să le întrebați este: "Ce limbă de programare este potrivită pentru mine?" Citiți mai multe, veți începe să aflați cum se aplică principiile OOP în practică.
Explorați mai multe despre: Tutoriale de codificare, Programare orientată pe obiecte.