Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод указ к лабораторным работам ООП 3 семест...doc
Скачиваний:
5
Добавлен:
13.11.2019
Размер:
22.34 Mб
Скачать

6.3 Варіанти завдань

Дивись варіанти завдань з лабораторної роботи 3

6.4 Приклад виконання роботи

6.5 Контрольні запитання

  1. Призначення операторних функцій.

  2. Дати визначення операторних функцій?.

  3. Які операції неможливо перевантажити?

  4. Що таке дружні функції? Для чого функції чи класи оголошують дружніми до інших класів?

  5. Як перевантажити операції введення в потік та виведення з потоку?

  6. Чи можуть конструктори та деструктори бути дружніми? Поясніть свої твердження.

  7. Чим відрізняється перевантаження унарних операцій від бінарних?

  8. Як перевантажити оператори new та delete?

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

  10. В яких випадках операторні функції повертають посилання на об’єкт?

  11. В яких випадках операторні функції повертають об’єкт?

Просте успадкування класів. Поліморфізм. Віртуальні функції Діаграма класів, кооперацій. Лабораторна робота 7

7.1 Теоретичні відомості

Дивись лекції

7.2 Програма роботи

  1. Розробити інтерфейси та реалізації базових класів та побудувати дерево ієрархії похідних класів.

  2. Визначити доцільність використання абстрактних класів як програмних інтерфейсів між різними об’єктами.

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

  4. Протестувати програму, під час роботи якої слід виконати такі дії:

  • продемонструвати виклики конструкторів базових та похідних класів під час створення об’єктів похідних класів;

  • вивести повідомлення щодо конфліктиних ситуацій;

  • реалізувати сценарій тестування згідно з діаграмами діяльності об’єктів;

7.3 Варіанти завдань

Дивись варіанти завдань з лабораторної роботи 3

7.4 Приклад виконання роботи

Дивись матеріал лекцій

7.5 Контрольні запитання

Множинне успадкування класів. Абстрактні базові класи. Віртуальні класи Діаграма класів, кооперацій Лабораторна робота 8

8.1 Теоретичні відомості

Дивись лекції

8.2 Програма роботи

  1. Розробити інтерфейси та реалізації базових класів та побудувати дерево ієрархії похідних класів.

  2. Визначити доцільність використання абстрактних класів як програмних інтерфейсів між різними об’єктами.

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

  4. Протестувати програму, під час роботи якої слід виконати такі дії:

  • продемонструвати виклики конструкторів базових та похідних класів під час створення об’єктів похідних класів;

  • вивести повідомлення щодо конфліктиних ситуацій;

  • реалізувати сценарій тестування згідно з діаграмами діяльності об’єктів;

9.3 Варіанти завдань

Дивись варіанти завдань з лабораторної роботи 3 або нижче.

9.4 Приклад виконання роботи

Дивись матеріал лекцій

9.5 Контрольні запитання

Оброблення виключних ситуацій Діаграма класів, діяльності, послідовності Лабораторна робота 9

Мета роботи: ознайомитися з особливостями генерації і обробки виключень в мові С++ і створити програму їх обробки.

9.1. Теоретичні положення

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

Точка, в якій генерується виключення за допомогою оператора throw, називається точкою генерації. Коли виникає виключення, тоді з точки його генерації обробнику виключення передається інформація про тип згенерованого об’єкта або інформація, що розміщується в цьому об’єкті. Об’єкт, що генерується, є рядком символів або об’єктом класу. Частина програми, яка буде обробляти виключення, може бути віддалена від тої частини програма, яка викинула виключення.

Для обробки виключень необхідно:

оголосити виключення у вигляді констант, рядків (повідомлення), класу об’єктів.

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

Наприклад: int funct(double param) throw(a,b,c){……}

генерувати (викинути) виключення за допомогою оператора

throw об’єкт;

Оператор throw може генерувати:

виключення заданого типу, якщо задається у вигляді throw (type);

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

throw (type1, type2, type3,...);

виключення об’єктів заданого класу: throw клас(аргументи);

не генерувати виключення: throw();

виключення, які обробляються функцією, що викликається: throw;

Обробка виключної ситуації здійснюється оператором catch(), який має формат:

catch(тип_об’єкту)

{ програмний код, що обробляє виключення}

Для обробки виключень використовуються блоки try - catch. Програміст укладає в блок іспитів try той код, який може згенерувати помилку, що викликає виключення. За блоком try записується блок перехоплення виключення catch, який визначає тип виключення та містить програмний код, що його обробляє. Якщо тип виключення відповідає типу параметра в обробнику виключення catch, тоді виконується код його обробника, інакше здійснюється аварійне завершення програми.

try

{виклик функції, що генерує виключення}

catch(тип_об’єкту)

{тіло обробника виключення}

Правила використання блоку try - catch такі:

Оператор try містить оператори та функції, які генерують виключення.

Оператори try можуть бути вкладеними.

Один або декілька операторів catch() повинні бути записані поспіль після try для перехоплення виключень, що генеруються в try.

Для різних виключних ситуацій треба використовувати різні типи (класи) виключень.

Для кожного типу виключень треба використовувати свій catch().

Якщо використовувати оператор catch(…), тоді можуть бути перехоплені будь-які виключення, незалежно від їх типу. Оператор catch(…) необхідно розміщувати останнім у списку обробників виключення блоку try – catch.

Якщо виключення, що утворилося, ніде не обробилося, то викликається одна з трьох функцій: unexpected(), terminate(), abort().

Функція unexpected() викликається, якщо виникли непередбачені виключення, для яких нема оператора catch(), причому тільки з функцій, що мають оператор генерації виключень throw(тип).

Функція terminate() завершує програму, викликавши функцію abort().

Функція abort() виконує аварійне переривання програми, виводить повідомлення "Abnormal program termination", повертає код помилки 3.

Функції unexpected(), terminate() можна перевантажити, замінивши їх функціями set_unexpected(), set_terminate(), які визначають свій власний обробник виключень.