Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпори гос.docx
Скачиваний:
21
Добавлен:
13.09.2019
Размер:
2.93 Mб
Скачать

2. Основні принципи технології об’єктно-орієнтованого програмування. Поняття про об’єкт (клас).

Проектування припускає врахування суперечливих вимог. Продуктами його є моделі, які дозволяють зрозуміти структуру майбутньої системи, збалансувати вимоги та намітити схему її застосування. Важливість побудови моделі полягає в тому, що моделювання реалізує принципи декомпозиції, абстракції та ієрархії. Кожна модель описує певну частину розглядуваної системи. Згодом на базі старих моделей будуємо нові. Моделювання дає змогу досліджувати недоліки системи в умовах, які ми задаємо самі. Зрозуміло, що не існує такого універсального методу, який приведе розробника від вимог складної програмної системи до їх виконання. Інженери-програмісти розробили десятки різноманітних методів, що мають такі спільні властивості:

  • умовні позначення — мова для опису кожної моделі;

  • Рис. 4. Моделі складної системи

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

З огляду на важливість побудови моделей під час проектування складних систем створено кілька типів таких моделей (рис. 4). Ці моделі охоплюють увесь спектр важливих конструкторських рішень при розробці складної системи. Тема 2. ОБ’ЄКТНИЙ ПІДХІД ДО МОДЕЛЮВАННЯ ІНФОРМАЦІЙНИХ СИСТЕМ

  • Становлення об’єктного підходу.

  • Елементи об’єктного підходу.

  • Переваги об’єктного підходу.

  • Об’єктно-орієнтоване моделювання.

     [1; 3; 7] 1. Становлення об’єктного підходу Аналіз літературних джерел у галузі проектування та створення складних програмних комплексів [1—10] дає підстави для таких висновків. 1. Програмам притаманна складність, яка нерідко перевищує можливості людського розуму. 2. Складні структури часто набирають форми ієрархії: корисно моделювати і «типову», і «структурну» ієрархію складної системи. 3. Складні системи створюються на основі стійких проміжних форм. 4. Пізнавальна здатність людини обмежена, ми можемо розсунути її рамки, використовуючи методи декомпозиції, виділення абстракцій та створення ієрархій. 5. Складні системи можна досліджувати, концентруючи основну увагу або на об’єктах, або на процесах; доцільно розглядати систему як упорядковану сукупність об’єктів, які у процесі взаємодії забезпечують функціонування системи як єдиного цілого. 6. Об’єктно-орієнтоване моделювання — метод, який використовує об’єктну декомпозицію; об’єктно-орієнтований підхід має свою систему позначень та пропонує багатий набір логічних і фізичних моделей для проектування систем високого ступеня складності. В основу об’єктно-орієнтованого проектування (ООП) покладено об’єктний підхід. Головні принципи його такі:  

• Абстрагованість

Основні

  • Обмеження доступу       • Модульність • Ієрархічність   • Типізація • Паралелізм                     Додаткові • Стійкість

Типові представники мов ООП: Smaltalk, Object Pascal, С++, Clos та Ada. Основним елементом конструкції в них є модуль, до складу якого входять логічно пов’язані класи та об’єкти. Визначимо це так: якщо уявити процедури та функції у вигляді дієслів, а дані у вигляді іменників, то процедурні програми будуються із дієслів, а об’єктно-орієнтовані — з іменників. З цієї причини структура програм малої та середньої складності при ООП подається графом, а не деревом. Крім того, скорочена чи й відсутня область глобальних даних. Дані та дії організуються тепер у такий спосіб, що основою конструкції стають класи та об’єкти, а не алгоритми. Об’єктний підхід може бути здійснений також на вищих рівнях абстракції. Групи абстракцій у великих системах можуть подаватися у вигляді багатошарової структури. На кожному рівні можна виокремити групи об’єктів, які тісно взаємодіють для розв’язування задачі вищого рівня абстракції. У кожній групі ми знайдемо таку саму кількість взаємодіючих абстракцій. Методи структурного проектування мали на меті спростити процес розробки складних систем на основі алгоритмічного підходу. Методи об’єктно-орієнтованого проектування створені, у свою чергу, для допомоги розробникам, які використовують потужні виражальні засоби об’єктного чи об’єктно-орієнтованого підходу, який базується наопису класів та об’єктів. ООП відображає еволюційний процес у проектуванні, а не революційний; нова методологія не є різким відступом від минулих методів, а будується з урахуванням минулого досвіду. «В об’єктному підході акцент переноситься на конкретні характеристики фізичної та абстрактної системи, яка є предметом програмного моделювання. Об’єкти мають цілість, яку не слід порушувати. Об’єкт може лише змінювати стан, поведінку чи управління або набувати будь-якого відношення до інших об’єктів. Об’єкт має незмінні якості, але може змінювати свій стан. Наприклад, підйомник характеризується тим, що може рухатися вгору та вниз, залишаючись у межах своїх напрямних... Будь-яка модель має враховувати ці властивості підйомника, оскільки вони визначають його призначення» [3]. Об’єктно-орієнтоване програмування — це методологія програмування, яка базується на поданні програми у вигляді сукупності об’єктів, кожний із яких є реалізацією певного класу, а класи утворюють ієрархію на принципах успадкування. У цьому визначенні можна вирізнити три частини. 1. ООП використовує як елементи конструкції об’єктів, а не алгоритми. 2. Кожний об’єкт є реалізацією певного класу. 3. Класи організовані ієрархічно. Лише в разі додержання всіх перелічених щойно вимог програма буде об’єктно-оріентованою. Об’єктно-орієнтоване проектування — це методологія проектування, яка поєднує в собі процес об’єктної декомпозиції та прийоми подання як логічної і фізичної, так і статистичної і динамічної моделей проектованої системи. У цьому визначенні є дві важливі частини: 1) ООП веде до об’єктно-орієнтованої декомпозиції; 2) використовуються різні прийоми подання моделей, які відображають логічну (структури класів та об’єктів) та фізичну (архітектура моделей та процесів) структури системи.

Класи і методи в мові C++

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

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

сlass ім'я класу{список членів};

Опис класу починається з ключового слова class. Список членів класу визначає власні елементи класу.

При описі членів класів можлива вказівка атрибутів управління доступом до елементів класів. Такими атрибутами є:

public: членів класу видно іззовні класу

private: відповідні елементи можуть використовуватися тільки усередині класу

protected: відповідні елементи можуть використовуватися тільки усередині класу

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

Оскільки користувача часто цікавить відкрита частина класу, то в описі вона повинна йти першою.

Функція card(suit,int)в описі класу є унікальною – вона має теж ім'я, що і клас і не має значення, що повертається. Ця функція називається конструктором. Вона використовується при ініціалізації створюваних екземплярів класу. Методи draw і halfdraw описані в стилі прототипу функції.

Лістинг 1. Описи класу card на C++

enum suits {diamond, club, heart, spade};

enum colors {red, black};

class card {

public:

card(suits,int);

// доступ до атрибутів

colors color ();

bool faceUp ();

int rank ();

suits suit ();

// виконувані дії

void draw (window &,int x, int у);

void halfdraw (window &,int x, int у);

void flip ();

private:

bool faceup;

int r; // ранг

suits s; // масть

};

Білет8