Основні принципи ООП
В першу чергу згадаємо термін «парадигма» – це спосіб мислення, спосіб сприйняття чогось. Людський мозок просто не може сприймати навколишній світ цілком з усіма його проявами. Мозок спрощує отримувану інформацію, призводить її до якоїсь системи. Щоб щось зрозуміти, ви повинні це спростити. Поступово ви будете заглиблюватися в знаннях, але на початку вам потрібно зрозуміти загальну схему. Так ось парадигма програмування – це загальна схема, яка показує, яким способом людина перетворює технічне завдання в програмний код.
Процес перетворення ТЗ в код відбувається наступним чином: людина бере завдання, потім ділить його в голові на якісь частини (на які саме частини, як раз і описує парадигма) і потім ці частини перетворює в програмний код.
Найпростіша парадигма програмування, яку ви, швидше за все, зустрічали на уроках інформатики, це процедурна парадигма – послідовне алгоритмічне проведення якихось дій.
Послідовне алгоритмічне виконання якихось дій – це найпростіша парадигма, тому перші програми були написані саме по ній. Але у такої парадигми є один великий мінус – якщо вам потрібно описати щось реально складне, наприклад, роботу цілого заводу, запхати всі кроки в рамках однієї процедури практично неможливо. Програма буде ставати все складніше і складніше, в якийсь момент вона стане складніше, ніж здатний зрозуміти людина. В цьому випадку вона перестає бути підтримуваної, її доведеться викинути і писати нову, більш зрозумілу.
Об'єктно - орієнтоване програмування (ООП) – це модель програмування яка базується на стверджені того, що програма це сукупність об’єктів які взаємодіють між собою. Кожен об’єкт в цій моделі є незалежним, і він здатний отримувати, обробляти дані та відправляти ці дані іншим об’єктам.
ООП – одна з перших парадигм в програмуванні. Вона досить проста і вирішує головну проблему – що робити зі складною предметною областю і складним кодом. Крім того, така парадигма ще й універсальна. Саме тому ООП так добре прижилася.
Об’єктно-орієнтовані мови програмування:
• класичні: Simula 67, Smalltalk, Actor, Eiffel, Objective C;
• сучасні: C++, Object Pascal, Java, C#.
Суть парадигми об’єктно-орієнтованого програмування – сприймати всю предметну область у вигляді об’єктів.
Об’єкт – це щось, що має свій стан і поведінку. Людині дуже легко мислити в категоріях об’єктів, тому що ми живемо в світі об’єктів. Ось стілець, ось комп’ютер, ось рука. Все це об’єкти. На відміну від функціональної парадигми, яка вимагає перебудови мислення, щоб представити всю задачу у вигляді функцій, ООП відмінно лягає на звичне мислення людини. Об’єктно-орієнтоване програмування розглядає всю систему у вигляді об’єктів, які якимось чином один з одним взаємодіють.
Об'єкт можна визначити як певну сукупність даних(характеристик об'єкта) та методів роботи з ними. Для класифікації об'єктів у ООП використовують класи. Клас служить зразком для створення обєкту, тобто об'єкт є нічим іншим, ніж копією класу.
Кожен об'єкт має процедури і функції(те що він уміє виконувати, наприклад,завантажувати файл, відображати картинку і т.д.), які служать для роботи з даними об'єкта. Ці процедури і функції називаються методами.
Існування ООП можливе завдяки трьом основним парадигмам на яких базується саме ООП:
- Інкапсуляція. Також відома як приховування даних. Зміст інкапсуляції полягає у приховуванні від зовнішнього користувача деталей реалізації об'єкта, замість цього надаючи інтерфейс взаємодії з ним.
- Успадкування. Це означає, що об'єкти (класи) можуть переймати деякі властивості у своїх прабатьків. Як? Це залежить від тієї мови, на якому пишеться програма. Однак у будь-якому випадку картина та ж: це призводить до повторного використання вже написаного одного разу коду. Підкласи успадковують атрибути та поведінку своїх батьківських класів, і можуть мати нові власні атрибути. Тобто утворюється ієрархія з класів, де від основного класу(так званого, предка) походять усі інші класи.
- Поліморфізм означає залежність поведінки від класу, в якому ця поведінка викликається, тобто, два або більше класів можуть реагувати по різному на однакові повідомлення. Це спричинене зміною в одного з класів якогось методу(процедури, функції), шляхом запису іншого алгоритму. Як приклад, деяка комп'ютерна програма при натисканні клавіші Esc завершить роботу, інша ж програма після натискання кнопки Esc тільки відкриє меню даної програми.
Часто на стадії проектування класи і об'єкти зображують у вигляді діаграм на спеціальній мові UML (Unified Modelling Language).
Є й інші парадигми програмування, які виникли пізніше. Але на сьогоднішній день тільки об’єктно-орієнтована парадигма є абсолютно універсальною. Переважна кількість завдань на ній вирішується максимально ефективно. Чому виникли інші парадигми? Програмувати ми починаємо все більше і зараз за допомогою програм вирішуються такі завдання, які раніше здавалися неможливими. Але є завдання, які не вирішуються за допомогою ООП. Наприклад, потоковая обробка даних, коли потрібно швидко обробити великі обсяги інформації. Це може бути якась статистика, дані по відвідинам, події, прийняті з датчиків і т.д. Для вирішення таких завдань краще використовувати функціональні парадигми.
Чим далі буде розвиватися програмування і чим більше нових ніш бізнесу буде існувати, тим більше з’явиться завдань, для вирішення яких потрібні інші парадигми. Це нормально. Але ООП як і раніше буде підходити до більшого числа завдань, просто тому що вона: 1) проста 2) досить універсальна. До ООП мов відносяться Java, Python, Ruby, C #, C ++, Kotlin і інші.
Хочете продовжити з того місця, на якому Ви зупинились?