- •Рейтингова система оцінювання знань та умінь з ооп 2012-2013 н.Р.
- •Вимоги до звіту з лабораторних робіт
- •Класи потоків Лабораторна робота 1
- •1.1 Теоретичні відомості
- •1.1.1. Методи класів потоків
- •1.1.2. Маніпулятори
- •1.1.3. Деякі методи класів файлових потоків
- •1.2 Приклад програми Умова задачі
- •Алгоритм задачі
- •Текст програми
- •Результати виконання програми
- •1.3 Варіанти завдань
- •1.4 Контрольні запитання
- •Інкапсуляція. Інтерфейси класів . Діаграми прецедентів і класів Лабораторна робота 2
- •2.1 Теоретичні відомості Етапи об’єктно-орієнтованого проектування та моделювання
- •Діаграма варіантів використання(use-case diagram)
- •Ідентифікація класів
- •Ідентифікація атрибутів
- •Ідентифікація операцій (методів)
- •Типові схеми uml діаграм
- •2.2 Програма роботи
- •2.3 Варіанти завдань
- •2.4 Приклад виконання роботи Задача
- •Об’єктно-орієнтоване проектування Зображення класів в uml
- •Ідентифікація атрибутів
- •Структура проекту
- •Інтерфейси та реалізації класів програми
- •2.5 Контрольні запитання
- •Конструктори та деструктори класів Діаграми прецедентів і класів Лабораторна робота 3
- •3.1 Теоретичні відомості
- •3.2 Програма роботи
- •3.3 Варіанти завдань
- •3.4 Приклад виконання роботи Задача
- •Реалізація конструкторів і деструкторів деяких класів
- •3.5 Контрольні запитання
- •Методи класів: аксесори, ітератори, утілити, предикатні функції . Діаграми класів, діяльності, послідовності Лабораторна робота № 4
- •4.1 Теоретичні відомості
- •4.2 Програма роботи
- •4.3 Варіанти завдань
- •4.4 Приклад виконання роботи Задача
- •Реалізація деяких методів-аксесорів, предикатних функцій, функцій-утілит, методів, які забезпечують функціональність об’єктів
- •Результати виконання роботи
- •4.5 Контрольні запитання
- •Константні та статичні члени класів. Вбудовані функції. Діаграми класів, послідовності Лабораторна робота № 5
- •5.1 Теоретичні відомості
- •5.2 Програма роботи
- •5.3 Варіанти завдань
- •5.4 Приклад виконання роботи Задача 5_1
- •Приклади деяких константних елементів даних і методів класів
- •Фрагмент результатів виконання роботи
- •Задача 5_2
- •Приклади деяких статичних елементів даних і методів класів
- •Фрагмент результатів виконання роботи
- •5.5 Контрольні запитання
- •Перевантаження операцій та функцій. Дружні функції Діаграми класів, станів і переходів Лабораторна робота 6
- •6.1 Теоретичні відомості
- •6.2 Програма роботи
- •6.3 Варіанти завдань
- •6.4 Приклад виконання роботи
- •6.5 Контрольні запитання
- •Просте успадкування класів. Поліморфізм. Віртуальні функції Діаграма класів, кооперацій. Лабораторна робота 7
- •7.1 Теоретичні відомості
- •7.2 Програма роботи
- •9.2. Приклад програми Умова задачі 9
- •Алгоритм задачі 9
- •Текст програми 9
- •Результати роботи програми 9
- •9.3. Варіанти завдань
- •9.4. Контрольні запитання
- •Методи внутрішнього сортування (сортування масивів) Лабораторна робота 10
- •Методи зовнішнього сортування (сортування файлів) Лабораторна робота 11
6.3 Варіанти завдань
Дивись варіанти завдань з лабораторної роботи 3
6.4 Приклад виконання роботи
6.5 Контрольні запитання
Призначення операторних функцій.
Дати визначення операторних функцій?.
Які операції неможливо перевантажити?
Що таке дружні функції? Для чого функції чи класи оголошують дружніми до інших класів?
Як перевантажити операції введення в потік та виведення з потоку?
Чи можуть конструктори та деструктори бути дружніми? Поясніть свої твердження.
Чим відрізняється перевантаження унарних операцій від бінарних?
Як перевантажити оператори new та delete?
Як за допомогою операторних функцій здійснити перетворення типів?
В яких випадках операторні функції повертають посилання на об’єкт?
В яких випадках операторні функції повертають об’єкт?
Просте успадкування класів. Поліморфізм. Віртуальні функції Діаграма класів, кооперацій. Лабораторна робота 7
7.1 Теоретичні відомості
Дивись лекції
7.2 Програма роботи
Розробити інтерфейси та реалізації базових класів та побудувати дерево ієрархії похідних класів.
Визначити доцільність використання абстрактних класів як програмних інтерфейсів між різними об’єктами.
Під час реалізації множинного успадкування передбачити розв’язання конфліктів імен та дублювання протоколів базових класів.
Протестувати програму, під час роботи якої слід виконати такі дії:
продемонструвати виклики конструкторів базових та похідних класів під час створення об’єктів похідних класів;
вивести повідомлення щодо конфліктиних ситуацій;
реалізувати сценарій тестування згідно з діаграмами діяльності об’єктів;
7.3 Варіанти завдань
Дивись варіанти завдань з лабораторної роботи 3
7.4 Приклад виконання роботи
Дивись матеріал лекцій
7.5 Контрольні запитання
Множинне успадкування класів. Абстрактні базові класи. Віртуальні класи Діаграма класів, кооперацій Лабораторна робота 8
8.1 Теоретичні відомості
Дивись лекції
8.2 Програма роботи
Розробити інтерфейси та реалізації базових класів та побудувати дерево ієрархії похідних класів.
Визначити доцільність використання абстрактних класів як програмних інтерфейсів між різними об’єктами.
Під час реалізації множинного успадкування передбачити розв’язання конфліктів імен та дублювання протоколів базових класів.
Протестувати програму, під час роботи якої слід виконати такі дії:
продемонструвати виклики конструкторів базових та похідних класів під час створення об’єктів похідних класів;
вивести повідомлення щодо конфліктиних ситуацій;
реалізувати сценарій тестування згідно з діаграмами діяльності об’єктів;
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(), які визначають свій власний обробник виключень.