КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
ISВN 966-0000-00-0 1 страница
Грицюк Ю.І. Київ Навчальний посібник Юрій ГРИЦЮК ОБ'ЄКТНО-ОРІЄНТОВАНЕ Видавництво "ЮНІОР" ББК 32.973.26-01+18.2.75 Г85 УДК 681.3.07
Г 85 Об'єктно-орієнтоване програмування мовою С++: Навч. пос. – Київ: Вид-во "Юніор", 2006. – 464 с.: іл. 15, табл. 18.
Розглядаються особливості програмування мовою С++ – від основ програмування до об'єктно-орієнтованого. Спочатку детально проаналізовано основні елементи мови програмування С++, типи даних, настанови керування ходом виконання С++-програми, масиви та рядки як засоби для групування взаємопов'язаних між собою змінних, основи застосування покажчиків і функцій та розширення їх можливостей, додаткова інформація про типи даних і оператори, а також основні відомості про структури та об'єднання. Потім на конкретних прикладах вивчаються класи та робота з ними, перевантаження операторів і успадкування в класах, віртуальні функції та поліморфізм, шаблони в класах і оброблення виняткових ситуацій, С++-система введення-виведення, динамічна ідентифікація типів і оператори приведення типу, простір імен і інші ефективні програмні засоби, введення в стандартну бібліотеку шаблонів і особливості роботи препроцесора С++. У додатках наводиться С-орієнтована система введення-виведення, особливості використання застарілого С++-компілятора, а також.NET-розширення для C++. Даний навчальний посібник написано на основі книг Герберта Шилдта [26-29] – визнаного авторитета в області програмування мовами С, С++, Java і C#, професійного Windows-програміста, члена комітету ANSI/ISO, що приймав стандарт для мови С і С++. Окрім того, в посібнику використано деякі матеріали з книги Роберта Лафоре [11], що стосуються використання об'єктно-орієнтованого підходу до розроблення сучасного програмного забезпечення. Посібник призначено для студентів вищих навчальних закладів, що вивчають комп'ютерні науки, аспірантам і науковцям, а також розробникам програмного забезпечення.
ББК 32.973.26-01+18.2.75 Навчальне видання
Юрій Іванович ГРИЦЮК – канд. техн. наук, доц. каф. обчисл. техніки і моделювання технологічних процесів НЛТУ України
Об'єктно-орієнтоване програмування мовою С++
Головний редактор Ю.С. КОВТАНЮК Літературний редактор В.В. ДУДОК Технічний редактор Т.М. КОВТАНЮК Відповідальний редактор С.В. СОЛОВ'ЯН
Підписано до друку 00.00.06. Формат 70´100/16 Папір газетний. Гарнітура Times. Друк офсетний. Умов. друк. арк. 37,54. Обл.-вид. арк. 25.10 Наклад 1500 прим. Зам. № 00/2006
Видавництво "Юніор", Україна, 03142, м. Київ, вул. Стуса, 35-37, оф. 111 тел./факс: (044) 452-82-22; e-mail: office@junior.com.ua; http://www.junior.com.ua Свідоцтво про внесення суб'єкта видавничої справи до державного реєстру видавців, виготовників і розповсюджувачів видавничої продукції серія ДК, № 368 від 20.03.2001 р.
Макет підготовлено редакційно видавничим відділом НЛТУ України, 79057, м. Львів, вул. Генерала Чупринки, 103/54
ISВN 966-0000-00-0 Ó Ю.І. Грицюк, 2006 Ó Видавництво "Юніор", 2006 СТИСЛИЙ ЗМІСТ Про автора................................................................................................. 19 Передмова.................................................................................................. 20 Вступ............................................................................................................ 21 Частина І. Основи програмування мовою С++................................................................................. 26 Розділ 1. Історія виникнення мови програмування С++........... 27 Розділ 2. Основні елементи мови програмування С++.............. 34 Розділ 3. Основні типи даних у мові програмування C++......... 54 Розділ 4. Поняття про настанови керування ходом виконання С++-програми................................................................................. 71 Розділ 5. Масиви та рядки – засоби групування взаємопов'язаних між собою змінних..................................... 90 Розділ 6. Особливості застосування покажчиків....................... 109 Розділ 7. Основи застосування С++-функцій.............................. 128 Розділ 8. Використання засобів програмування для розширення можливостей С++-функцій............................. 153 Розділ 9. С++-специфікатори та спеціальні оператори............ 173 Розділ 10. Поняття про структури і об'єднання даних.............. 202 Частина ІІ. Об'єктно-орієнтоване програмування мовою С++...................... 227 Розділ 11. Основи розроблення об'єктно-орієнтованих програм мовою C++..................................................................................... 228 Розділ 12. Введення в класи.............................................................. 239 Розділ 13. Робота з класами............................................................... 263 Розділ 14. Перевантаження операторів.......................................... 285 Розділ 15. Успадкування в класах.................................................. 315 Розділ 16. Віртуальні функції та поліморфізм............................ 339 Розділ 17. Шаблони в класах............................................................ 353 Розділ 18. Оброблення виняткових ситуацій.............................. 370 Розділ 19. С++-система введення-виведення потокової інформації...................................................................................... 388 Розділ 20. Динамічна ідентифікація типів і оператори приведення типу.......................................................................... 420 Розділ 21. Поняття про простори імен і інші ефективні програмні засоби......................................................................... 436 Розділ 22. Введення в стандартну бібліотеку шаблонів........... 461 Розділ 23. Особливості роботи препроцесора С++..................... 500 Розділ 24. Формалізація процесу розроблення об'єктно-орієнтованого програмного забезпечення.......................... 511 Додатки. Доповнення до С++......................... 543 Додаток А. Основи створення консольних програм у середовищі Borland C++ Builder............................................. 544 Додаток Б. Основи створення консольних програм у середовищі Microsoft Visual C++............................................ 552 Додаток В. Дещо про С-систему введення-виведення.............. 558 Додаток Г. Особливості використання застарілого С++-компілятора.................................................................................. 572 Додаток Д..NET-розширения для C++........................................... 574 Література............................................................................................... 577 ЗМІСТ Про автора........................................................................ 19 Передмова......................................................................... 20 Вступ.................................................................................... 21 Частина І. Основи програмування мовою С++................................................................................. 26 Розділ 1. Історія виникнення мови програмування С++........................................... 27 1.1. Витоки мови програмування C++.............................................. 27 1.1.1. Причини створення мови програмування С.......................... 27 1.1.2. Передумови виникнення мови програмування C++............. 29 1.1.3. Поява мови програмування C++............................................. 30 1.1.4. Етапи вдосконалення мови програмування C++................... 30 1.2. Основні ознаки об'єктно-орієнтованого програмування.. 31 1.2.1. Поняття про інкапсуляцію........................................................ 31 1.2.2. Поняття про поліморфізм......................................................... 32 1.2.3. Поняття про успадкування....................................................... 32 1.2.4. Мова програмування C++ і реалізація об'єктно-орієнтованого програмування.......................................................................... 33 1.2.5. Зв'язок мови програмування C++ з мовами Java і С#............ 33 Розділ 2. Основні елементи мови програмування С++........................................... 34 2.1. Розроблення найпростішої С++-програми.............................. 34 2.1.1. Введення коду програми.......................................................... 35 2.1.2. Компілювання програми.......................................................... 35 2.1.3. Виконання програми................................................................ 35 2.1.4. Порядкóвий аналіз програми................................................... 36 2.1.5. Оброблення синтаксичних помилок....................................... 38 2.2. Розроблення реальної навчальної програми......................... 39 2.2.1. Присвоєнням значень змінним................................................ 39 2.2.2. Введення даних у програму..................................................... 40 2.2.3. Деякі можливості виведення даних......................................... 41 2.2.4. Введення нового типу даних................................................... 41 2.3. Функції – "будівельні блоки" С++-програми........................ 42 2.3.1. Основні поняття про функції................................................... 42 2.3.2. Загальний формат С++-функцій.............................................. 44 2.3.3. Передавання аргументів функції............................................. 44 2.3.4. Повернення функціями аргуметів........................................... 46 2.3.5. Спеціальна функція main()................................................... 47 2.4. Поняття про логічну та циклічну настанови......................... 47 2.4.1. Логічна настанова if............................................................... 47 2.4.2. Циклічна настанова for.......................................................... 48 2.5. Структуризація С++-програми................................................... 50 2.5.1. Поняття про блоки програми................................................... 50 2.5.2. Використання крапки з комою і розташування настанов..... 51 2.5.3. Практика застосування відступів............................................ 51 2.6. Елементи визначення мови програмування C++................. 51 2.6.1. Поняття про ключові слова...................................................... 51 2.6.2. Розроблення ідентифікаторів користувача............................. 52 2.6.3. Використання стандартної бібліотеки.................................... 52 Розділ 3. Основні типи даних у мові програмування C++........................................... 54 3.1. Оголошення змінних...................................................................... 55 3.1.1. Локальні змінні.......................................................................... 55 3.1.2. Формальні параметри................................................................ 56 3.1.3. Глобальні змінні......................................................................... 56 3.2. Модифікатори типів даних.......................................................... 57 3.3. Поняття про літерали..................................................................... 60 3.3.1. Шістнадцяткові та вісімкові літерали...................................... 61 3.3.2. Рядкові літерали......................................................................... 61 3.3.3. Символьні керівні послідовності............................................. 61 3.4. Ініціалізація змінних...................................................................... 62 3.5. Оператори С++-програми............................................................. 63 3.5.1. Поняття про вбудовані оператори........................................... 63 3.5.2. Арифметичні оператори........................................................... 64 3.5.3. Оператори інкремента і декремента........................................ 65 3.5.4. Історія походження імені мови програмування C++............. 66 3.5.5. Оператори відношення та логічні оператори......................... 66 3.6. Запис арифметичних виразів...................................................... 68 3.6.1. Перетворення типів у виразах................................................. 68 3.6.2. Перетворення, що відбуваються під час використання типу bool........................................................................................... 69 3.6.3. Операція приведення типів даних........................................... 69 Розділ 4. Поняття про настанови керування ходом виконання С++-програми.............. 71 4.1. Використання настанови вибору if......................................... 71 4.1.1. Умовний вираз........................................................................... 72 4.1.2. Вкладені if-настанови............................................................. 73 4.1.3. Конструкція if-else-if...................................................... 74 4.2. Використання настанови багатовибірного розгалуження switch............................................................................................... 75 4.2.1. Особливості роботи настанови................................................ 75 4.2.2. Організація вкладених настанов багатовибірного розгалуження............................................................................. 78 4.3. Використання настанови організації циклу for.................. 78 4.3.1. Варіанти використання настанови організації циклу for... 80 4.3.2. Відсутність елементів у визначенні циклу............................. 81 4.3.3. Нескінченний цикл................................................................... 82 4.3.4. Цикли часової затримки........................................................... 82 4.4. Використання інших ітераційних настанов........................... 82 4.4.1. Ітераційна настанова while................................................... 82 4.4.2. Ітераційна настанова do-while............................................ 84 4.4.3. Використання настанови переходу continue................... 85 4.4.4. Використання настанови break для виходу з циклу.......... 85 4.4.5. Організація вкладених циклів.................................................. 87 4.5. Використання настанови безумовного переходу goto...... 87 4.6. Приклад використання настанов керування......................... 88 Розділ 5. Масиви та рядки – засоби групування взаємопов'язаних між собою змінних.................................................... 90 5.1. Одновимірні масиви....................................................................... 90 5.1.1. На межах масивів "прикордонної застави" немає.................. 92 5.1.2. Сортування масиву................................................................... 92 5.2. Побудова символьних рядків...................................................... 94 5.2.1. Оголошення рядкового літерала.............................................. 94 5.2.2. Зчитування рядків з клавіатури............................................... 94 5.3. Застосування бібліотечних функцій для оброблення рядків.............................................................................................................. 96 5.3.1. Використання функції strcpy()......................................... 96 5.3.2. Використання функції strcpy()......................................... 96 5.3.3. Використання функції strcmp()......................................... 97 5.3.4. Використання функції strlen()......................................... 98 5.3.5. Використання ознаки завершення рядка................................ 99 5.4. Дво- та багатовимірні масиви................................................... 100 5.4.1. Двовимірні масиви.................................................................. 100 5.4.2. Багатовимірні масиви............................................................. 101 5.5. Ініціалізація масивів.................................................................... 102 5.5.1. Ініціалізація "розмірних" масивів.......................................... 102 5.5.2. "Безрозмірна" ініціалізація масивів........................................ 105 5.6. Масиви рядків................................................................................ 105 5.6.1. Побудова масивів рядків........................................................ 106 5.6.2. Приклад використання масивів рядків................................. 106 Розділ 6. Особливості застосування покажчиків.......................................................... 109 6.1. Основні поняття про покажчики............................................. 109 6.2. Використання покажчиків з операторами присвоєння.... 110 6.2.1. Оператори роботи з покажчиками........................................ 110 6.2.2. Важливість застосування базового типу покажчика........... 111 6.2.3. Присвоєння значень за допомогою покажчиків.................. 112 6.3. Використання покажчиків у виразах..................................... 113 6.3.1. Арифметичні операції над покажчиками............................. 113 6.3.2. Порівняння покажчиків.......................................................... 115 6.4. Покажчики і масиви.................................................................... 115 6.4.1. Основні відмінності між індексуванням елементів масивів і арифметичними операціями над покажчиками................... 116 6.4.2. Індексування покажчика........................................................ 118 6.4.3. Взаємозамінність покажчиків і масивів................................ 118 6.4.4. Масиви покажчиків................................................................. 119 6.4.5. Покажчики і рядкові літерали................................................ 121 6.4.5. Приклад порівняння покажчиків........................................... 122 6.5. Ініціалізація покажчиків............................................................ 123 6.5.1. Домовленість про нульові покажчики.................................. 123 6.5.2. Покажчики і 16-розрядні середовища................................... 123 6.5.3. Багаторівнева непряма адресація........................................... 124 6.6. Виникнення проблем під час використання покажчиків 125 6.6.1. Неініціалізовані покажчики................................................... 125 6.6.2. Некоректне порівняння покажчиків..................................... 125 6.6.3. Не встановлення покажчиків................................................. 126 Розділ 7. Основи застосування С++-функцій 128 7.1. Правила дії областей видимості функцій............................. 128 7.1.1. Локальні змінні........................................................................ 128 7.1.2. Оголошення змінних в ітераційних настановах і настановах вибору...................................................................................... 132 7.1.3. Формальні параметри.............................................................. 133 7.1.4. Глобальні змінні....................................................................... 133 7.2. Передача покажчиків і масивів як аргументів функціям........................................................................................................... 135 7.2.1. Виклик функцій з покажчиками............................................ 135 7.2.2. Виклик функцій з масивами.................................................. 136 7.2.3. Передача функціям рядків...................................................... 139 7.3. Аргументи функції main(): argc і argv.............................. 140 7.3.1. Передача програмі числових аргументів командного рядка................................................................................................... 142 7.3.2. Перетворення числових рядків у числа................................ 143 7.4. Використання у функціях настанови return..................... 144 7.4.1. Завершення роботи функції.................................................... 144 7.4.2. Повернення значень................................................................ 144 7.4.3. Функції, які не повертають значень (void-функції)........... 146 7.4.4. Функції, які повертають покажчики..................................... 147 7.4.5. Прототипи функцій................................................................. 148 7.4.6. Грунтовніше про заголовки у C++-програмах..................... 149 7.4.7. Організація рекурсивних функцій......................................... 150 Розділ 8. Використання засобів програмування для розширення можливостей С++-функцій........................ 153 8.1. Способи передачі аргументів функціям................................ 153 8.1.1. Механізм передачі аргументів у мові програмування C++. 153 8.1.2. Використання покажчика для забезпечення виклику за посиланням.............................................................................. 154 8.2. Посилальні параметри................................................................ 155 8.2.1. Механізм дії посилальних параметрів................................... 156 8.2.2. Варіанти оголошень посилальних параметрів..................... 158 8.2.3. Повернення посилань............................................................. 158 8.2.4. Створення обмеженого (безпечного) масиву....................... 161 8.2.5. Поняття про незалежні посилання........................................ 162 8.2.6. Врахування обмежень під час використання посилань...... 163 8.2.7. Перевантаження функцій....................................................... 163 8.2.8. Поняття про ключове слово overload.............................. 166 8.3. Передача аргументів функції за замовчуванням............... 166 8.3.1. Можливі випадки передачі аргументів функції за замовчуванням........................................................................ 167 8.3.2. Порівняння можливості передачі аргументів функції за замовчуванням з її перевантаженням................................... 168 8.3.3. Особливості використання аргументів, що передаються функції за замовчуванням...................................................... 169 8.4. Перевантаження функцій і неоднозначності, що при цьому виникають..................................................................................... 170 Розділ 9. С++-специфікатори та спеціальні оператори............................................................. 173 9.1. Специфікатори типів даних....................................................... 173 9.1.1. Застосування специфікатора типу даних const................ 173 9.1.2. Застосування специфікатора типу даних volatile......... 175 9.2. Специфікатори класів пам'яті.................................................. 176 9.2.1. Застосування специфікатора класу пам'яті auto................ 176 9.2.2. Застосування специфікатора класу пам'яті extern........... 177 9.2.3. Статичні змінні........................................................................ 178 9.2.4. Регістрові змінні...................................................................... 181 9.2.5. Походження модифікатора register................................ 182 9.3. Порозрядні оператори.................................................................. 184 9.3.1. Порозрядні оператори І, АБО, що виключає АБО і НЕ...... 184 9.3.2. Оператори зсуву...................................................................... 187 9.4. Спеціальні оператори розширення можливостей мови С++........................................................................................................... 189 9.4.1. Перерахунки – списки іменованих цілочисельних констант................................................................................................... 189 9.4.2. Створення нових імен для наявних типів даних................. 191 9.4.3. Оператор "знак запитання"..................................................... 192 9.4.4. Складені оператори присвоєння............................................ 193 9.4.5. Оператор "кома"...................................................................... 194 9.4.6. Декілька присвоєнь "в одному"............................................. 194 9.4.7. Використання ключового слова sizeof............................ 195 9.5. С++-система динамічного розподілу пам'яті...................... 196 9.5.1. Оператори динамічного розподілу пам'яті........................... 196 9.5.2. Ініціалізація динамічно виділеної пам'яті............................. 198 9.5.3. Динамічне виділення пам'яті для масивів............................. 198 9.5.4. Функції виділення та звільнення пам'яті у мові програмування С..................................................................... 199 9.6. Зведена таблиця пріоритетів виконання С++-операторів 201 Розділ 10. Поняття про структури і об'єднання даних........................................................................ 202 10.1. Робота зі структурами............................................................... 202 10.1.1. Основні положення............................................................... 202 10.1.2. Доступ до членів структури................................................. 204 10.1.3. Масиви структур................................................................... 205 10.1.4. Приклад застосування структури........................................ 205 10.1.5. Присвоєння структур............................................................ 210 10.1.6. Передача структури функції як аргументу......................... 211 10.1.7. Повернення функцією структури як значення................... 212 10.2. Використання покажчиків на структури і оператора "стрілка"........................................................................................ 213 10.2.1. Особливості використання покажчиків на структури...... 214 10.2.2. Приклад використання покажчиків на структури............. 214 10.3. Посилання на структури.......................................................... 216 10.3.1. Використання структур під час передачі функції параметрів за посиланням.......................................................................... 217 10.3.2. Використання як членів структур масивів і структур....... 218 10.3.3. Порівняння С- і С++-структур............................................. 219 10.4. Бітові поля структур.................................................................. 219 10.5. Особливості використання об'єднань.................................. 221 10.5.1. Оголошення об'єднання........................................................ 221 10.5.2. Анонімні об'єднання............................................................. 225 10.5.3. Використання оператора sizeof для гарантії переносності коду програми......................................................................... 226 Частина ІІ. Об'єктно-орієнтоване програмування мовою С++...................... 227 Розділ 11. Основи розроблення об'єктно-орієнтованих програм мовою C++........ 228 11.1. Потреба об'єктно-орієнтованого програмування............ 228 11.1.1. Процедурні мови програмування........................................ 228 11.1.2. Поділ програми на функції................................................... 228
Дата добавления: 2014-11-29; Просмотров: 504; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |