Студопедия

КАТЕГОРИИ:


Архитектура-(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: [email protected]; 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; Просмотров: 480; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.102 сек.