Зародження об' єктної моделі.
Декарт відмічав, що люди зазвичай мають об'єктно-орієнтований погляд на світ.
Вважають, що об'єктно-орієнтованого проектування засноване на принципах :
· виділення абстракцій,
· обмеження доступу,
· модульність,
· ієрархія,
· типізація,
· паралельність
· стійкість.
Але усе це може застосовуватися і при функціональному підході.
Слід розрізняти достоїнства і недоліки загального об'єктного підходу і його окремого випадку - суб'єктно-орієнтованого підходу.
Достоїнства загального об'єктивного підходу :
Природне відображення реального світу на будову ПС (природне сприйняття людиною можливостей ПС, не треба "вигадувати" будову ПС, а використовувати природні аналогії).
Використання досить змістовних структурних одиниць ПС (об'єкт як цілісність ненадмірних асоціацій, инфомационно-прочные модулі).
Зниження трудомісткості розробки ПС за рахунок використання нового рівня абстракцій (використання ієрархії "непрограмних" абстракцій при розробці ПС : класифікація об'єктів реального світу, метод аналогій в природі) як новий рівень спадкоємства.
Об'єктно-орієнтоване проектування - метод, що використовує об'єктну декомпозицію; об'єктно-орієнтований підхід має свою систему умовних позначень і пропонує багатий набір логічних і фізичних моделей для проектування систем високої міри складності.
На об'єктний підхід зробив об'єктно-орієнтований аналіз (ООА). ООА спрямований на створення моделей, ближчих до реальності, з використанням об'єктно-орієнтованого підходу; це методологія, при якій вимоги формуються на основі понять класів і об'єктів, що становлять словник предметної області..
Об'єкти, класи, поведінка об'єкту, властивості, події.
Об' єктні мови програмування. Об' єктно - орієнтовані мови.
Багато сучасні мови спеціально створені для полегшення об' єктно - орієнтованого програмування. Однак слід зазначити, що можна застосовувати техніки ТОП і для не-об' єктно - орієнтованої мови і навпаки, застосування об' єктно - орієнтованої мови зовсім не означає, що код автоматичний стає об' єктно - орієнтованим.
Сучасний об' єктно - орієнтована мова пропонує, як правило, наступний обов'язковий набір синтаксичних засобів:
· Оголошення класів з полями (даними - членами класу) і методами (функціями - членами класу).
· Механізм розширення класу (успадкування) - породження нового класу від існуючого з автоматичним включенням всіх особливостей реалізації класу-предка до складу класу-нащадка. Більшість ООП-мов підтримують тільки одиничне успадкування.
· Поліморфні змінні і параметри функцій (методів), що дозволяють привласнювати однієї і тієї ж змінної екземпляри різних класів.
· Поліморфну поведінку екземплярів класів за рахунок використання віртуальних методів. У деяких ООП-язиках усе методи класів є віртуальними.
Мабуть, мінімальним традиційним об' єктно - орієнтованою мовою можна вважати мову Оберон, який не містить ніяких інших об' єктних засобів, крім перерахованих вище (у вихідному Обероні навіть немає окремого ключового слова для оголошення класу, а також відсутні явно описувані методи, їх замінюють поля процедурного типу). Але більшість мов додають до зазначеного мінімальному набору ті чи інші додаткові засоби. У їх числі:
· Конструктори, деструктори, фіналізатори.
· Властивості (аксесор).
· Індексатори.
· Інтерфейси (наприклад, в Java використовуються також як альтернатива множинного спадкоємства - будь-який клас може реалізувати скільки завгодно інтерфейсів).
· Перевизначення операторів для класів.
· Засоби захисту внутрішньої структури класів від несанкціонованого використання ззовні. Зазвичай це модифікатори доступу до полів і методів, типу public, private, зазвичай також protected, іноді деякі інші.
Частина мов (іноді званих "чисто об'єктними") цілком побудована навколо об' єктних засобів - у них будь- які дані (можливо, за невеликим числом винятків у вигляді вбудованих скалярних типів даних) є об' єктами, будь-який код - методом якого класу, і неможливо написати програму, в якій не використовувалися б об' єкти. Приклади подібних мов - Smalltalk, Python, Java, C #, Ruby, AS3. Інші мови (іноді використовується термін "гібридні") включають ООП- підсистему в початково процедурний мова. У них існує можливість програмувати, не звертаючись до об' єктним засобам. Класичні приклади - C + +, Delphi і Perl.