Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект лекцій (ТСПП).docx
Скачиваний:
213
Добавлен:
01.05.2015
Размер:
15.59 Mб
Скачать
    1. Зародження об' єктної моделі.

Декарт відмічав, що люди зазвичай мають об'єктно-орієнтований погляд на світ.

Вважають, що об'єктно-орієнтованого проектування засноване на принципах :

  • виділення абстракцій,

  • обмеження доступу,

  • модульність,

  • ієрархія,

  • типізація,

  • паралельність

  • стійкість.

Але усе це може застосовуватися і при функціональному підході.

Слід розрізняти достоїнства і недоліки загального об'єктного підходу і його окремого випадку - суб'єктно-орієнтованого підходу.

Достоїнства загального об'єктивного підходу :

Природне відображення реального світу на будову ПС (природне сприйняття людиною можливостей ПС, не треба "вигадувати" будову ПС, а використовувати природні аналогії).

Використання досить змістовних структурних одиниць ПС (об'єкт як цілісність ненадмірних асоціацій, инфомационно-прочные модулі).

Зниження трудомісткості розробки ПС за рахунок використання нового рівня абстракцій (використання ієрархії "непрограмних" абстракцій при розробці ПС : класифікація об'єктів реального світу, метод аналогій в природі) як новий рівень спадкоємства.

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

На об'єктний підхід зробив об'єктно-орієнтований аналіз (ООА). ООА спрямований на створення моделей, ближчих до реальності, з використанням об'єктно-орієнтованого підходу; це методологія, при якій вимоги формуються на основі понять класів і об'єктів, що становлять словник предметної області..

Об'єкти, класи, поведінка об'єкту, властивості, події.

Об' єктні мови програмування. Об' єктно - орієнтовані мови.

Багато сучасні мови спеціально створені для полегшення об' єктно - орієнтованого програмування. Однак слід зазначити, що можна застосовувати техніки ТОП і для не-об' єктно - орієнтованої мови і навпаки, застосування об' єктно - орієнтованої мови зовсім не означає, що код автоматичний стає об' єктно - орієнтованим.

Сучасний об' єктно - орієнтована мова пропонує, як правило, наступний обов'язковий набір синтаксичних засобів:

  • Оголошення класів з полями (даними - членами класу) і методами (функціями - членами класу).

  • Механізм розширення класу (успадкування) - породження нового класу від існуючого з автоматичним включенням всіх особливостей реалізації класу-предка до складу класу-нащадка. Більшість ООП-мов підтримують тільки одиничне успадкування.

  • Поліморфні змінні і параметри функцій (методів), що дозволяють привласнювати однієї і тієї ж змінної екземпляри різних класів.

  • Поліморфну поведінку екземплярів класів за рахунок використання віртуальних методів. У деяких ООП-язиках усе методи класів є віртуальними.

Мабуть, мінімальним традиційним об' єктно - орієнтованою мовою можна вважати мову Оберон, який не містить ніяких інших об' єктних засобів, крім перерахованих вище (у вихідному Обероні навіть немає окремого ключового слова для оголошення класу, а також відсутні явно описувані методи, їх замінюють поля процедурного типу). Але більшість мов додають до зазначеного мінімальному набору ті чи інші додаткові засоби. У їх числі:

  • Конструктори, деструктори, фіналізатори.

  • Властивості (аксесор).

  • Індексатори.

  • Інтерфейси (наприклад, в Java використовуються також як альтернатива множинного спадкоємства - будь-який клас може реалізувати скільки завгодно інтерфейсів).

  • Перевизначення операторів для класів.

  • Засоби захисту внутрішньої структури класів від несанкціонованого використання ззовні. Зазвичай це модифікатори доступу до полів і методів, типу public, private, зазвичай також protected, іноді деякі інші.

Частина мов (іноді званих "чисто об'єктними") цілком побудована навколо об' єктних засобів - у них будь- які дані (можливо, за невеликим числом винятків у вигляді вбудованих скалярних типів даних) є об' єктами, будь-який код - методом якого класу, і неможливо написати програму, в якій не використовувалися б об' єкти. Приклади подібних мов - Smalltalk, Python, Java, C #, Ruby, AS3. Інші мови (іноді використовується термін "гібридні") включають ООП- підсистему в початково процедурний мова. У них існує можливість програмувати, не звертаючись до об' єктним засобам. Класичні приклади - C + +, Delphi і Perl.