Класи ООП. Об’єктно-орієнтоване програмування

Інкапсуляція

Ця концепція тісно пов’язана з абстракцією. Інкапсуляція – це розкриття рішення проблеми, не вимагає від користувача повного розуміння її предметної області. Вона пов’язує дані і поведінка в єдине ціле і не дозволяє клієнтові або користувачеві модуля дізнатися про внутрішнє подання, в якому реалізовано поведінка абстракції.

Дані недоступні безпосередньо. Доступ до них здійснюється через певні функції. Приховування внутрішніх елементів об’єкта захищає його цілісність, не даючи користувачам перекладати внутрішні дані компонента в неприпустиме або несумісне стан.

Спадкування

Це механізм повторного використання коду, який може допомогти зменшити його дублювання. Дана концепція є потужною функцією об’єктно-орієнтованих мов програмування. Вона допомагає організувати класи в ієрархію, дозволяючи їм наслідувати атрибути і поведінку від компонентів, що стоять вище.

Приклад наслідування: папуга – це птах, російський рубль – це вид валюти. Проте фраза “банк – це банківський рахунок” не вірна. Ця зв’язок очевидна, коли потрібно описати якусь сутність в даній постановці задачі. За допомогою спадкування можна визначити загальну реалізацію ООП і його поведінку, а потім для спеціалізованих класів скасувати або змінити ці показники на щось більш конкретне. Спадкування не працює задом наперед. Ісходник (так званий батько) не буде мати властивостей похідного (дочірнього класу).

Важливо відзначити, що при спробі змоделювати рішення не варто додавати кілька рівнів спадкування. Потрібно спробувати визначити загальні атрибути і поведінка в об’єктах, які змодельовані. Далі на основі цього можна продовжити рефакторинг коду, що визначає відповідний батьківський клас. Загальна реалізація може бути переміщена в нього.