Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 2 у оп.doc
Скачиваний:
11
Добавлен:
11.11.2019
Размер:
89.6 Кб
Скачать

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

Мова вважається об'єктно-орієнтованою, якщо в нім реалізовані перші чотири з розглянутих семи принципів.

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

Не дивлячись на те, що принципово ООП можливо на багатьох мовах програмування, бажано для створення об'єктно-орієнтованих програм використовувати об'єктно-орієнтовані мови, що включають спеціальні засоби, наприклад, Borland Pascal (починаючи з версії 5.5), C++, Delphi і так далі

У таблиці представлені порівняльні характеристики мовних засобів, що розглядаються в наступних розділах.

Найпростіша об'єктна модель використана при розробці Borland Pascal 7.0. Вона спеціально створювалася для полегшення переходу програмістів на використання технології ООП і не підтримує абстракції метаклассов, майже не містить спеціальних засобів заховання реалізації об'єктів. Але навіть в такому варіанті вона дозволяє створювати достатньо складні системи. Об'єктні моделі решти мов є практично повними.

Особливе місце займають об'єктні моделі Delphi і C++Builder. Ці моделі узагальнюють досвід ООП для MS DOS і включають деякі нові засоби, що забезпечують ефективне створення складніших систем. На базі цих моделей створені візуальні середовища для розробки застосувань Windows. Складність програмування під Windows вдалося істотно понизити за рахунок створення спеціальних бібліотек об'єктів, що «заховали» багато елементів техніки програмування.

3. Етапи розробки програмних систем з використанням ооп

Процес розробки програмного забезпечення з використанням ООП включає чотири етапи: аналіз, проектування, еволюція, модифікація.

Розглянемо ці етапи.

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

Проектування. Розрізняють:

  1. логічне проектування, при якому ухвалювані рішення практично не залежать від умов експлуатації (операційної системи і використовуваного устаткування);

  2. фізичне проектування, при якому доводиться приймати до уваги вказані чинники.

Логічне проектування полягає в розробці структури класів: визначаються поля для зберігання складових стану об'єктів і алгоритми методів, що реалізовують аспекти поведінки об'єктів. При цьому використовуються розглянуті вище прийоми розробки класів (спадкоємство, композиція, наповнення, поліморфізм і так далі). Результатом є ієрархія або діаграма класів, що відображають взаємозв'язок класів, і опис класів.

Фізичне проектування включає об'єднання описів класів в модулі, вибір схеми їх підключення (статична або динамічна компоновка), визначення способів взаємодії з устаткуванням, з операційною системою і/або іншим програмним забезпеченням (наприклад, базами даних, мережевими програмами), забезпечення синхронізації процесів для систем паралельної обробки і так далі

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

Використання поетапної реалізації істотно спрощує тестування і відладку програмного продукту.

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

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

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

Розгляд основних прийомів об'єктного підходу почнемо з об'єктної декомпозиції.

Об'єктна декомпозиція

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

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

Функціональні елементи системи, параметри і поведінка якої визначаються умовою завдання, що володіють самостійною поведінкою (тобто що «уміють» виконувати деякі дії, залежні від отриманих повідомлень і стану елементу), отримали назву об'єктів.

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

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

Можна сформулювати наступні рекомендації по виконанню об'єктної декомпозиції:

  1. Для складних систем об'єктна декомпозиція повинна виконуватися поетапно: на першому етапі - об'єктна декомпозиція всієї системи, на подальших - декомпозиція об'єктів як підсистем.

  2. При декомпозиції системи в цілому як об'єкти можуть виділятися елементи двох типів:

  • елементи інтерфейсу користувача (вікна меню, вікна повідомлень, вікна форм введення-виводу і так далі);

  • засоби зберігання, організації і перетворення даних (бази даних, файли, протоколи, структури даних і так далі).

При цьому для кожного об'єкту повинні визначатися безліч отримуваних і передаваних повідомлень і основні характеристики.

3. Процес декомпозиції припиняється при отриманні об'єктів, які можуть бути досить просто реалізовані, тобто мають чітко певну структуру і поведінку.

Об'єкти і повідомлення

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

Кожен об'єкт, отримуючи повідомлення, повинен певним чином «реагувати» на них, виконуючи заздалегідь визначені для кожного типу повідомлення дії.

Реакція об'єкту на повідомлення може залежати від його стану.

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

Як правило, набір властивостей в процесі функціонування не змінюється, можуть змінюватися лише конкретні значення цих властивостей.

Поведінка об'єктів, характеризується певним набором реакцій на отримувані повідомлення і часто залежить від стану об'єкту.

Об'єкти, що володіють схожими станами і поведінкою з погляду вирішуваного завдання, утворюють. Властивості об'єкту, які відрізняють його від всіх інших об'єктів групи, складають його індивідуальність.

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

Якщо об'єкт містить декілька однотипних компонент, наприклад, масив чисел, то операція, що вимагає послідовної обробки цих компонент, називається ітерацією. Повний список можливих операцій над об'єктами виглядає таким чином:

  • створення об'єкту;

  • знищення об'єкту;

  • модифікація - зміна стану об'єкту;

  • ітерація - доступ до вмісту об'єкту по частинах в певній послідовності.

Відповідно, кожне повідомлення, що приймається об'єктом, може ініціювати виконання однієї або декількох операцій вказаних типів.

При виконанні об'єктної декомпозиції між об'єктами встановлюються певні відносини.

Основні засоби розробки класів

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]