Programare orientată pe obiecte: definiție

Diversificarea domeniilor de aplicare a programării, a dat naștere la diferite tipuri de limbaje. În acest articol vom descoperi ce este programarea orientată pe obiecte și care sunt tipurile de limbaje de programare orientate obiect care există. Îndrăzniți să vă extindeți cunoștințele!

Programare orientată pe obiecte

Programare orientată pe obiecte

În general, programarea necesită cunoașterea unui limbaj însărcinat cu transmiterea comenzilor către computer și a unui algoritm convertit într-un program, dar ce este programarea?

Programarea este un set de acțiuni care conduc la scrierea unui cod, capabil să îndeplinească obiectivul pentru care a fost creat. La rândul său, a cod sursă este reprezentarea internă a unui program sau software, iar un program este un grup de ordine care guvernează funcționarea computerelor.

Practic, un program trece prin trei etape: editarea programului într-un limbaj adecvat, transformarea codului sursă în instrucțiuni pentru mașină și legarea dintre codurile obiect și bibliotecile de funcții, dând naștere, în cele din urmă, la ceea ce este cunoscut sub numele de cod executabil.

Un program trebuie scris într-un limbaj de programare care să fie înțeles de utilizator. Pentru ca acest lucru să se întâmple, programatorul trebuie să adopte una dintre numeroasele paradigme de programare existente, care determină viziunea și, prin urmare, alegerea metodelor de urmat în construcția acestora.

Paradigme de programare

Progresele în programare și tehnologie au dat naștere la diverse metodologii sau paradigme de programare. Acestea, la rândul lor, au condus la diferite stiluri de programare și la diferite forme de rezolvare a problemelor. Iată paradigmele existente:

Paradigma imperativă

Se afirmă că programele sunt o secvență strictă de instrucțiuni de sus în jos, care este întreruptă doar prin includerea unui subprogram undeva în el.

Paradigma structurată

Aplică structuri de cod grupate pe blocuri de proceduri și funcții. Codul este reprodus sub forma unei bucle, dominat de un motiv logic.

Paradigma declarativă

Nu stabilește ordinea de urmat în desfășurarea acțiunilor necesare rezolvării unei probleme. În cadrul său, se disting două tipuri: paradigma funcțională, unde problema și soluția sunt descrise ca funcții, și paradigma logică, bazată pe un predicat logic.

Paradigma de programare a evenimentelor

Se bazează pe o iterație infinită pentru a detecta problema și a stabili cum să o rezolve.

Paradigme paralele, distribuite și concurente

Realizarea programului necesită mai multe unități de calcul. Rutinele rulează independent pe alte unități de calcul.

Paradigmă orientată pe obiecte

Programare orientată pe obiecte

Acest tip de programare se bazează pe trei principii de bază: încapsularea datelor, abstractizarea obiectelor și verificarea tipului în funcție de ierarhia de clase.

Este important de reținut că un limbaj de programare nu răspunde de obicei doar la o singură paradigmă, ci poate fi rezultatul combinației mai multor tipuri de ele. Cu toate acestea, mai jos ne vom dedica în detaliu doar definirii ce este programarea orientată pe obiecte și care sunt diferitele limbaje de programare orientate obiect care există

Calități

Este cea mai răspândită paradigmă de astăzi, deoarece permite o mai bună gestionare a complexității la un cost rezonabil. Prin intermediul acestuia se propune posibilitatea construirii în piese, adică împărțirea lucrului pe componente, ceea ce duce la aplicații robuste, portabile și refolosibile, cu beneficii pe termen lung.

Spre deosebire de alte tipuri de programare, programarea orientată pe obiecte caută părți în entități care apar din domeniul problemei și nu în cadrul soluției problemei în sine. Cerința principală este ca fiecare componentă să se comporte într-un mod așteptat, astfel încât dezvoltarea noastră să nu fie afectată de modul în care este implementată și să putem cunoaște a priori condițiile oferite de fiecare componentă, precum și cum să ne conectăm. .

Programare orientată pe obiecte

Din alt punct de vedere, putem menționa că programarea orientată pe obiecte este legată de teoria cunoașterii, care afirmă că omul stochează informații în conformitate cu scheme prestabilite, produsul experiențelor sale ca persoană. În acest fel, acest tip de programare face posibilă reprezentarea cunoștințelor într-un mod euristic sau teoretic, prin schemele mentale ale individului, folosind cunoștințele anterioare stocate în unitățile de informații.

