un limbaj orientat pe obiecte este un limbaj de programare pe computer care se învârte în jurul conceptului de obiect. Au fost dezvoltate limbaje orientate pe obiecte pentru a facilita dezvoltarea, depanarea, reutilizarea și întreținerea software-ului decât este posibil cu limbile anterioare. Înțelegerea obiectelor și a limbajelor orientate pe obiecte necesită cunoașterea evoluției limbajelor de programare și a structurilor de date.
- evoluția limbajelor de programare
- limbaj de asamblare.
- limbi de ordin înalt.
- limbi structurate.
- limbaje orientate obiect.
- caracteristicile programării orientate pe obiecte
- încapsulare și ascunderea datelor.
- moștenire.
- polimorfism.
- limbaje comune orientate pe obiecte
- Smalltalk.
- C++.
- Java.
- alte limbi.
- Bibliografie
evoluția limbajelor de programare
limbajele de programare au evoluat continuu de-a lungul anilor. Această evoluție este detaliată în următoarele exemple.
limbaj de asamblare.
primele programe de calculator au fost scrise în limbaj de asamblare. Acesta este un tip primitiv de limbaj în care fiecare afirmație corespunde unei singure instrucțiuni de mașină; este cea mai de bază operație posibilă a computerului. Realizarea ceva util ia multe instrucțiuni de mașină. Limbajul de asamblare este specific unui anumit tip de computer; mutarea programului pe un alt tip de computer necesită scrierea unui program cu totul nou. Programele de limbaj de asamblare sunt dificil de scris, depanat și întreținut. Deși alte limbi sunt acum utilizate pentru majoritatea aplicațiilor informatice, limbajul de asamblare este încă folosit astăzi ca primă limbă atunci când este dezvoltat un nou cip.
limbi de ordin înalt.
după limbajul de asamblare, au fost dezvoltate limbaje de ordin superior; printre cele timpurii au fost FORTRAN și BASIC. O afirmație într-o limbă de ordin înalt corespunde unei propoziții în limba engleză. Un program numit compilator citește declarațiile dintr-un fișier sursă și generează un fișier care conține instrucțiuni de mașină, care se numește fișier obiect. Fișierul obiect poate fi apoi încărcat și executat de computer. Un limbaj de înaltă ordine este mai portabil decât un program de limbaj de asamblare; același fișier sursă poate fi compilat pentru orice computer atâta timp cât există un compilator adecvat.
limbile timpurii de ordin înalt sunt permise numai pentru tipuri de date simple, cum ar fi număr întreg, număr în virgulă mobilă sau șir (o secvență de Litere). Singura structură de date disponibilă a fost matricea. O matrice este o listă de elemente care sunt toate același tip de date; de exemplu, o listă de numere sau o listă de șiruri de caractere. O bază de date a fost creată folosind un grup de matrice. De exemplu, o bază de date de produse poate conține trei matrice numite număr Produs, Descriere produs și preț produs. Depinde de programator să mențină tablourile aliniate; de exemplu, pentru a vă asigura că al treilea element al fiecărei matrice corespunde aceluiași produs.
limbi structurate.
următorul pas în evoluția limbajelor de programare a computerului a fost dezvoltarea limbajelor structurate, cum ar fi C și PASCAL, și introducerea structurilor de date. O structură de date este un ansamblu de tipuri de date mai simple într-o singură înregistrare. De exemplu, o bază de date de produse ar putea fi construită ca o serie de înregistrări de produse, fiecare înregistrare conținând numărul produsului, Descrierea produsului și câmpurile de preț ale produsului. Acum, o înregistrare ar putea conține toate informațiile necesare despre un singur element. Structurile au devenit, de asemenea, mai definite în partea procedurală a limbii. O funcție sau o procedură este o mică parte a unui program mai mare care ar putea fi scris pentru a oferi o operație de bază pe o structură de date, cum ar fi o înregistrare.
limbaje orientate obiect.
următorul pas în evoluția limbajelor de programare a computerului, orientarea obiectului, a fost introdus în limbajul Smalltalk. Orientarea obiectului ia conceptele de programare structuratăun pas mai departe. Acum, în loc de structuri de date și structuri de program separate, atât elementele de date, cât și cele de program sunt combinate într-o singură structură numită obiect. Elementele de date obiect sunt numite atribute, în timp ce elementele de program obiect sunt numite metode. În mod colectiv, atributele și metodele sunt numite membrii obiectului. De obicei, metodele unui obiect sunt singurele programe capabile să opereze pe atributele obiectului.
cu orientarea obiectului, a apărut o schimbare fundamentală în modul în care sunt vizualizate programele. Opinia anterioară a fost că datele trebuie manipulate într-un fel pentru a obține un rezultat final, iar un program a fost privit ca un mijloc secvențial de efectuare a manipulărilor. Dintr-o perspectivă de orientare obiect, un program este privit ca un grup de obiecte care reacționează la mesajele de la utilizator, alte programe sau alte obiecte. Această viziune a dus la ideea programării bazate pe evenimente; adică. când se întâmplă evenimentul A, acest obiect efectuează acțiunea B. un mesaj este trimis unui obiect apelând una dintre metodele sale.
caracteristicile programării orientate pe obiecte
caracteristicile cheie ale programării orientate pe obiecte includ încapsularea și ascunderea datelor, moștenirea și polimorfismul.
încapsulare și ascunderea datelor.
ideea centrală în programarea orientată pe obiecte (OOP) este că atributele obiectului și metodele care operează asupra atributelor sunt legate împreună sau încapsulate în obiect. Metodele obiectului oferă singurele interfețe între obiect și alte părți ale programului. Acest lucru este diferit de limbile anterioare, în cazul în care orice parte a unui program ar putea funcționa pe orice bucată de date în orice moment. Deși acest lucru pare restrictiv, restricțiile au ca rezultat un program mai modular, care este mai ușor de dezvoltat și mai puțin probabil să conțină erori. De asemenea, înseamnă că este mai ușor să mutați un obiect într-un mediu diferit și să îl aveți în continuare să funcționeze corect.
un obiect software este oarecum similar cu un obiect fizic. De exemplu, un motor poate fi folosit pentru a alimenta o mașină. Are componente interne, corespunzătoare atributelor, dar nu trebuie să fii preocupat de ceea ce sunt sau de modul în care funcționează. Motorul trebuie să interacționeze cu clapeta de accelerație, sistemul de combustibil, transmisia, admisia și colectoarele de evacuare, toate acestea corespund metodelor. Este de neconceput ca combustibilul să intre în motor prin orice alt mijloc decât prin sistemul de alimentare cu combustibil. Atâta timp cât interfețele corecte sunt menținute, motorul va funcționa. Deci, este cu obiecte. Atributele obiectului sunt ascunse din exterior. Obiectul interacționează cu mediul său prin metodele sale.
moștenire.
un alt concept important pentru programarea orientată pe obiecte este moștenirea. O clasă de obiecte este definită într-o ierarhie și se spune că moștenește comportamentul strămoșilor săi (acele obiecte de deasupra ei în ierarhie). De exemplu, un program de desen poate include trei clase de obiecte: formă, dreptunghi și cerc. Ele ar putea fi definite astfel încât dreptunghiul și cercul să fie ambii descendenți ai formei.
forma include atribute comune oricărei forme, cum ar fi locația formei pe o suprafață de desen. Forma oferă, de asemenea, metode pentru manipularea acestor atribute. De exemplu, o metodă de mutare ar schimba locația formei. În plus, ar oferi o definiție pentru metodele la care toate formele trebuie să poată răspunde, de exemplu, o metodă de extragere pentru a afișa forma pe o suprafață de desen. Se spune că metoda de tragere în acest caz este abstractă; nu face altceva decât să creeze o cerință pe care clasele descendente trebuie să o implementeze.
deoarece dreptunghiul este descendent al formei, acesta moștenește atribute (locație) și metode (mutare) din formă. Acesta oferă atributele suplimentare de care are nevoie (lățime și înălțime) și noi metode care manipulează aceste atribute (setWidth, setHeight). Dreptunghiul trebuie să ofere, de asemenea, o metodă de tragere care pictează un dreptunghi pe suprafața desenului, deoarece fiecare descendent al formei trebuie să implementeze o metodă de tragere. De asemenea, Circle oferă un nou atribut (rază), metode de manipulare a acestuia (setRadius) și o metodă de tragere proprie.
cu acest tip de aranjament, programul Manager de desen ar avea o listă de forme pe suprafața desenului. Pentru a muta un obiect, s-ar numi metoda de mutare a obiectului. Pentru a desena un obiect, managerul apelează metoda de extragere a obiectului. Managerul nici nu știe și nici nu-i pasă cum se mișcă sau se desenează obiectul, atâta timp cât treaba se face. De fapt, este posibil să nu știe nici măcar ce fel de formă este într-adevăr un anumit obiect. Ar putea fi un dreptunghi, un cerc sau orice alt obiect descendent din formă. Trebuie doar să știe că este descendentă din formă, astfel încât să-i poată trimite orice mesaj pe care o formă îl poate primi.
capacitatea de moștenire a unui limbaj orientat pe obiecte a adăugat o dimensiune cu totul nouă programării. Învățarea unei limbi anterioare de ordin înalt a fost implicată în principal în învățarea sintaxei limbajului (modul în care sunt construite declarațiile lingvistice), ceea ce nu este atât de dificil. Într-un limbaj orientat pe obiecte, învățarea sintaxei este încă necesară, dar familiarizarea cu ierarhiile de clase standard—care pot include mii de clase, fiecare clasă cu propriile sale metode—este o sarcină mult mai mare. Merită totuși, deoarece un obiect moștenește atributele și comportamentul părintelui său. Un programator poate evita munca inutilă găsind un obiect existent care face deja cea mai mare parte a ceea ce este necesar. Apoi, noua capacitate poate fi adăugată treptat. Rezultatul este un cost mai mic, software de calitate superioară.
această caracteristică a condus, de asemenea, la includerea caracteristicilor de documentare automată în mai multe limbaje orientate pe obiecte. În limbile anterioare, documentația-dacă a fost generată deloc-a fost făcută separat, aproape ca o gândire ulterioară. Acum, informațiile despre documentație pot fi incluse în codul sursă obiect și utilizate pentru a genera automat un document Hypertext Markup Language (HTML), completat cu hyperlink-uri în sus și în jos ierarhiile de clasă, care pot fi vizualizate cu un browser de Internet. Acest lucru face mult mai ușor să mențineți o documentație precisă și actualizată.
polimorfism.
următoarea caracteristică importantă a limbajului orientat pe obiecte este polimorfismul, ceea ce înseamnă că un obiect descendent nu trebuie să răspundă la un mesaj exact ca strămoșul său. Un obiect nou poate suprascrie metodele părintelui său, ceea ce face ca noul obiect să reacționeze diferit la un mesaj. De exemplu, o clasă comună într-un sistem de ferestre este o componentă, care reprezintă un obiect vizibil. O componentă este o clasă de strămoși pentru fiecare obiect vizibil de pe ecran: pictograme, butoane, meniuri, bare de diapozitive, casete de selectare, butoane radio, chiar și ferestre. Toate aceste clase descendente suprascriu unele dintre metodele componentei de a schimba comportamentul. De exemplu, un obiect de pictogramă trebuie să se afișeze ca o imagine mică. Icon suprascrie metoda remiză Component pentru a arăta imaginea.
limbaje comune orientate pe obiecte
limbajele comune orientate pe obiecte includ Smalltalk, C, Java și alte limbi precum BASIC și PASCAL.
Smalltalk.
Smalltalk a fost limbajul original orientat pe obiecte, dezvoltat la începutul anilor 1970 de Xerox. De atunci, au fost introduse mai multe variante. Este încă utilizat, dar acceptarea pe scară largă a fost împiedicată de lipsa unui standard universal.
C++.
C+ + este o extensie a limbajului C care a furnizat capabilități OOP. Este probabil cel mai răspândit limbaj orientat pe obiecte utilizat în prezent. C este un limbaj hibrid deoarece compilează programe standard C; nu necesită utilizarea obiectelor. Acest lucru îi permite să profite de software-ul C existent, în timp ce utilizează orientarea obiectului pentru software nou. C este controlat de standardele ANSI.
Java.
Java este cel mai larg acceptat limbaj pur orientat pe obiecte. A fost dezvoltat de Sun Microsystems inițial ca un limbaj de control pentru aparatele mici. Cu toate acestea, sa dovedit ideal pentru utilizarea cu Internetul. Un applet Java poate fi încorporat într-o pagină web. Când un browser încarcă pagina web, acesta încarcă și afișează applet-ul. Sun menține în continuare un control strict al standardului lingvistic.
pentru a facilita operabilitatea cross-platform (care lucrează pe tipuri de calculatoare complet diferite, fără recompilare), Java este implementat în două părți. Compilatorul produce un fișier obiect care poate fi executat numai de o mașină virtuală Java (JVM). Un JVM separat este disponibil pentru fiecare sistem de operare acceptat (Windows, Unix/Linux sau Solaris). Acest lucru face ca programele Java să poată rula pe oricare dintre aceste sisteme fără recompilare.
alte limbi.
cele mai multe limbi utilizate în mod obișnuit astăzi permit o formă de orientare a obiectului. BASIC a evoluat în Visual Basic orientat pe obiecte; PASCAL în DELPHI orientat pe obiecte. În general, acestea sunt limbaje hibride, cum ar fi C, care acceptă orientarea obiectului fără a necesita acest lucru.
a se vedea, de asemenea, compilatoare; Mouse-ul; limbaje procedurale.
Donald M. McIver
Bibliografie
Deitel, Harvey M. și Paul J. Deitel. Java: cum se programează, ediția a 2-a. Râul șa superioară, NJ: Prentice Hall, 1998.Voss, Greg. Programare Orientată Pe Obiecte, O Introducere. New York: Osborne McGraw-Hill, 1991.