Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_TP_oop_719_819_2020_Неласа.doc
Скачиваний:
30
Добавлен:
08.04.2020
Размер:
231.94 Кб
Скачать
    1. Контрольні запитання

  1. .Для чого використовують перевантаження операцій?

  2. В чому різниця між перевантаженням операцій як членів класу і friend-функцій ?

  3. Які оператори не можна перевантажувати як friend-функції?

  4. Які оператори не можна перевантажувати як члени класу?

  5. В чому полягає особливість перевантаження операторів введення/виведення “<<”, “>>”?

  6. Назвіть особливості перевантаження унарних та бінарних операторів.

  7. Чи можливо потік передавати до функції за значенням?

  8. Чи можливо змінювати приорітет операції?

  1. Лабораторна робота № 5 Віртуальні функції

Мета роботи – навчитись використовувати успадкування при розробці інтерфейсу програм.

    1. Порядок виконання лабораторної роботи

  1. Застосувавши конспект лекцій та додаткову літературу, вивчити основні принципи перевантаження.

  2. Виконати індивідуальне завдання відповідно до номера варіанта застосувавши мову програмування С++.

  3. Оформіти звіт.

  4. Зробити висновки.

    1. Індивідуальне завдання

Варіант 1. Наданий такий клас:

class Base

{ public:

virtual void myname() { cout << "This is class Base" << endl; }

};

Від цього класу треба створити два похідних класу: DerA і DerB.

Від класів DerA і DerB шляхом множинного успадкування створити клас DerAB.

Перевизначити у кожному з створених класів функцію myname таким чином, щоб вона виводила на екран дійсне ім’я класу об’єкту, для якого вона викликається.

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

Створіть масив із 4 покажчиків на базовий клас ієрархії. Для кожного з них створіть динамічний об’єкт, по одному для кожного з класів ієрархії. Запишіть виклик функції myname для кожного з динамічних об’єктів за допомогою покажчиків.

Поясніть дію функції mymain у всіх випадках.

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

Застосовуючи успадкування і наведений вище абстрактний клас створити похідний клас для роботи з фігурою типу "трикутник". Визначити інтерфейсну частину у класах, застосувати атрибути доступу.

Варіант 3. Для класу «Геометрична фігура» з варіанту 2, створити похідний клас для роботи з фігурою типу «пряма». Визначити інтерфейсну частину у класах, застосувати атрибути доступу.

Варіант 4. Для класу «Геометрична фігура» з варіанту 2, створити похідний клас для роботи з фігурою типу «круг». Визначити інтерфейсну частину у класах, застосувати атрибути доступу.

Варіант 5. Для класу «Геометрична фігура» з варіанту 2, створити похідний клас для роботи з фігурою типу «прямокутник». Визначити інтерфейсну частину у класах, застосувати атрибути доступу.

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

  1. Чи відрізняється уява об’єкту похідного класу у пам’яті комп’ютера від атрибутів доступу?

  2. На що впливають атрибути доступу?

  3. Наведіть ієрархію класів системи введення/виведення С++.

  4. Чи можливо перевантажувати віртуальні функції?

  5. Чи повинні співпадати прототипи віртуальних функцій?

  6. Коли використовують абстрактні класи?

  7. Чи можливо створювати об’єкти для абстрактних класів?

  8. Коли використовується динамічне зв’язування та приведення типів?

  9. Назвіть проблеми використання RTTI.

  1. Лабораторна робота № 6 Обробка виняткових ситуацій

Мета роботи – навчитись обробляти виняткові ситуації засобами мови С++.

    1. Порядок виконання лабораторної роботи

  1. Застосувавши конспект лекцій та додаткову літературу, вивчити основні принципи обробки помилок (надзвичайних ситуацій).

  2. Виконати індивідуальні завдання відповідно до номера варіанта застосувавши мову програмування С++.

  3. Оформити звіт.

  4. Зробити висновки.

    1. Індивідуальне завдання

Для завдання з лабораторної роботи №6 створити клас Exception, що дозволяє обробляти наступні виняткові ситуації: помилки при відкритті файлу, помилки арифметичних операцій (ділення на 0), помилки вид динамічної пам’яті при перевантаженні операторів new та delete.

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

  1. Варіанти обробки помилок, що не стосуються виняткових ситуацій.

  2. Стандартні методи обробки виняткових ситуацій

  3. Що значить «виняток» та як він утворюється?

  4. Що робить оператор оператор catch()? Яки форми запису catch() ви знаєте?

ПЕРЕЛІК ЛІТЕРАТУРИ

  1. Стивен Прата, Язык программирования C++. Лекции и упражнения. – Издательство «Вильямс», 2017.- 1248 с.

  2. Бьерн Страуструп, Программирование. Принципы и практика с использованием C++. – Издательство «Вильямс», 2016.- 1328 с.

  3. Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес, Приемы объектно-ориентированного проектирования. Паттерны проектирования. - СПб.: Питер, 2016.- 366 с.

  4. Грэди Буч, Роберт А. Максимчук, Майкл У. Энгл, Бобби Дж. Янг, Джим Коналлен, Келли А. Хьюстон, Объектно-ориентированный анализ и проектирование с примерами приложений. – Издательство «Вильямс», 2010.- 720 с.

  5. Шилд, Г. Самоучитель С++/ Шилд, Г./ СПб.-БХВ-Петербург, 2002. – 688 с.

  6. Павловская, Т.А. С/С++. Программирование на языке высокого уровня.- СПб.: Питер, 2003.- 461 с.

  7. Мэтт Вайсфельд, Объектно-ориентированное мышление. - СПб.: Питер, 2014. - 304 с.

  8. Роберт Лафоре. Объектно-ориентированное программирование в С++. - СПб.: Питер, 2015.- 928 с.

  9. Герб Саттер, Решение сложных задач на С++. – Издательство «Вильямс», 2017.- 400 с.

  10. Брюс Эккель, Чак Эллисон, Философия C++. Практическое программирование. - СПб.: Питер, 2004.- 608 с.

  11. Скотт Мейерс, Эффективное использование STL. - СПб.: Питер, 2002.- 224 с.

  12. Глушаков С. В., Коваль А. В., Смирнов С. В., Язык программирования С++: Учебный курс /. — Харьков: Фолио; M.: OOO «Издательство АСТ» 2001. — 500 с.

  13. Дейтел, Х.М. Как программировать на С++./Х.М. Дейтел, П.Дж. Дейтел. - М.: ЗАО "Изд. БИНОМ", 2001.- 1152 с.

  14. Лафоре, Р. Объектно-ориентированное программирование в С++. Классика Computer Science.- СПб.: Питер, 2003.- 928 с.

  15. Лесневский А.С. Объектно-ориентированное рограммирование для начинающих.-М:Бином,2005.-232 с.

  16. http://www.ph4s.ru/bookprogramir_1.html