Обектно-ориентирано програмиране

Обектно-ориентираното програмиране (ООП) е начин на писане на компютърни програми, при който се използва идеята за "обекти" за представяне на данни и методи. Обикновено компютърните програми са просто списък от инструкции към компютъра, които му казват да прави определени неща по определен начин, което се нарича процедурно програмиране. При обектно-ориентираното програмиране обаче компютърните програми използват обекти, които разговарят помежду си, и променят данните в тези обекти, за да работят по начин, който потребителят иска. Освен това, поради начина, по който е проектирано обектно-ориентираното програмиране, то помага на разработчика, като позволява кодът да бъде лесно използван повторно в други части на програмата или дори от други хора.

Повечето езици за програмиране са смесица от различни видове начини за писане на компютърни програми. Например Python позволява компютърните програми да се пишат както по метода на обектно-ориентираното програмиране, така и по метода на процедурното програмиране. Съществуват много езици за програмиране, които позволяват да се пишат компютърни програми в ООП, Някои от тези езици за програмиране са, например: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python и др.

Функции

Основната идея на обектно-ориентираното програмиране е, че всичко е обект. Обектът обаче може да бъде от различен тип:

  • Променливите могат да съдържат информация (или данни) от различни типове, които се поддържат от езика за програмиране. Примери за това са целочисленият тип данни и структурата от данни списъци. Променливите са идея, която вече е налична в процедурните езици за програмиране. В обектно-ориентираното програмиране променливите са известни главно като атрибути.
  • Процедурите (известни също като функции, методи или рутинни процедури) са списък от инструкции, които указват на компютъра да приеме входни данни, да извърши някои изчисления или да промени данни и да върне изходни данни на потребителя. Процедурите също са идея, която вече е налична в процедурните езици за програмиране. В обектно-ориентираното програмиране процедурите са известни главно като методи.
  • Класовете представляват колекция от различни променливи и процедури. Класовете обикновено разговарят помежду си, за да правят промени в данните, така че да работят по желания от потребителя начин.

Обекти е термин, който се използва за обозначаване на екземпляри на класове.

Примери

В примерите по-долу създаваме клас, наречен Human. Този клас съдържа атрибутите name (за името на човека) и friend (за името на приятеля). Всеки от методите в класа Human съдържа списък от инструкции, който използва атрибутите name и friend.

Python

Този код е на езика Python.

class Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("Моето име е "+self. name) def say_goodnight(self): if self. friend is None: print("Лека нощ, никой.") else: print("Лека нощ "+self. friend. Създаване на нов човешки обект на име stephen с име "Stephen" stephen = Human("Stephen") # Създаване на нов човешки обект на име joe с име "Joe" и stephen като приятел joe = Human("Joe", stephen) stephen. say_name() # Показва "Моето име е Stephen" stephen. say_goodnight() # Показва "Лека нощ, никой" joe. say_name() # Показва "Моето име е Joe" joe. say_goodnight() # Показва "Лека нощ, Stephen

Java

Този код е на Java.

Класът Човек

class Human { private String name = "unnamed"; // името на този човек private Human friend = null; // приятелят на човека // Този метод създава нов обект Human, когато му бъдат зададени името и приятелят public Human(String name, Human friend) { this. name = name; this. friend = friend; }      // Този метод също така създава нов обект Човек, когато е дадено само името public Human(String name) { this. name = name; this. friend = null; }      // Този метод създава нов човешки обект, когато не са дадени и името, и приятелят public Human() { this. name = "unnamed"; this. friend = null; } public void sayName() { System. out. println("Моето име е " + this. name); } public void sayGoodnight() { if (friend == null) { System. out. println("Лека нощ, никой."); } else { System. out. println("Лека нощ " + friend. name); }     } }

Метод за връзка с класа Human по-горе

class Main { public static void main(String[] args) { // Създаване на нов човешки обект stephen с име "Stephen" Human stephen = new Human("Stephen"); // Създаване на нов човешки обект joe с име "Joe" и stephen като приятел Human joe = new Human("Joe", stephen); stephen. sayName(); // Показва "Моето име е Стивън" stephen. sayGoodnight(); // Показва "Лека нощ, никой." joe. sayName(); // Показва "Моето име е Джо" joe. sayGoodnight(); // Показва "Лека нощ, Стивън" } }

Критика

Въпреки че обектно-ориентираното програмиране е популярно, има много хора, които го смятат за лошо и го критикуват.

  • Лука Кардели написа статия, озаглавена "Лоши инженерни свойства на обектно-ориентираните езици".
  • През 1995 г. Ричард Столман пише: "Добавянето на ООП към Emacs не е очевидно подобрение; използвах ООП, когато работех по прозоречните системи на Lisp Machine, и не съм съгласен с обичайното мнение, че това е по-добър начин за програмиране."
  • Проучване на Поток и др. показва, че има много малка разлика в производителността между ООП и процедурните подходи.
  • Кристофър Джей Дейт каза, че сравняването на ООП с други неща, особено как ООП и другото нещо са свързани, е трудно, защото хората не са съгласни със значението на ООП.
  • Александър Степанов предположи, че ООП дава гледна точка, която е ограничена по отношение на математиката, и я нарече "почти толкова измама, колкото и изкуствения интелект".
  • Пол Греъм, успешен интернет търговец и програмист, изказа предположение, че целта на ООП е да действа като пастирски механизъм, който предпазва средните програмисти в средните организации от "нанасяне на твърде големи щети". Това също така забавя по-бързите и по-добри програмисти, които знаят как да правят нещата по по-мощен и по-компактен начин. [1]

Въпроси и отговори

В: Какво представлява обектно-ориентираното програмиране?


О: Обектно-ориентираното програмиране е начин на писане на компютърни програми, при който се използват "обекти" за означаване на данни и методи.

В: С какво обектно-ориентираното програмиране се различава от процедурното?


О: При процедурното програмиране компютърните програми представляват списък от инструкции за компютъра, които му казват да прави определени неща по определен начин. При обектно-ориентираното програмиране компютърните програми използват обекти, които говорят помежду си, за да променят данните в тези обекти и да работят по начин, който потребителят иска.

Въпрос: С какво обектно-ориентираното програмиране е от полза за разработчиците?


О: Обектно-ориентираното програмиране позволява кодът лесно да се използва повторно в други части на програмата или дори от други хора.

В: С какво е известен езикът за програмиране Python?


О: Езикът Python позволява компютърните програми да се пишат както в обектно-ориентирано програмиране, така и в процедурно програмиране.

Въпрос: Можете ли да дадете примери за езици за програмиране, които позволяват да се пишат компютърни програми в обектно-ориентирано програмиране?


О: Езиците за програмиране, които позволяват да се пишат компютърни програми в областта на обектно-ориентираното програмиране, включват C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C# и др.

В: Какво представляват обектите в обектно-ориентираното програмиране?


О: Обектите са обекти в обектно-ориентираното програмиране, които съдържат данни и методи.

В: Как работят обектите в обектно-ориентираното програмиране?


О: Обектите взаимодействат помежду си, за да променят данните в тези обекти и да работят по начин, който потребителят иска.

AlegsaOnline.com - 2020 / 2023 - License CC3