Programare orientată pe obiecte

Programarea orientată pe obiecte (OOP) este un mod de a scrie programe de calculator care utilizează ideea de "obiecte" pentru a reprezenta date și metode. De obicei, programele de calculator erau doar o listă de instrucțiuni adresate computerului, care îi spuneau acestuia să facă anumite lucruri într-un anumit mod, ceea ce se numește programare procedurală. Cu toate acestea, în programarea orientată pe obiecte, programele de calculator folosesc obiecte care vorbesc între ele și care modifică datele din aceste obiecte, pentru a funcționa în modul dorit de utilizator. De asemenea, datorită modului în care este concepută programarea orientată pe obiecte, aceasta îl ajută pe dezvoltator, permițând reutilizarea cu ușurință a codului în alte părți ale programului sau chiar de către alte persoane.

Cele mai multe limbaje de programare sunt un amestec de diferite tipuri de moduri de a scrie programe de calculator. De exemplu, Python permite scrierea de programe de calculator atât în programare orientată pe obiecte, cât și în programare procedurală. Există multe limbaje de programare care permit scrierea programelor de calculator în OOP, Unele dintre aceste limbaje de programare sunt, de exemplu: C++, Java, Ruby, Ruby, Perl, Emarald, Sapphire, PHP, Python etc.

Caracteristici

Ideea principală a programării orientate pe obiecte este că totul este un obiect. Cu toate acestea, obiectul poate fi de diferite tipuri:

  • Variabilele pot conține informații (sau date) de diferite tipuri care sunt acceptate de limbajul de programare. Exemple sunt tipul de date numere întregi și structura de date liste. Variabilele reprezintă o idee care este deja disponibilă în limbajele de programare procedurale. În programarea orientată pe obiecte, variabilele sunt cunoscute în principal sub denumirea de atribute.
  • Procedurile (cunoscute și sub numele de funcții, metode sau rutine) reprezintă o listă de instrucțiuni care îi spun calculatorului să primească date de intrare, să efectueze anumite calcule sau să modifice date și să returneze datele de ieșire către utilizator. Procedurile reprezintă, de asemenea, o idee deja disponibilă în limbajele de programare procedurală. În programarea orientată pe obiecte, procedurile sunt cunoscute în principal sub denumirea de metode.
  • Clasele sunt o colecție de variabile și proceduri diferite. De obicei, clasele comunică între ele pentru a efectua modificări ale datelor și pentru a funcționa în modul dorit de utilizator.

Obiecte este un termen utilizat pentru a se referi la instanțele claselor.

Exemple

În exemplele de mai jos, vom crea o clasă numită Human. Această clasă conține atributele name (pentru numele persoanei) și friend (pentru numele prietenului). Fiecare dintre metodele din clasa Human conține o listă de instrucțiuni care utilizează atât atributele name, cât și friend.

Python

Acest cod este în Python.

class Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("Numele meu este "+self. name) def say_goodnight(self): if self. friend is None: print("Good night nobody.") else: print("Good night "+self. friend. name) # Creează un nou obiect uman numit stephen cu numele "Stephen" stephen = Human("Stephen") # Creează un nou obiect uman numit joe cu numele "Joe" și cu stephen ca prieten joe = Human("Joe", stephen) stephen. say_name() # Afișează "Numele meu este Stephen" stephen. say_goodnight() # Afișează "Noapte bună, nimeni" joe. say_name() # Afișează "Numele meu este Joe" joe. say_goodnight() # Afișează "Noapte bună, Stephen".

Java

Acest cod este în Java.

Clasa umană

class Human { private String name = "unnamed"; // numele acestui om private Human friend = null; // prietenul omului // Această metodă creează un nou obiect Human atunci când i se dau numele și prietenul public Human(String name, Human friend) { this. name = name; this. friend = friend; }      // Această metodă creează, de asemenea, un nou obiect Human atunci când i se dă doar numele public Human(String name) { this. name = name; this. friend = null; }      // Această metodă creează un nou obiect Human atunci când nu i se dă atât numele, cât și prietenul public Human() { this. name = "unnamed"; this. friend = null; } public void sayName() { System. out. println("Numele meu este " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Noapte bună, nimeni."); } else { System. out. println("Noapte bună " + friend. name); } }     } }

O metodă pentru a vorbi cu clasa Human de mai sus

class Main { public static void main(String[] args) { // Creați un nou obiect uman stephen cu numele "Stephen" Human stephen = new Human("Stephen"); // Creați un nou obiect uman joe cu numele "Joe" și stephen ca prieten Human joe = new Human("Joe", stephen); stephen. sayName(); // Afișează "Numele meu este Stephen" stephen. sayGoodnight(); // Afișează "Noapte bună, nimeni." joe. sayName(); // Afișează "Numele meu este Joe" joe. sayGoodnight(); // Afișează "Noapte bună, Stephen" } }

Critică

Chiar dacă programarea orientată pe obiecte este populară, există mulți oameni care cred că este rea și o critică.

  • Luca Cardelli a scris o lucrare intitulată "Bad Engineering Properties of Object-Oriented Languages".
  • Richard Stallman a scris în 1995: "Adăugarea OOP la Emacs nu este în mod clar o îmbunătățire; am folosit OOP când am lucrat la sistemele de ferestre Lisp Machine și nu sunt de acord cu opinia obișnuită că este un mod superior de a programa."
  • Un studiu realizat de Potok et al. ne spune că există o diferență foarte mică de productivitate între abordările OOP și cele procedurale.
  • Christopher J. Date a declarat că este dificil să compari OOP cu alte lucruri, în special modul în care OOP și celălalt lucru sunt legate, deoarece oamenii nu sunt de acord asupra semnificației OOP.
  • Alexander Stepanov a sugerat că OOP oferă un punct de vedere limitat în ceea ce privește matematica și a numit-o "aproape la fel de mult ca o farsă ca și Inteligența Artificială".
  • Paul Graham, un programator și vânzător de succes pe internet, a sugerat că scopul OOP este de a acționa ca un mecanism de pază care îi împiedică pe programatorii obișnuiți din organizațiile obișnuite să "facă prea mult rău". Acest lucru îi încetinește, de asemenea, pe programatorii mai rapizi și mai buni care știu cum să facă lucrurile într-un mod mai puternic și mai compact... [1]

Întrebări și răspunsuri

Î: Ce este programarea orientată pe obiecte?


R: Programarea orientată pe obiecte este un mod de a scrie programe de calculator folosind "obiecte" pentru a reprezenta date și metode.

Î: Prin ce se deosebește programarea orientată pe obiecte de programarea procedurală?


R: În programarea procedurală, programele de calculator sunt o listă de instrucțiuni pentru calculator, care îi spun acestuia să facă anumite lucruri într-un anumit mod. În programarea orientată pe obiecte, programele de calculator folosesc obiecte care comunică între ele pentru a modifica datele din aceste obiecte și pentru a funcționa în modul dorit de utilizator.

Î: Ce beneficii aduce programarea orientată pe obiecte dezvoltatorilor?


R: Programarea orientată pe obiecte permite reutilizarea cu ușurință a codului de către alte părți ale programului sau chiar de către alte persoane.

Î: Pentru ce este cunoscut limbajul de programare Python?


R: Python permite scrierea de programe de calculator atât în programare orientată pe obiecte, cât și în programare procedurală.

Î: Puteți da exemple de limbaje de programare care permit scrierea de programe de calculator în programare orientată pe obiecte?


R: Printre limbajele de programare care permit scrierea de programe de calculator în programare orientată pe obiecte se numără C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C# etc.

Î: Ce sunt obiectele în programarea orientată pe obiecte?


R: Obiectele sunt entități în programarea orientată pe obiecte care conțin date și metode.

Î: Cum funcționează obiectele în programarea orientată pe obiecte?


R: Obiectele interacționează unele cu altele pentru a modifica datele din acele obiecte și pentru a funcționa într-un mod dorit de utilizator.

AlegsaOnline.com - 2020 / 2023 - License CC3