Origine

https://youtu.be/aESIbDclIzw?t=5

Programarea orientată pe obiecte este o tehnică, stil sau metodologie dezvoltată în anii 1960, ca urmare a crizei generate de imposibilitatea schimbării sau modificării programelor complexe. Situație care se înrăutățea din ce în ce mai rău din cauza lipsei de personal specializat dispus să acorde întreținere programelor.

Soluția momentană a acestei crize a fost în mâinile programării structurate, care a constat în descompunerea programelor în proceduri individuale care ar îndeplini sarcini specifice separat. Acest lucru a adus cu sine alte dezavantaje, generate în principal de cât de dificilă a fost realizarea unei coordonări între numeroșii dezvoltatori implicați într-un proiect, întrucât cu cât este mai mare numărul de sarcini implicate, cu atât este mai mare numărul de programatori.

Fără îndoială, principalul dezavantaj al acestui tip de programare a fost necesitatea separării conceptuale a datelor de coduri. O situație care a fost înrăutățită direct de dimensiunea și complexitatea programului.

Astfel, pentru a reduce complexitatea programelor, s-a născut programarea orientată pe obiecte. Principalul său avantaj este că face posibilă construirea de programe complexe folosind obiecte mai simple. Aceste obiecte alcătuiesc entitățile software-ului orientate sub această metodologie. Capacitatea de a moșteni atât date, cât și cod de la aplicațiile existente îmbunătățește productivitatea dezvoltatorului. La fel, face mai ușoară extinderea și refolosirea claselor în alte aplicații, fără a fi nevoie să modificați foarte mult codul original.

caracteristici

Programarea orientată pe obiecte are mai multe calități, iată principalele:

  • Baza programării orientate obiect este clasele, nu algoritmii. Acestea alcătuiesc blocuri logice.
  • Fiecare obiect este o instanță a unei clase.
  • Un program este perceput ca un mijloc de a trimite și primi mesaje, printr-un set de obiecte care reacționează unul la altul.
  • Fiecare obiect trebuie să caute cel mai bun mod de a răspunde la fiecare mesaj primit.
  • Fiecare obiect poate răspunde la mesaje în moduri diferite.
  • Facilitează schimbarea software-ului, deoarece componentele sunt interschimbabile.
  • Modificările parțiale și interne nu afectează comportamentul restului sistemului.
  • Dacă se respectă principiile de bază ale programării orientate pe obiecte, costul construirii sistemului va fi mai mic decât în ​​cazurile în care părțile sunt interdependente.
  • Este posibil ca clasele derivate de la alții să moștenească cunoștințele și abilitățile predecesorilor lor. Prin moștenire, clasele sunt legate între ele, iar modul de lucru este exploatat fără a fi nevoie să rescrieți codul.
  • Metodele unei clase pot face lucruri diferite, chiar dacă păstrează același nume. Adică, prin polimorfism, programatorul poate implementa mai multe forme ale aceleiași metode, în funcție de clasa pe care se face implementarea. Aceasta înseamnă că mai multe metode pot fi accesate cu același nume sau mediu de acces.

Diferențe: programare structurată vs. Programare orientată pe obiecte

După cum am menționat deja, programarea orientată pe obiecte reprezintă evoluția programării structurate, ceea ce nu înseamnă că este mai bună decât ea, deoarece fiecare are utilitatea sa în funcție de tipul de sistem care va fi dezvoltat. Diferențele de bază care există între cele două sunt stabilite mai jos:

Programarea structurată rezolvă probleme algoritmice, începând de la introducerea unor date, se generează o ieșire. Programarea orientată pe obiecte se bazează pe modelarea obiectelor, foarte utilă în dezvoltarea de aplicații web.

Primul se concentrează pe o structură de date, în timp ce al doilea se bazează pe obiecte, cu propria stare și comportament.

Informațiile din cadrul programării structurate circulă prin structuri și apeluri către funcții, în programarea orientată obiect este rezultatul interacțiunii dintre ele, prin trimiterea și primirea de mesaje.

Principii de bază

Ca o consecință a conceptului de programare orientată pe obiecte, apar trei principii de bază ale acestei paradigme. Acestea sunt:

Incapsularea datelor

