них клас raquo ;, що представляє собою об'єктний тип даних, зовні схожа на типи даних процедурно-орієнтованих мов, такі як структура в мові Сі або запис в Паскалі або QuickBasic. При цьому елементи такої структури (члени класу) можуть самі бути не тільки даними, але і методами (тобто процедурами або функціями). Таке об'єднання називається инкапсуляцией.
Наявність інкапсуляції достатньо для об'єктності мови програмування, але ще не означає його об'єктною орієнтованості - для цього потрібна наявність успадкування.
Але навіть наявність інкапсуляції і спадкування не робить мову програмування повною мірою об'єктним з погляду ООП. Основні переваги ООП виявляються тільки в тому випадку, коли в мові програмування реалізований поліморфізм.
Мова Self, дотримуючись багато вихідні положення об'єктно-орієнтованого програмування, ввів альтернативне класам поняття прототипу, поклавши початок прототипна програмуванню, считающемуся підвидом об'єктного.
Основні поняття
Абстракція даних
Об'єкти представляють собою спрощене, ідеалізований опис реальних сутностей предметної області. Якщо відповідні моделі адекватні розв'язуваної задачі, то працювати з ними виявляється набагато зручніше, ніж з низькорівневим описом всіх можливих властивостей і реакцій об'єкта.
Інкапсуляція
Інкапсуляція - це принцип, згідно з яким будь-який клас повинен розглядатися як чорний ящик - користувач класу повинен бачити і використовувати тільки інтерфейсну частину класу (тобто список декларованих властивостей і методів класу) і не вникати в його внутрішню реалізацію. Тому дані прийнято инкапсулировать в класі таким чином, щоб доступ до них з читання або запису здійснювався не безпосередньо, а за допомогою методів. Принцип інкапсуляції (теоретично) дозволяє мінімізувати число зв'язків між класами і, відповідно, спростити незалежну реалізацію і модифікацію класів.
Приховування даних
Приховування даних - невіддільна частина ООП, керуюча областями видимості. Є логічним продовженням інкапсуляції. Метою приховування є неможливість для користувача дізнатися або зіпсувати внутрішній стан об'єкта.
Спадкування
Спадкування називається можливість породжувати один клас від іншого зі збереженням усіх властивостей і методів класу-предка (прабатька, іноді його називають суперкласом) і додаючи, при необхідності, нові властивості і методи. Набір класів, зв'язаних відношенням спадкування, називають ієрархією. Спадкування меті відобразити таку властивість реального світу, як ієрархічність.
Поліморфізм
поліморфізм називають явище, при якому функції (методу) з одним і тим же ім'ям відповідає різний програмний код (поліморфний код) залежно від того, об'єкт якого класу використовується при виклику даного методу. Поліморфізм забезпечується тим, що в класі-нащадку змінюють реалізацію методу класу-предка з обов'язковим збереженням сигнатури методу. Це забезпечує збереження незмінним інтерфейсу класу-предка і дозволяє здійснити зв'язування імені методу в коді з різними класами - з об'єкта якого класу здійснюється виклик, з того класу і береться метод з даним ім'ям. Такий механізм називається динамічним (або пізнім) зв'язуванням - на відміну від статичного (раннього) зв'язування, здійснюваного на етапі компіляції.
Визначення ООП
На думку Алана Кея, творця мови Smalltalk, якого вважають одним з батьків-засновників ООП, об'єктно-орієнтований підхід полягає в наступному наборі основних принципів (цитується за вищезгаданій книзі Т. Бадда).
Все є об'єктом.
Обчислення здійснюються шляхом взаємодії (обміну даними) між об'єктами, при якому один об'єкт вимагає, щоб інший об'єкт виконав деяку дію. Об'єкти взаємодіють, посилаючи й одержуючи повідомлення. Повідомлення - це запит на виконання дії, доповнений набором аргументів, які можуть знадобитися при виконанні дії.
Кожен об'єкт має незалежну пам'ять, що складається з інших об'єктів.
Кожен об'єкт є представником (екземпляром) класу, який висловлює загальні властивості об'єктів.
У класі задається поведінка (функціональність) об'єкта. Тим самим всі об'єкти, які є екземплярами одного класу, можуть виконувати одні й ті ж дії.
Класи організовані в єдину деревоподібну структуру із загальним коренем, звану ієрархією успадкування. Пам'ять і поведінка, пов'язана з примірниками певного класу, автоматичн...