Номидан ко’rинib турибдики, об’ектга йўналтирилган дастурлаш ёки ООПлар дастурлашда об’ектлардан фойдаланадиган тилларни англатади. Об’ектга йўналтирилган дастурлаш дастурлашда мерос (inheritance), яшириш (hiding), полиморфизм (polymorphism) ва бошқалар каби реал дунё об’ектларини амалга оширишга қаратилган. ООПнинг асосий мақсади маълумотлар ва уларда ишлайдиган функцияларни бир-бирига боғлашдир, шунда коднинг бошқа ҳеч қандай қисми ушбу функциядан ташқари ушбу маълумотларга киролмайди.
ООП тушунчалари:
Синф (Class)
Об’ектлар (Objects)
Маълумотларни абстракция қилиш (Data Abstraction)
Инкапсуляция (Encapsulation)
Мерос (Inheritance)
Полиморфизм (Polymorphism)
Динамик уланиш (Dynamic Binding)
Хабар узатиш (Message Passing)
- Синф (Class):
Синф фойдаланувчи томонидан белгилаган маълумотлар туридир.
У ма’лумотлар а’золари ва а’зо функцияларидан иборат бўлиб, уларга кириш ва шу синфнинг намунасини яратиш орқали фойдаланиш мумкин. У бир турдаги барча об’ектлар учун умумий бўлган хусусиятлар ёки усуллар тўпламини ифодалайди. Синф об’ект учун чизмадан ўхшайди.
Мисол учун: Автомобиллар синфини кўриб чиқинг. Турли номлар ва маркаларга эга бўлган кўплаб автомобиллар бўлиши мумкин, аммо уларнинг барчаси бир нечта умумий хусусиятларга эга бўлади, чунки уларнинг барчасида 4 та г’илдирак, Тезлик чегараси, Миляж диапазони ва бошқалар бўлади. Шундай қилиб, бу ерда, Автомобил синфи ва г’илдираклар, тезлик чегаралари, километр уларнинг хоссалари ҳисобланади.
2.Об’ектлар (Objects):
Бу об’ектга йўналтирилган дастурлашнинг асосий бирлиги бўлиб, реал ҳаёт об’ектларини ифодалайди. Об’ект синфнинг намунасидир. Синф аниқланганда, хотира ажратилмайди, лекин у яратилганда (яъни об’ект яратилганда) хотира ажратилади.
Об’ектнинг ўзига хослиги, холати ва хatti-harakatlari мавжуд. Ҳар бир об’ектда маълумотлар ва маълумотларни манипуляция қилиш учун код мавжуд. Об’ектлар бир-бирининг маълумотлари ёки кодлари тафсилотларини билмасдан ўзаро таъсир қилишлари мумкин, қабул қилинган хабар турини ва об’ектлар томонидан қайтарилган жавоб турини билиш кифоя.
Мисол учун, “Ит” ҳақиқий ҳаётдаги об’ект бўлиб, у ранг, зот, қобиқ, уйқу ва овқатланиш каби баъзи хусусиятларга эга.
3.Ма’лумотларни абстракциялаш (Data Abstraction)
Ма’лумотларни абстракциялаш об’ектга йўналтирилган дастурлашнинг энг муҳим ва муҳим хусусиятларидан биридир. Ма’лумотларнинг абстракцияси ташқий дунёга маълумотлар тўғрисида фақат муҳим маълумотларни тақдим этиш, фон тафсилотларини ёки амалга оширишни яширишни англатади. Машина ҳайдаган одамнинг ҳаётий мисолини кўриб чиқинг.
Чоловік лише знає, що натискання на газ збільшує швидкість машини, або натискання на гальмо зупиняє машину, але він не знає, як саме збільшується швидкість при натисканні на газ, не знає внутрішнього механізму машини, або як працюють прискорювач, гальмо і так далі. Це і є абстракція.
4.Інкапсуляція (Encapsulation)
Інкапсуляція визначається як зібрання даних під одним підрозділом. Це механізм, який об'єднує код і дані, якими він керує. В інкапсуляції змінні або дані класу приховані від інших класів, і доступ до них можливий тільки через будь-яку функцію-член цього класу, в якому вони оголошені.
Як і в інкапсуляції, дані в класі приховані від інших класів, тому це також називається приховуванням даних.
Розглянемо реальний приклад інкапсуляції: у компанії є різні відділи, такі як бухгалтерія, фінансовий відділ, відділ продажу тощо. Фінансовий відділ керує всіма фінансовими операціями та реєструє всю фінансову інформацію. Подібно до цього, відділ продажу управляє всіма продажами та зберігає записи про всі угоди. Тепер може виникнути ситуація, коли з якоїсь причини працівник фінансового відділу потребує всю інформацію про продажі за певний місяць. У такому випадку, він не матиме безпосереднього доступу до даних відділу продажу.
Насамперед, він повинен зв’язатися з іншим співробітником відділу продажу та попросити його надати необхідну інформацію. Це і є інкапсуляція. Тут дані відділу продажу та співробітники, які можуть ними управляти, об’єднані під єдиним заголовком «відділ продажу».
5. Мерос (Inheritance)
Мерос є важливою складовою ООП (об'єктно-орієнтоване програмування). Здатність класу отримувати властивості та характеристики від іншого класу називається спадкуванням. Коли ми пишемо клас, ми можемо успадковувати властивості від інших класів. Отже, при створенні класу, нам не потрібно знову писати всі властивості та функції, оскільки вони можуть бути успадковані від іншого класу, який вже їх має. Спадкування дозволяє користувачеві повторно використовувати код і зменшувати його надлишковість.
6.
Поліморфізм (Polymorphism)
Поліморфізм означає наявність кількох форм. Простими словами, ми можемо визначити поліморфізм як здатність повідомлення бути представленим у кількох формах. Наприклад, людина може одночасно мати кілька різних властивостей. Людина може бути одночасно батьком, чоловіком, працівником. Таким чином, одна людина має різну поведінку в різних ситуаціях. Це і є поліморфізм.
7. Динамічне зв’язування (Dynamic Binding)
У динамічному зв’язуванні код, який буде виконаний у відповідь на виклик функції, визначається під час виконання програми. Динамічне зв’язування означає, що код, пов'язаний із викликом певної процедури, не відомий до моменту її виконання. Основною перевагою динамічного зв'язування є те, що деякі отримані класи можуть використовувати всі члени свого базового класу B.
Якщо D не приховує спільні члени B, то об’єкт D може виражати B в будь-якому контексті. Тут можна використовувати B. Ця особливість називається поліморфізмом з підтипами.
8. Передача повідомлень (Message Passing)
Це форма комунікації, яка використовується в об'єктно-орієнтованому програмуванні, а також у паралельному програмуванні. Об'єкти взаємодіють один з одним шляхом відправки та прийому повідомлень. Повідомлення для об'єкта є запитом на виконання процедури, тому приймаючий об'єкт викликає функцію, яка генерує потрібні результати. Передача повідомлень включає в себе вказівку імені об'єкта, імені функції та переданих даних.
Чому нам потрібно об'єктно-орієнтоване програмування?
Для полегшення розробки та обслуговування проєктів.
Забезпечення приховування даних з точки зору безпеки.
Якщо ми використовуємо об'єктно-орієнтоване програмування, ми зможемо вирішувати реальні проблеми.
Це забезпечує повторне використання коду.
Це дає нам можливість писати загальний код: він працює з різними наборами даних, тому нам не потрібно постійно переписувати основні частини.
Використані джерела:
[
Introduction of Object Oriented Programming - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and…
www.geeksforgeeks.org
](https://www.geeksforgeeks.org/introduction-of-object-oriented-programming/?source=post_page-----de66c60c17a2--------------------------------)
Перекладено з: Ob’ektga yo’naltirilgan dasturlashga kirish (Introduction of Object Oriented Programming)