După cum am menționat deja, se așteaptă ca obiectele să știe cum să răspundă la mesajele pe care le primesc, arătând un comportament specific. Cu toate acestea, ceea ce nu vrem este ca oricine trimite mesajul să știe cum o face. Realizarea acestui obiectiv este ceea ce se numește încapsularea datelor. Cu alte cuvinte, ceea ce doriți este ca fiecare parte a programului să știe doar ceea ce îl interesează, evitând astfel efectele colaterale legate de alte obiecte.

Pe scurt, odată cu încapsularea datelor, accesul la componentele obiectelor este imposibil, adică acestea sunt protejate într-o singură unitate de programare bine definită, deoarece fiecare dintre ele are specificații de proiectare care le fac independente una de cealaltă.

Principalul motiv pentru care ne-am putea dori ca obiectul client să nu cunoască modul de implementare este că, în general, pot exista mai multe alternative pentru aceeași operație. În plus, în viitor, am putea decide să trecem de la o alternativă la alta, fără ca clientul să știe sau să vadă afectată furnizarea serviciului.

Abstracția obiectului

O caracteristică esențială a programării orientate pe obiecte este că încearcă să atace problema în părți. În acest fel, primul lucru pe care îl face este să găsească obiectele, apoi să determine cum ar trebui să interacționeze și, în cele din urmă, să își pună în aplicare comportamentul. În consecință, considerăm că obiectele pe care le găsim sunt cele care ne vor ajuta să rezolvăm problema.

Abstracția implică două tipuri de cunoștințe, date sau variabile, care constituie schema mentală și metode, funcții sau proceduri, care leagă respectiva schemă de alte scheme predeterminate. Adică, datorită abstractizării datelor, domeniul și structura datelor pot fi definite, precum și metodele de accesare a acestora. În cele din urmă, abstractizarea devine un nou tip de date definit de programator, alcătuit din atribute și metode care sunt aplicate primului.

Datorită existenței mai multor scheme mentale pentru aceeași problemă, fiecare programator poate organiza cursurile în moduri diferite, în funcție de percepția sa personală. Ceea ce vrea să spună este că abstractizarea obiectelor este capacitatea din cadrul proiectării programului de a crea date definite de utilizator.

Tastați verificarea în funcție de ierarhia clasei

Acesta este momentul în care alegeți limba pentru efectuarea verificărilor de tip. Există limbi care decid să o facă în timpul compilării, iar altele în timpul execuției. Alte limbi nici măcar nu se compilează, ceea ce nu vă oferă posibilitatea de a face verificări de niciun fel, până la runtime.

Când verificarea se face în timpul rulării, se numește verificare dinamică. Spre deosebire, atunci când se realizează la compilare, se numește verificare statică.

Datorită faptului că în verificarea statică erorile apar de la început, fără a ajunge la momentul execuției, se spune adesea că acest tip de verificare este mai sigur. Cu toate acestea, testarea dinamică permite implementări parțiale, fără a fi nevoie să rescrieți în mod repetat codul.

Cum funcționează?

Primul pas pentru a rezolva o problemă în cadrul acestei paradigme este de a găsi obiectele sau entitățile din domeniul problemei. Apoi, este necesar să se găsească modul în care aceste entități interacționează pentru a rezolva problema, stabilind mesajele pe care obiectele le transmit, în ce ordine și în ce condiții o fac. În cele din urmă, trebuie să implementați comportamentul obiectelor, referindu-vă la răspunsul pe care îl dau cu privire la mesaje.

Pe scurt, atunci când un program este executat în conformitate cu paradigma de programare orientată pe obiecte, se întâmplă trei lucruri: obiectele sunt create după cum este necesar, mesajele curg de la un obiect la altul paralel cu procesarea informațiilor de către program și când obiectele nu mai sunt necesare, sunt șterse pentru a elibera memoria în sistem.

Concepte cheie

