Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен. Вопросы. Майданюк.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
812 Кб
Скачать
☆
  1. Основні принципи об’єктна-орієнтованої методології розробки програмної системи (оом пс).

Об'єктно-орієнтований підхід був пов'язаний з наступними подіями:

  • прогрес в області архітектури ЕОМ (створення комп'ютерів з descriptor-based і capability-based архітектурою);

  • розвиток об'єктно-орієнтованих мов програмування, таких як Simula, Smalltalk, CLU, Ada;

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

Базовими принципами об'єктно-орієнтованої технологія є:

  • абстрагування;

  • інкапсуляція;

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

  • ієрархічність.

принципи є базовими в тому сенсі, що без будь-якого з них модель не буде об'єктної. Крім головних, є ще три додаткових принципу (вони корисні в об'єктної моделі, але не обов'язкові):

  • типізація;

  • паралелізм;

  • збереженість.

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

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

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

У ООП виділяють кілька видів абстракцій:

абстракція суті

Об'єкт являє собою корисну модель якоїсь сутності в предметної області

абстракція поведінки

Об'єкт складається з узагальненого безлічі операцій

Абстракція віртуальної машини

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

довільна абстракція

Об'єкт включає в себе набір операцій, які не мають між собою нічого спільного

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

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

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

Перерахуємо прийоми і правила, які дозволяють складати модулі з класів і об'єктів найбільш ефективним чином:

1. Особливості системи, схильні до змін, слід приховувати в окремих модулях; як міжмодульних можна використовувати тільки ті елементи, ймовірність зміни яких мала.

2. Всі структури даних повинні бути відокремлені в модулі; доступ до них буде можливий для всіх процедур цього модуля і закритий для всіх інших. Доступ до даних з модуля повинен здійснюватися тільки через процедури даного модуля [31].

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

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

поняття типу взято з теорії абстрактних типів даних. Типізація дозволяє захиститися від використання об'єктів одного класу замість іншого. У різних мовах програмування реалізовані різні механізми типізації, від слабкої (С ++) до сильної (Object Pascal), а в деяких такий механізм відсутній (Smalltalk).

Мови, в яких типізація відсутня, мають більшу гнучкість. Але на практиці, особливо при програмуванні «у великому», надійність мов зі строгою типізацією з лишком компенсує деяку втрату в гнучкості.

Примітка: Теслер зазначив наступні важливі переваги строго типізованих мов:

· «Відсутність контролю типів може призводити до загадкових збоїв в програмах під час їх виконання.

· У більшості систем процес редагування-компіляція-налагодження стомлює, і раннє виявлення помилок просто незамінне.

· Оголошення типів покращує документування програм.

· Багато компілятори генерують більш ефективний об'єктний код, якщо їм явно відомі типи »[37].

В об'єктно-орієнтованих мовах паралелізм досягається за рахунок механізму багатопоточності (процесів управління) і наявності переривань, при цьому головна увага приділяється абстрагування і синхронізації процесів. В даний час існує цілий клас мов, орієнтованих на паралельні обчислення (Ada, Modula-2, Occam).

І, нарешті, кілька слів про зберігання. Вона передбачає, що під час обчислень необхідно зберігати проміжні дані і / або об'єкти в часі. Більшість мов програмування не має вбудованих засобів для цього (хорошим винятком є ??лише мову Smalltalk), тому, як правило, збереженість досягається за рахунок застосування СУБД, багато з яких вбудовані в оболонку інтегрованих засобів розробки ПС.

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