ISВN 966-0000-00-0
Розглядаються основні засоби обєктно-орієнтованого і узагальненого підходу на прикладі мови програмування С++. Вивчаються класи та робота з ними, конструктори та їх перевантаження, перевантаження операторів і методів класу, просте і множинне успадкування в класах, віртуальні функції та поліморфізм, шаблони функцій та класів, оброблення виняткових ситуацій, С++-система введення-виведення. Значна частина робіт пов’язана з шаблонами бібліотеки STL. До всіх робіт є короткий теоретичний матеріал з частинами програм і повним робочим кодом прототипу до лабораторної роботи. До кожної теми розроблено до 20 індивідуальних завдань. Практикум призначено для студентів ВУЗів, що вивчають комп'ютерні науки.
ББК 32.973.26-01+18.2.75
Навчальне видання
Світлана Іванівна КОШИРЕЦЬ – канд. техн. наук, ст. викладач каф. обчисл. техніки і моделювання технологічних процесів НЛТУ України Микола Федорович САЛО – асист. каф. обчисл. техніки і моделювання технологічних процесів НЛТУ України Ярослав Іванович СОКОЛОВСЬКИЙ – доктор техн. наук, професор каф. обчисл. техніки і моделювання технологічних процесів НЛТУ України
О'єктно-орієнтоване програмування мовою С++
ISВN 966-0000-00-0 Ó С.І. Коширець, М.Ф. Сало, Я.І. Соколовський, 2012 ЗМІСТ ВСТУП.................................................................................................................... 6 Лабораторна робота №1. Робота в інтегрова- ному середовищі Visual Studio C++ 2010.......................................................................... 8 1.1. Програма роботи..................................................................................... 8 1.2. Вказівки до виконання роботи................................................................ 8 1.3.Теоретичні відомості................................................................................. 8 1.4. Зразок виконання роботи...................................................................... 12 1.5. Індивідуальні завдання.......................................................................... 15 1.6. Контрольні запитання............................................................................ 16 Лабораторна робота №2. Робота з класами, мАСИВИ ОБ’ЄКТІВ....................................................................................................................... 18 2.1. Програма роботи................................................................................... 18 2.2. Вказівки до виконання роботи.............................................................. 18 2.3. Теоретичні відомості.............................................................................. 18 2.4. Зразок виконання роботи...................................................................... 21 2.5. Індивідуальні завдання.......................................................................... 23 2.6. Контрольні запитання............................................................................ 25 Лабораторна робота №3. Робота з конструкторами та перевантаження методів класу................................................. 26 3.1. Програма роботи................................................................................... 26 3.2. Вказівки до виконання роботи.............................................................. 26 3.3. Теоретичні відомості.............................................................................. 26 3.4. Розширений опис завдання.................................................................... 31 3.5. Індивідуальні завдання.......................................................................... 32 3.6. Контрольні запитання............................................................................ 36 Лабораторна РОБОТА №4. Перевантаження операторів для класу......................................................................................................... 37 4.1. Програма роботи................................................................................... 37 4.2. Вказівки до виконання роботи.............................................................. 37 4.3. Теоретичні відомості.............................................................................. 37 4.4. Розширений опис завдання.................................................................... 40 4.5. Індивідуальні завдання.......................................................................... 40 4.6. Контрольні запитання............................................................................ 44 Лабораторна робота №5. одинарне Успадкування............. 45 5.1. Програма роботи................................................................................... 45 5.2. Вказівки до виконання роботи.............................................................. 45 5.3. Теоретичні відомості.............................................................................. 45 5.4. Зразок виконання роботи...................................................................... 48 5.5. Індивідуальні завдання.......................................................................... 50 5.6. Контрольні запитання............................................................................ 54 Лабораторна робота №6. Множинне успадкування........... 55 6.1. Програма роботи................................................................................... 55 6.2. Вказівки до виконання роботи.............................................................. 55 6.3. Теоретичні відомості.............................................................................. 55 6.4. Зразок виконання роботи...................................................................... 57 6.5. Індивідуальні завдання.......................................................................... 60 6.6. Контрольні запитання............................................................................ 64 Лабораторна робота №7. Поліморфізм та віртуальні функції 66 7.1. Програма роботи................................................................................... 66 7.2. Вказівки до виконання роботи.............................................................. 66 7.3. Теоретичні відомості.............................................................................. 66 7.4. Зразок виконання роботи...................................................................... 69 7.5. Індивідуальні завдання.......................................................................... 72 7.6. Контрольні запитання............................................................................ 74 Лабораторна робота №8. Шаблони функцій і класів........... 76 8.1. Програма роботи................................................................................... 76 8.2. Вказівки до виконання роботи.............................................................. 76 8.3. Теоретичні відомості.............................................................................. 76 8.4. Зразок виконання роботи...................................................................... 77 8.5. Індивідуальні завдання.......................................................................... 80 8.6. Контрольні запитання............................................................................ 82 Лабораторна робота №9. засоби ОПРА ЦЮВАННЯ ВИняткових СИТУАЦІЙ В C++...................................................................................... 84 9.1. Програма роботи................................................................................... 84 9.2. Вказівки до виконання роботи.............................................................. 84 9.3. Теоретичні відомості.............................................................................. 84 9.4. Зразок виконання роботи...................................................................... 89 9.5. Індивідуальні завдання.......................................................................... 90 9.6. Контрольні запитання............................................................................ 91 Лабораторна робота №10. Стандартні потокові класи...... 92 10.1. Програма роботи................................................................................. 92 10.2. Вказівки до виконання роботи............................................................ 92 10.3. Теоретичні відомості............................................................................ 92 10.4. Зразок виконання роботи.................................................................... 94 10.5. Індивідуальні завдання...................................................................... 100 10.6. Контрольні запитання........................................................................ 106 Лабораторна робота №11. Файлові і рядкові потоки........ 107 11.1. Програма роботи............................................................................... 107 11.2. Вказівки до виконання роботи.......................................................... 107 11.3. Теоретичні відомості.......................................................................... 107 11.4. Зразок виконання роботи.................................................................. 108 11.5. Індивідуальні завдання...................................................................... 110 11.6. Контрольні запитання........................................................................ 110 Лабораторна робота №12. Стандартна бібліотека шаблонів STL, контейнери та ітератори................................................................ 112 12.1. Програма роботи............................................................................... 112 12.2. Вказівки до виконання роботи.......................................................... 112 12.3. Теоретичні відомості.......................................................................... 112 12.4. Зразок виконання роботи.................................................................. 116 12.5. Індивідуальні завдання...................................................................... 118 12.6. Контрольні запитання........................................................................ 119 Лабораторна робота №13. Стандартна бібліотека шаблонів STL, Алгоритми............................................................................................ 120 13.1. Програма роботи............................................................................... 120 13.2. Вказівки до виконання роботи.......................................................... 120 13.3. Теоретичні відомості.......................................................................... 120 13.4. Зразок виконання роботи.................................................................. 122 13.5. Індивідуальні завдання...................................................................... 123 13.6. Контрольні запитання........................................................................ 124 Література...................................................................................................... 126
ВСТУП У даному лабораторному практикумі підібрано низку лабораторних робіт, призначених для набуття студентами основних навиків об’єктно-орієнтованого програмування мовою С++ в середовищі Visual Studio. Практикум побудовано таким чином, що в першій роботі описано методику роботи в інтегрованому середовищі Visual Studio C++, а саме в консольному і візуальному режимах, описано як правильно відлагоджувати та реалізовувати проекти використовуючи дане середовище. Решта робіт присвячені вивченню технології обєктно-орієнтованого і узагальненого підходу до програмування мовою С++. Перша частина робіт дає змогу отримати навики з створення класів та нанаданням їм функціональних можливостей, а також опису їх взаємодії. Дані роботи реалізовують основні принципи ООП: інкапсуляцію, поліморфізм та успадкування через конструктори і деструктори, перевантаження методів та операцій, просте і множинне успадкування, віртуальні функціх та абстрактні класи. Темі потокових класів писвячено дві роботи, які дають змогу навчитись контролювати різного роду потоки і форматувати їх дані при виводі, перевантажувати оператори вводу-виводу для роботи з власними типами даних. Окремою роботою виділено тему оброблення виключень з метою оволодіння концепцією програмування захисту від помилок, шляхом включення в код програми засобів контролю її нормального виконання. Друга частина практикуму дає змогу навчитись застосовувати шаблони проектування для вирішення поставлених задач, а саме вміти створювати контейнери, отримувати доступ до їх елементів за допомогою літераторів і виконувати різноманітні операції над об’єктами, використовуючи різні види алгоритмів. Для наочного відображення структури класів та їх взаємодії в практикумі використовуються засоби UML, а саме діаграми класів і варіантів використання. Звичайно, запропоновані завдання не можуть охопити всю повноту можливостей С++. Проте набутих навичок буде достатньо для оволодіння технологією обєктно-орієнтованого підходу мовою С++ і її використання для вирішення різних типів задач та подальшого самовдоналення. В результаті виконання лабораторних робіт студенти: · знатимуть синтаксис, симантику, технології та функціональні можливості об’єктно-орієнтованого програмування мовою С++; · вмітимуть будувати діаграми класів і варіантів використання та описувати класи і відношення між ними для розв’язування сформульованих задач засобами мови С++, редагувати, відлагоджувати та реалізовувати програми в середовищі Visual Studio, використовувати в програмах шаблони STL для зменшення їх об’єму та часу виконання. Матеріал цього практикуму значною мірою відповідає робочій навчальній програмі дисципліни " Об'єктно-орієнтоване програмування".
Лабораторна робота №1. Робота в інтегрованому середовищі Visual Studio C++ 2010 МЕТА РОБОТИ: ознайомитись з основними компонентами інтегрованого середовища Visual Studio C++ 2010, навчитись створювати, відлагоджувати та реалізовувати проекти програм використовуючи об’єктно-орієнтоване програмування. 1.1. Програма роботи 1.1.1. Отримати завдання. 1.1.2. Написати програми відповідних класів, основну та відповідні допоміжні функції, згідно з вказівками до виконання роботи. 1.1.3. Підготувати власні коректні вхідні дані (вказати їх формат і значення) і проаналізувати їх. 1.1.4. Оформити електронний звіт про роботу та захистити її. 1.2. Вказівки до виконання роботи 1.2.1. Студент, згідно з індивідуальним номером, вибирає своє завдання з розд. 1.5 і записує його до звіту. 1.2.2. Оголошення класу (структури), основну та відповідні допоміжні функції необхідно запрограмувати так, як це показано у розд. 1.4. 1.2.3. Власних вхідних даних необхідно підготувати не менше двох комплектів. Їхні значення мають бути коректними, знаходитися в розумних межах і відповідати тим умовам, які стосуються індивідуального завдання. 1.2.4. Звіт має містити такі розділи: ● мету роботи та завдання з записаною умовою задачі; ● коди всіх використовуваних.h і.ccp файлів, а також пояснення до них; ● результати реалізації програми, які виведені в вікно форми; ● діаграму класів з поясненням; ● висновки, в яких наводиться призначення програми, обмеження на її застосування і можливі варіанти удосконалення, якщо такі є. 1.3.Теоретичні відомості Програма в Visual Studio C++ 2010 являє собою проект, який містить вихідні файли на С++ та файли необхідних ресурсів (рис. 1). Перелік файлів, які входять в проект, а також властивості проекту зберігаються в файлі проекту з розширенням .vcxproj. Збірка проекту – процес перетворення вихідних файлів в деяке представлення: виконуючий файл (.ехе), динамічну (.DLL) чи статичну (.LIB) бібліотеку. В процесі збірки здійснюється компіляція вихідних файлів для отримання об’єктних файлів (файлів з кодом отриманих в результаті трансляції компілятором чи асемблером вихідного тексту програми) і їх компонування (зв’язування об’єктних модулів програми між собою і з бібліотеками часу виконання) в додатки чи бібліотечні модулі.
![]() Рис. 1. Вікно середовища Visual Studio C++ 2010 1 – панель інструментів 2 – вікно редактора вихідного коду 3 – панель виводу інформації 4 – провідник задач (Explorer Solution) Середовище Visual Studio C++ 2010 дає змогу використовувати декілька проектів разом в складі однієї задачі (анг. Solution), що значно полегшує розробку великих програмних комплексів, які складаються з декількох зв’язаних між собою проектів. Саме від налаштування цих зв’язків і залежить хід виконання задачі. Для налаштування зв’язків між проектами слід в контекстному меню проекту обрати пункт Project Dependencies. Для створення нового проекту слід викликати майстер проектів (File–> New) і обрати тип проекту (рис. 2): · Windows Application – додаток з віконним інтерфейсом; · Console Application – консольний додаток; · Static Library – статична бібліотека, файл .lib, що містить функції, котрі можуть бути скомпоновані в складі інших модулів; · Dynamic Library – динамічна бібліотека,.DLL файл, який містить функції, що можуть сумісно використовуватись декількома додатками одночасно; · MFC Application – додаток, який використовує бібліотеку базових класів MFC, що дає змогу створити віконні додатки в Windows. · ATL Project – СОМ-сервер, організований у вигляді динамічної бібліотеки, виконавчого модуля чи сервісу, які використовують бібліотеку ATL. Рис. 2. Вікно майстра проектів Властивості будь-якого проекту можна редагувати, для цього слід обрати в контекстному меню проекту в провіднику задач (Explorer Solution) пункт Properties (рис. 3). Рис. 3. Налаштування властивостей проекту
Для збірки проекту в складі однієї задачі слід натиснути клавішу F7, а щоб скомпілювати вихідний файл – Ctrl-F7. Проект може бути поданий в двох основних конфігураціях: робочій і фінальній. Робоча конфігурація (Debug) модуля має більший розмір і меншу швидкодію, але найбільше забезпечує можливості редагування на рівні вихідного коду. При компіляції відключається оптимізація коду, в модуль поміщається додаткова інформація для редагування коду. Фінальна конфігурація (Release) характеризується меншим розміром і більшою швидкодією. Користувач може обрати необхідну конфігурацію із списку, що розкривається на панелі інструментів (рис. 4) і тоді при наступній збірці проект буде скомпільований і скомпонований в обраній конфігурації. Окрім цього користувач може обрати платформу (32-бітну чи 64-бітну) (рис. 4). Рис. 4. Вибір конфігурації проекту Для пакетної збірки проекту відразу ж в декількох конфігураціях можна скористатись командою Build–> Batch Build … Для запуску активного проекту слід натиснути комбінацію Ctrl-F5, але якщо в задачі декілька проектів, то один з них можна помітити як активний обравши в контекстному меню проекту Set as StartUp Project. Налагодження проекту – це процес пошуку і виправлення помилок в програмі. Для цього в даному середовищі можна використовувати наступні можливості: · зупинення виконання програми в вказаних місцях; · трасування (покрокове виконання) програми; · перегляд і зміна значень змінних і вмістимого комірок пам’яті (в повних версіях середовища). Для встановлення точок зупинки використовують клавішу F9. Для трасування програм використовують такі клавіші: · F10 – виконати текучий оператор без входу в середину функції чи методу класу; · F11 – виконати текучий оператор з входом в середину функції чи метод класу; · Shift-F11 – продовжити виконання програми до виходу з текучої функції чи методу класу; · Ctrl-F10 – продовжити виконання програми до досягнення позиції курсору; · Alt-Num* – встановити курсор в позицію виконання наступного оператора; · F5 – продовжити виконання програми. Дане середовище розробки програм дає змогу внести зміни в програму в процесі її виправлення і продовжити виконання виправленої програми без перезапуску. Для цього після внесення змін в програму слід натиснути комбінацію Alt-F10 або одну з команд трасування програми. Для зупинення роботи програми і виходу з режиму виправлення помилок слід натиснути комбінацію клавіш Shift–F5. 1.4. Зразок виконання роботи Для створення нового проекту з формами потрібно обрати пункт меню File-> New-> Project-> CLR-> Windows Form і вказати ім’я проекту і паку для його зберігання. При цьому повинна з’явитись порожня форма та порожні файли для створення проекту (рис. 5) і ми з допомогою інструментів на панелі Toolbox вставляємо необхідні для її заповнення.
Рис. 5. Вигляд форми і провідника задач для проекту Для збереження розмірів форми можна заблокувати її розгортання, задавши відповідну властивість форми MaximizeBox = False. Тепер для опису класу потрібно обрати пункт меню Project-> Add Class -> C++ Class і задати необхідні дані в вікні діалогу (рис. 6). Рис. 6. Вікно діалогу для опису класу Після цього середовище само автоматично створить відповідні файли з розширенням.h i.cpp. В заголовний файл потрібно розмістити опис класу (згідно діаграми класів – рис. 7), а в інший – визначення його функцій чи методів.
|