Pentru a înțelege ceva mai mult despre ce este programarea orientată pe obiecte, trebuie să menționăm următoarele concepte de bază:

  • Obiect: Se referă la entitatea care poate fi destinatarul mesajelor, în timp ce poate răspunde la acestea și trimite mesaje către alte obiecte. Este entitatea care are un comportament.
  • Identitate: Este aspectul care distinge un obiect de altul.
  • Mesaj: Aceasta este interacțiunea rezultată între o entitate care solicită un serviciu și alta care îl furnizează.
  • Obiectul clientului: este cel care trimite mesajul.
  • Obiect receptor: este obiectul care primește mesajul.
  • Delegare: Referindu-se la trimiterea de mesaje de la un obiect către alte obiecte. Când un obiect are nevoie de colaborarea altora pentru a putea răspunde la mesaje.
  • Comportament: Sunt răspunsurile la mesajele primite de un obiect receptor.
  • Stare: Referit la situația actuală a fiecărui obiect.
  • Responsabilitate: Este interacțiunea dintre stare și comportamentul unui obiect.
  • Metodă: Se referă la implementarea răspunsului dat de un obiect la un mesaj primit.
  • Polimorfism: Aceasta este capacitatea unor obiecte de a răspunde la același mesaj, dar în mai multe moduri diferite.
  • Clase: Sunt seturi de obiecte care se comportă în același mod. Acestea pot fi definite de programator. Sunt scheme mentale care permit ca obiectele să fie abstractizate și să determine cum să se relaționeze între ele.
  • Atribut: Se referă la o variabilă internă a obiectului creat pentru a stoca o parte din starea sa.
  • Contract: se referă la cunoașterea a ceea ce oferă fiecare componentă și la modul de conectare cu aceasta.

Depanare bazată pe programare orientată obiect

Odată ce problema a fost identificată și este propusă soluția posibilă, este necesar să o transcrieți într-un limbaj de programare, astfel încât să poată fi executat de un computer, prin utilizarea unui program. Conform metodologiei programării orientate pe obiecte, sunt definite următoarele etape:

  • Definiția programului: tratează descrierea schematică a problemei, într-un mod clar, ușor de înțeles și bine definit. Aceasta implică identificarea originii și a aspectului datelor care urmează să fie prelucrate, precum și descrierea rezultatelor și modul în care acestea vor fi prezentate.
  • Analiză și proiectare orientată pe obiecte: se referă la identificarea și descrierea obiectelor din domeniul problemei. După care se stabilesc atributele, relațiile și metodele de urmat, aceasta pentru a defini clasele care vor fi implementate într-un limbaj de programare specific.
  • Programare: Practic, se referă la transcrierea programului, care include scrierea corectă a codului într-un limbaj de programare, utilizând un stil de dezvoltare capabil să garanteze calitatea produsului, ceea ce va determina rezolvarea corectă a problemei. Această etapă implică construirea algoritmilor, elaborarea diagramelor de flux și programarea finală, parcurgerea testelor desktop, codarea, compilarea și execuția programului.
  • Documentare: implică descrierea secvenței de pași necesari pentru a ajunge la rezolvarea unei probleme. Aceasta implică încorporarea liniilor de comentarii care clarifică sau explică semnificația liniilor de cod care ar putea fi confuze, în special cele referitoare la identificatori și structuri de date declarate, structuri și metode de control și parametrii acestora. Această etapă este esențială pentru succesul produsului final, deoarece dacă documentația eșuează, programele sunt greu de citit și depanat și, cu atât mai mult, modificarea și întreținerea lor devine aproape imposibilă.

Într-un alt sens, putem spune că funcționalitatea limbajelor de programare a crescut de-a lungul anilor, în principal datorită apariției unor noi și variate domenii de aplicare. Deși este adevărat că la început aceste limbi erau utilizate, practic, pentru a gestiona cantități mari de date și pentru a efectua anumite calcule numerice.

Acum, limbajele de programare sunt utilizate aproape în orice domeniu al societății, care include managementul bazelor de date, generarea imaginilor și chiar inteligența artificială, printre multe alte aspecte.

În principal, nașterea noilor tehnologii de inginerie software a provocat creșterea limbajelor de programare pe care le vom vedea mai jos.

Limbaje de programare orientate obiect

Sunt limbi concepute pentru a integra date și applet-uri în clase. Acestea pot moșteni proprietățile altor coduri transformate și pot da naștere la noi caracteristici, care conduc, de asemenea, la o nouă metodologie de programare.

Clasificare

După cum vom vedea mai târziu, există mai multe limbaje de programare care răspund la paradigma orientată obiect. În funcție de modul lor de implementare, acestea sunt clasificate ca:

  • Pe măsură ce implementează comportamentul: acoperă limbajele care se bazează pe clase și pe prototipuri sau exemple.
  • Pe măsură ce implementează crearea obiectelor: se bazează pe timpul de execuție din zona de memorie dinamică sau timpul de compilare al stivei.
  • În funcție de verificarea tipului: se referă la verificarea în timp de compilare sau verificarea în timp de execuție.

