Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
33
Добавлен:
14.04.2015
Размер:
592.9 Кб
Скачать

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

1.1. Методологія процедурно-орієнтованого програмування

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

новий етап в розвитку техніки обчислень. Здавалося, досить розробити

послідовність елементарних дій, кожне з яких можна перетворити в

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

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

Методологія процедурно-орієнтованого програмування

над усім процесом розробки програм. З'явилися спеціалізовані мови

програмування, призначені для розробки програм, призначених для

рішення обчислювальних задач. Прикладами таких мов можуть служити FOCAL (FOrmula

CALculator) і FORTRAN (FORmula TRANslator).

Основою такий методології розробки програм була процедурна або алгоритмічна організація структури програмного коду. Це було настільки

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

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

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

певну послідовність дій, які необхідно виконати для

досягнення заданої мети або вирішення поставленого завдання

Прикладами алгоритмів є добре відомі правила знаходження коренів

квадратного рівняння або лінійної системи рівнянь.

При збільшенні обсягів програм для спрощення їх розробки з'явилася необхідність

розбиття великих завдань на підзадачі. У мовах програмування виникло і

закріпилося нове поняття процедури. Використання процедур дозволило розбивати

великі завдання на підзадачі і таким чином спростило написання великих програм.

Крім того, використання процедурного підходу дозволило зменшити обсяг

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

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

дій або операцій, спрямованих на вирішення окремого завдання. У мовах

програмування з'явилася спеціальна синтаксична конструкція, яка також

отримала назву процедури. Наприклад, на мові Pascal опис процедури виглядає

наступним чином:

Procedure printGreeting (name: String)

Begin

Print ("Hello,");

PrintLn (s);

End;

Призначення даної процедури - вивести на екран вітання "Hello, Name", де Name

передається в процедуру в якості вхідного параметра.

З часом обчислювальні завдання ставали все складніше, а значить, і вирішальні

їх програми збільшувалися в розмірах. Їх розробка перетворилася на серйозну

проблему. Коли програма стає все більше, її потрібно розділяти на все більш

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

декомпозиція, при якій окремі частини програми, або модулі, представляли собою

сукупність процедур для вирішення однієї або кількох завдань. Однією з основних

особливостей процедурного програмування полягає в тому, що воно дозволило

створювати бібліотеки підпрограм (процедур), які можна було б використати

повторно в різних проектах або в рамках одного проекту. При процедурному підході

для візуального представлення алгоритму виконання програми використовується так

звана Блок-схема. Відповідна система графічних позначень була

зафіксована в ГОСТ 19.701-90. Приклад блок-схеми зображений на малюнку (мал. 1.1).

Поява і інтенсивне використання умовних операторів і оператора безумовного

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

Справа в тому, що безконтрольне застосування в програмі оператора безумовного переходу

goto здатне серйозно ускладнити розуміння коду. Такі заплутані програми

порівнювали з порцією спагетті, називаючи їх "bowl of spaghetti", маючи на увазі численні

переходи від одного фрагмента програми до іншого, або, що ще гірше, повернення від

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

що в літературі зазвучали заклики виключити оператор goto з мов програмування.

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

переходів.

Подальше збільшення програмних систем сприяло становленню нової точки

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

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

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

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

проектування програм, або проектування "зверху-вниз". Період найбільшої

популярності ідей структурного програмування припадає на кінець 70-х - початок 80 -

х років.

У цей період основним показником складності розробки програм вважали її розмір.

Цілком серйозно обговорювалися такі оцінки складності програм, як кількість рядків

програмного коду. Правда, при цьому робилися деякі припущення щодо

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

Наприклад, кожен рядок коду повинна була містити не більше одного оператора. Загальна

трудомісткість розробки програм оцінювалася спеціальної одиницею виміру -

"Людино-місяць" або "людино-рік". А професіоналізм програміста безпосередньо

зв'язувався з кількістю рядків програмного коду, який він міг написати і налагодити

протягом, скажімо, місяця.

1.2. Методологія об'єктно-орієнтованого програмування

Збільшення розмірів програм призводило до необхідності залучення більшого числа

програмістів, що, в свою чергу, зажадало додаткових ресурсів для

організації їх узгодженої роботи. В процесі розробки додатків замовник

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

програмного забезпечення.

Але не менш важливими виявилися якісні зміни, пов'язані зі зміщенням

акценту використання комп'ютерів. В епоху "великих машин" основними споживачами

програмного забезпечення були такі великі замовники, як великі виробничі

підприємства, фінансові компанії, державні установи. Вартість таких

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

організацій.

Пізніше з'явилися персональні комп'ютери, які мали набагато меншу вартість

і були значно компактніше. Це дозволило широко використовувати їх в малому і середньому

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

даними, тому обчислювальні та розрахунково-алгоритмічні завдання з появою

персональних комп'ютерів відійшли на другий план.

Як показала практика, традиційні методи процедурного програмування не здатні

впоратися ні з наростаючою складністю програм та їх розробки, ні з необхідністю

підвищення їх надійності. У другій половині 80-х років виникла нагальна

потреба в новій методології програмування, яка була б здатна вирішити

весь цей комплекс проблем. Нею стало об'єктно-орієнтоване програмування

(ООП).

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

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

поданні предметної області задачі у вигляді безлічі моделей для мовно-

незалежної розробки програмної системи на основі її прагматики.

Останній термін має потребу в поясненні. Прагматика визначається метою розробки

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

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

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

модель "бідніше", а, отже, простіше репрезентованої нею предмета або поняття.

Простота моделі по відношенню до реального предмету дозволяє зробити її формальною.

Завдяки такому характеру моделей при розробці можна чітко виділити всі

залежності і операції над ними в створюваної програмної системі. Це спрощує

як розробку і вивчення (аналіз) моделей, так і їх реалізацію на комп'ютері.

Об'єктно-орієнтований підхід допомагає справитися з такими складними проблемами,

як

• зменшення складності програмного забезпечення;

• підвищення надійності програмного забезпечення;

• забезпечення можливості модифікації окремих компонентів програмного

забезпечення без зміни інших його компонентів.

• забезпечення

можливості

повторного

використання

окремих

компонентів

програмного забезпечення.

1.3. Об'єкти

За визначенням будемо називати об'єктом поняття, абстракцію або будь-який предмет з

чітко окресленими кордонами, має сенс в контексті розглянутої прикладної

проблеми. Введення об'єктів переслідує дві мети:

• розуміння прикладної задачі (проблеми);

• введення основи для реалізації на комп'ютері.

Приклади об'єктів: кватирка, Банк "Імперіал", Петро Сидоров, справа № 7461, ощадкнижка

і т.д.

Кожен об'єкт має певний час життя. В процесі виконання програми

або функціонування будь-якої реальної системи можуть створюватися нові об'єкти

і знищуватися вже існуючі.

Граді Буч дає наступне визначення об'єкту:

Об'єкт - це мислима або реальна суть, що володіє характерним поведінкою,

відмінними характеристиками і є важливою в предметної області. [1]

Кожен об'єкт має стан, володіє деякими добре певним поведінкою

і унікальною ідентичністю.

Соседние файлы в папке Програмне_забезпечення_ОС_ИНФ_5_сем