Printre principalele limbaje orientate pe obiecte avem:

ce-este-programare-orientată-obiect

Vorbă mică

Poate fi programat numai sub paradigma programării orientate pe obiecte. Este un limbaj bazat pe clase, care proiectează obiecte în zona de memorie dinamică în timpul rulării. Face doar verificări de tip la runtime, adică este un limbaj de verificare dinamică.

Java

Este una dintre cele mai utilizate limbi astăzi, este complet orientată obiect, cu sintaxă similară cu C și C ++. Este independent de platformă.

La fel ca Smalltalk, este un limbaj bazat pe clase, care creează obiectele din zona de memorie dinamică la rulare, dar nu face verificări de tip la rulare, ci mai degrabă la compilare, cu diferența că creează un cod intermediar neexecutabil , provenind dintr-o precompilare. Acest lucru îl face un limbaj de verificare static.

Programare Java orientată obiect rulează pe o mașină virtuală specializată în acest tip de limbaj, care funcționează ca și cum ar fi un computer și, prin urmare, permite executarea lor fără a fi nevoie să le modificați. Acest tip de mașină este ceea ce se numește interpret.

Programare orientată pe obiecte

JavaScript

Spre deosebire de Smalltalk și Java, este un limbaj care se bazează pe prototipuri sau exemple. Este interpretat și fără tipuri, adică nu efectuează verificări de tip nici în timpul rulării, nici în timpul compilării. Creează obiecte în zona de memorie dinamică în timpul rulării. Deoarece lipsește compilarea, devine un limbaj verificat dinamic.

Este un limbaj puternic, datorită portabilității și integrării sale, precum și tehnicilor sale standard și simple de programare. Cu alte cuvinte, JavaScript este un cod încorporat într-o pagină web, al cărei scop este de a îmbunătăți dinamismul acelei pagini.

C ++

Constituie o creștere a limbajului tradițional C, prin absorbția beneficiilor acestui limbaj și prin încorporarea suporturilor pentru obiecte. Deși cuprinde trei paradigme de programare diferite, cum ar fi: programarea structurată, programarea generică și programarea orientată pe obiecte, el a condus tranziția de la paradigma structurată la paradigma orientată obiect.

Este un limbaj versatil, utilizat foarte frecvent în rândul programatorilor de aplicații, atât în ​​Windows, cât și în GNU Linux. Creează obiecte în memoria dinamică în timpul rulării. Se concentrează practic pe performanță, portabilitate și abstractizare. Principalul său dezavantaj este că la compilare se generează un fișier executabil al cărui cod este valabil numai pentru platforma pe care a fost realizată compilarea. Pe de altă parte, fiind un limbaj executabil, nu este independent de platformă.

C#

Este un limbaj de programare care rulează la runtime și este inclus în platforma .NET, care vă permite să partajați și să vă recunoașteți bibliotecile. Este orientat în totalitate obiect, permite crearea de tot felul de aplicații.

Constituie o evoluție a limbajelor C și C ++, eliminând complexitatea acestora din urmă, deoarece este mai ușor de utilizat și reduce marja de eroare în timpul funcționării sale, datorită acceptării precompilării.

Programare orientată pe obiecte

Piton

Este un limbaj multiplatform, în principal orientat pe obiecte, dar cuprinde alte paradigme, cum ar fi programarea imperativă, programarea funcțională și programarea orientată pe aspect.

Sintaxa sa curată, foarte apropiată de limbajul natural, favorizează citirea codului său. Este foarte recomandat să începeți în lumea programării.

Se execută printr-un program intermediar, adică printr-un interpret. Deoarece este un limbaj semi-interpretat, este flexibil și portabil. Este tastat dinamic, ceea ce înseamnă că tipul de date este determinat în timpul rulării.

Pascal

În prezent, este limbajul folosit prin excelență în predarea programării. Are o sintaxă simplă, cu un limbaj foarte structurat, care facilitează citirea și interpretarea programelor. Compilarea sa se poate face pe orice mașină care are un compilator Pascal.

Deși este un limbaj structurat, permite programarea orientată pe obiecte prin versiunea sa Turbo Pascal. Are un mediu integrat, din care este posibil să scrieți programele și să le testați. În cele din urmă, Pascal este un limbaj de uz general.

Dacă subiectul care vă interesează este legat de programare, vă invit să citiți Ce este un algoritm în programare?