Author(s): Лафоре Р.
Series: Классика Computer Science
Edition: 2-е изд.
Publisher: Питер
Year: 2013
Language: Russian
Pages: 924
В C++......Page 3
Краткое содержание......Page 5
Содержание......Page 7
Предисловие......Page 24
Объектно-ориентированное программирование......Page 25
Языки и платформы разработки......Page 26
Последовательность изложения материала......Page 27
Исходные тексты программ......Page 28
Унифицированный язык моделирования (UML)......Page 29
Оптимальный порядок изучения ООП......Page 30
От издательства......Page 31
Процедурные языки......Page 32
Недостатки структурного программирования......Page 33
Неконтролируемый доступ к данным......Page 34
Моделирование реального мира......Page 35
Объектно-ориентированный подход......Page 36
Аналогия......Page 37
Объекты......Page 38
Классы......Page 39
Наследование......Page 40
Полиморфизм и перегрузка......Page 42
С++ и С......Page 43
Универсальный язык моделирования (UML)......Page 44
Резюме......Page 45
Вопросы......Page 46
программирования на C++......Page 48
Функции......Page 49
Разделяющие знаки......Page 51
Вывод с использованием cout......Page 52
Строковые константы......Page 53
Заголовочные файлы......Page 54
Синтаксис комментариев......Page 55
Переменные целого типа......Page 56
Описание переменных целого типа......Page 57
Целые константы......Page 59
Манипулятор endl......Page 60
Символьные переменные......Page 61
Символьные константы......Page 62
Управляющие последовательности......Page 63
Ввод с помощью cin......Page 64
Определение переменных при первом использовании......Page 65
Приоритеты выполнения операций......Page 66
Тип float......Page 67
Вещественные константы......Page 68
Префикс const......Page 69
Манипулятор setw......Page 71
Множественное определение......Page 72
Беззнаковые типы данных......Page 73
Неявные преобразования типов......Page 75
Арифметические операции......Page 78
Библиотечные функции......Page 82
Формы директивы #include......Page 84
Резюме......Page 85
Вопросы......Page 87
Упражнения......Page 88
Операции отношения......Page 92
Цикл for......Page 94
Инкрементирующее выражение......Page 96
Несколько операторов в теле цикла......Page 97
Блоки и область видимости переменных......Page 98
Форматирование и стиль оформления циклов......Page 99
Варианты цикла for......Page 100
Несколько инициализирующих выражений и условий цикла......Page 101
Цикл while......Page 102
Несколько операторов в цикле while......Page 104
Приоритеты арифметических операций и операций отношения......Page 105
Цикл do......Page 106
Ветвления......Page 108
Условный оператор if......Page 109
if внутри циклов......Page 110
Функция exit()......Page 111
Функция getche()......Page 113
Условия с присваиванием......Page 114
Вложенные ветвления if...else......Page 116
if и else во вложенных ветвлениях......Page 117
Оператор switch......Page 119
Оператор break......Page 121
switch и символьные переменные......Page 122
Ключевое слово default......Page 123
Условная операция......Page 124
Операция логического И......Page 127
Логическое ИЛИ......Page 128
Целые величины в качестве булевых......Page 129
Приоритеты операций C++......Page 130
Оператор break......Page 131
Расширенная таблица символов ASCII......Page 133
Резюме......Page 135
Вопросы......Page 136
Упражнения......Page 138
Структуры......Page 142
Определение структуры......Page 143
Определение структурной переменной......Page 144
Другие возможности структур......Page 146
Пример применения структур......Page 148
Вложенные структуры......Page 150
Пример карточной игры......Page 154
Перечисления......Page 156
Дни недели......Page 157
Перечисления и программа подсчета числа слов......Page 159
Пример карточной игры......Page 161
Недостаток перечислений......Page 162
Резюме......Page 163
Вопросы......Page 164
Упражнения......Page 165
Глава 5 Функции......Page 168
Простые функции......Page 169
Объявление функции......Page 170
Определение функции......Page 171
Обычные и библиотечные функции......Page 172
Отсутствие объявления......Page 173
Передача констант в функцию......Page 174
Передача значений переменных в функцию......Page 175
Передача аргументов по значению......Page 176
Структурные переменные в качестве аргументов......Page 177
Значение, возвращаемое функцией......Page 181
Оператор return......Page 182
Структурная переменная в качестве возвращаемого значения......Page 185
Ссылки на аргументы......Page 186
Передача по ссылке аргументов стандартных типов......Page 187
Усложненный вариант передачи по ссылке......Page 189
Передача структурных переменных по ссылке......Page 191
Перегруженные функции......Page 192
Переменное число аргументов функции......Page 193
Различные типы аргументов......Page 195
Рекурсия......Page 196
Встраиваемые функции......Page 198
Аргументы по умолчанию......Page 200
Область видимости и класс памяти......Page 202
Область видимости локальных переменных......Page 203
Глобальные переменные......Page 205
Статические локальные переменные......Page 207
Возвращение значения по ссылке......Page 208
Вызов функции в качестве левого операнда операции присваивания......Page 209
Константные аргументы функции......Page 210
Резюме......Page 212
Вопросы......Page 213
Упражнения......Page 215
Простой класс......Page 217
Классы и объекты......Page 218
Зачем скрывать данные?......Page 219
Методы класса......Page 220
Методы класса внутри определения класса......Page 221
Вызов методов класса......Page 222
Сообщения......Page 223
Детали изделия в качестве объектов......Page 224
Круги в качестве объектов......Page 225
Класс как тип данных......Page 226
Конструкторы......Page 227
Пример со счетчиком......Page 228
Список инициализации......Page 229
Результаты работы программы со счетчиком......Page 230
Графический пример......Page 231
Объекты в качестве аргументов функций......Page 232
Перегруженные конструкторы......Page 234
Определение методов класса вне класса......Page 235
Объекты в качестве аргументов......Page 236
Конструктор копирования по умолчанию......Page 237
Объекты, возвращаемые функцией......Page 239
Аргументы и объекты......Page 240
Пример карточной игры......Page 242
Структуры и классы......Page 244
Классы, объекты и память......Page 245
Пример использования статических полей класса......Page 247
Раздельное объявление и определение полей класса......Page 248
const и классы......Page 249
Пример класса Distance......Page 250
Константные объекты......Page 252
Зачем нужны классы?......Page 253
Резюме......Page 254
Упражнения......Page 257
Массивы и строки......Page 261
Основы массивов......Page 262
Доступ к элементам массива......Page 263
Среднее арифметическое элементов массива......Page 264
Инициализация массива......Page 265
Многомерные массивы......Page 267
Передача массивов в функции......Page 271
Массивы структур......Page 273
Массивы как члены классов......Page 275
Массивы интервалов......Page 278
Доступ к объектам в массиве......Page 280
Массивы карт......Page 281
Строки......Page 284
Строковые переменные......Page 285
Считывание нескольких строк......Page 288
Копирование строк......Page 289
Массивы строк......Page 291
Строки как члены классов......Page 292
Определенные пользователем типы строк......Page 294
Определение объектов класса string и присваивание им значений......Page 296
Ввод/вывод для объектов класса string......Page 298
Поиск объектов класса string......Page 299
Модификация объектов класса string......Page 300
Сравнение объектов класса string......Page 301
Доступ к символам в объектах класса string......Page 302
Другие методы класса string......Page 303
Вопросы......Page 304
Упражнения......Page 307
Перегрузка операций......Page 312
Перегрузка унарных операций......Page 313
Ключевое слово operator......Page 314
Значения, возвращаемые операцией......Page 315
Временные безымянные объекты......Page 317
Постфиксные операции......Page 318
Арифметические операции......Page 320
Объединение строк......Page 323
Операции сравнения......Page 325
Операции арифметического присваивания......Page 328
Операция индексации массива ([])......Page 330
Преобразование типов......Page 334
Преобразования основных типов в основные типы......Page 335
Преобразования объектов в основные типы и наоборот......Page 336
Преобразования строк в объекты класса string и наоборот......Page 338
Преобразования объектов классов в объекты других классов......Page 340
Преобразования: когда что использовать......Page 346
Направленность......Page 347
Использование похожего синтаксиса......Page 348
Ключевые слова explicit и mutable......Page 349
Предотвращение преобразования типов с помощью explicit......Page 350
Изменение данных объекта, объявленных как const, используя ключевое слово mutable......Page 351
Вопросы......Page 353
Упражнения......Page 356
Наследование......Page 361
Обобщение в диаграммах классов в UML......Page 364
Доступ к базовому классу......Page 365
Спецификатор доступа protected......Page 366
Конструкторы производного класса......Page 368
Перегрузка функций......Page 370
Операция разрешения и перегрузка функций......Page 372
Наследование в классе Distance......Page 373
Применение программы ENGLEN......Page 374
В поддержку наследования......Page 375
Иерархия классов......Page 376
Абстрактный базовый класс......Page 379
Наследование и графика......Page 380
Комбинации доступа......Page 383
Выбор спецификатора доступа......Page 384
Уровни наследования......Page 385
Множественное наследование......Page 388
Методы классов и множественное наследование......Page 389
Конструкторы при множественном наследовании......Page 393
Конструктор со многими аргументами......Page 396
Неопределенность при множественном наследовании......Page 397
Включение: классы в классах......Page 398
Включение в программе EMPCONT......Page 399
Роль наследования при разработке программ......Page 403
Резюме......Page 404
Вопросы......Page 405
Упражнения......Page 407
Глава 10 Указатели......Page 411
Операция получения адреса &......Page 412
Переменные указатели......Page 414
Указатели должны иметь значение......Page 416
Доступ к переменной по указателю......Page 417
Указатели и массивы......Page 421
Указатели-константы и указатели-переменные......Page 423
Указатели и функции......Page 424
Расстановка с использованием указателей......Page 428
Сортировка методом пузырька......Page 430
Указатели на строковые константы......Page 432
Управление памятью: операции new и delete......Page 437
Операция new......Page 438
Операция delete......Page 439
Класс String с использованием операции new......Page 440
Указатели на объекты......Page 442
Ссылки на члены класса......Page 443
Другое применение операции new......Page 444
Массив указателей на объекты......Page 445
Доступ к методам класса......Page 446
Цепочка указателей......Page 447
Добавление новых элементов в список......Page 449
Указатели на указатели......Page 451
Пример разбора строки......Page 455
Симулятор: лошадиные скачки......Page 459
Функция putch()......Page 464
Диаграмма состояний в UML......Page 465
От состояния к состоянию......Page 466
Резюме......Page 467
Вопросы......Page 469
Упражнения......Page 471
Виртуальные функции......Page 476
Доступ к обычным методам через указатели......Page 477
Доступ к виртуальным методам через указатели......Page 479
Абстрактные классы и чистые виртуальные функции......Page 481
Виртуальные функции и класс person......Page 483
Виртуальные функции в графическом примере......Page 485
Виртуальные деструкторы......Page 488
Виртуальные базовые классы......Page 489
Дружественные функции как мосты между классами......Page 491
Ломая стены......Page 492
Пример с английскими мерами длины......Page 493
Дружественность и функциональная запись......Page 496
Дружественные классы......Page 499
Статические функции......Page 500
Доступ к статическим функциям......Page 501
Инициализация копирования и присваивания......Page 502
Перегрузка оператора присваивания......Page 503
245TОтветственность......Page 504
244TВозврат значений......Page 505
Конструктор копирования......Page 506
242TПочему не просто x(x)?......Page 508
241TЗапрещение копирования......Page 509
Эффективное использование памяти классом String......Page 510
Недостатки класса String......Page 511
240TКласс-счетчик строк......Page 512
253TКласс String......Page 515
Указатель this......Page 516
Доступ к компонентным данным через указатель this......Page 517
Использование this для возврата значений......Page 518
Исправленная программа STRIMEM......Page 520
Остерегайтесь неправильных присваиваний......Page 522
Проверка типа класса с помощью dynamic_cast......Page 523
Изменение типов указателей с помощью dynamic_cast......Page 524
Оператор typeid......Page 526
Резюме......Page 527
Вопросы......Page 528
Упражнения......Page 531
Потоковые классы......Page 536
Иерархия потоковых классов......Page 537
252TФлаги форматирования......Page 539
251TМанипуляторы......Page 540
250TФункции......Page 541
Класс istream......Page 542
Класс ostream......Page 543
Предопределенные потоковые объекты......Page 544
Биты статуса ошибки......Page 545
Ввод чисел......Page 546
Ввод при отсутствии данных......Page 547
Отладка примера с английскими расстояниями......Page 548
249TЗапись данных......Page 551
248TЧтение данных......Page 553
Строки с пробелами......Page 554
Ввод/вывод символов......Page 555
Двоичный ввод/вывод......Page 557
Закрытие файлов......Page 558
247TЗапись объекта на диск......Page 559
Совместимость структур данных......Page 560
Ввод/вывод множества объектов......Page 561
Биты режимов......Page 563
Вычисление позиции......Page 564
334TЛистинг 12.13.333T334T Программа SEEKG......Page 565
Реагирование на ошибки......Page 567
Анализ ошибок......Page 568
352TЛистинг 12.15. Программа FERRORS......Page 569
Как объекты записывают и читают сами себя......Page 570
Как классы записывают и читают сами себя......Page 572
315TРазмеры порожденных объектов......Page 573
324TИспользование функции typeid()......Page 574
339TЛистинг 12.17336T339T (продолжение)......Page 578
Перегрузка cout и cin......Page 581
338TЛистинг 12.18338T342T (продолжение)......Page 582
351TЛистинг 12.19. Программа ENGLIO2......Page 583
Память как поток......Page 585
Аргументы командной строки......Page 586
344TЛистинг 12.22.343T344T Программа OTYPE......Page 587
346TЛистинг 12.24.346T350T Программа OPRINT......Page 589
Резюме......Page 590
Вопросы......Page 591
Упражнения......Page 592
Причины использования многофайловых программ......Page 596
314TИнтерфейс......Page 597
Создание многофайловой программы......Page 598
Директории......Page 599
Взаимодействие исходных файлов......Page 600
323TМежфайловые переменные......Page 601
322TМежфайловые функции......Page 603
321TМежфайловые классы......Page 604
Заголовочные файлы......Page 605
327TОшибка повторения включений......Page 607
320TПредупреждение ошибок повторения включений......Page 608
319TОпределение пространства имен......Page 609
318TНеоднократное определение пространств имен......Page 610
317TНеименованные пространства имен......Page 611
316TПереименование типов с помощью typedef......Page 612
Числа как строки......Page 613
Описатель класса......Page 614
Методы......Page 615
Прикладная программа......Page 617
Моделирование высотного лифта......Page 619
326TЗапрос этажа......Page 620
Проектирование системы......Page 621
313TУправление временем......Page 622
347TЛистинг 13.4.347T349T Заголовочный файл ELEV.H......Page 623
254TСтратегия работы лифтов......Page 633
Диаграмма состояний для программы ELEV......Page 634
Резюме......Page 635
Вопросы......Page 636
Проекты......Page 638
Шаблоны функций......Page 640
Шаблон простой функции......Page 642
239TДействия компилятора......Page 643
239TАргументы шаблона должны быть согласованы......Page 645
239TРазличные аргументы одного шаблона......Page 646
239TНачните с обычной функции......Page 647
Контекстозависимое имя класса......Page 651
Создание класса связных списков с помощью шаблонов......Page 653
239TСвязный список работников......Page 655
UML и шаблоны......Page 658
Исключения......Page 659
Для чего нужны исключения......Page 660
Синтаксис исключений......Page 661
Простой пример исключения......Page 662
239TБлок повторных попыток (try - блок)......Page 664
239TПоследовательность событий......Page 665
Многократные исключения......Page 666
Исключения и класс Distance......Page 668
239TИзвлечение данных из объекта класса исключений......Page 672
Класс bad_alloc......Page 673
257TИсключения и библиотеки классов......Page 674
Резюме......Page 675
Вопросы......Page 676
Упражнения......Page 678
Стандартная библиотека шаблонов (STL)......Page 681
Контейнеры......Page 682
239TПоследовательные контейнеры......Page 683
237TАссоциативные контейнеры......Page 685
237TМетоды......Page 686
Алгоритмы......Page 687
Итераторы......Page 688
Возможные проблемы с STL......Page 689
10TАлгоритмы......Page 690
Алгоритм count()......Page 691
Алгоритм search()......Page 692
Алгоритм merge()......Page 693
Пользовательские функции вместо функциональных объектов......Page 695
Добавление _if к аргументам......Page 696
Алгоритм transform()......Page 697
Последовательные контейнеры......Page 698
237TМетоды push_back(), size() и operator[]......Page 699
237TМетоды swap(), empty(), back() и pop_back()......Page 700
237TМетоды insert() и erase()......Page 701
237TМетоды push_front(), front() и pop_front......Page 702
237TМетоды reverse(), merge() и unique()......Page 703
Итераторы как интеллектуальные указатели......Page 706
237TНедостатки обычных указателей......Page 707
Итераторы в качестве интерфейса......Page 708
Соответствие алгоритмов контейнерам......Page 710
237TМонтаж «кабеля» в алгоритм......Page 711
237TО чем рассказывают таблицы......Page 712
Работа с итераторами......Page 713
237TВставка данных......Page 714
237TАлгоритмы и итераторы......Page 715
237TОбратные итераторы......Page 717
Потоковые итераторы......Page 720
237TКласс ostream_iterator......Page 721
237TКласс istream_iterator......Page 722
Ассоциативные контейнеры......Page 724
Множества и мультимножества......Page 725
Отображения и мультиотображения......Page 729
Ассоциативный массив......Page 730
Хранение пользовательских объектов......Page 731
Множество объектов person......Page 732
237TНеобходимые методы......Page 733
237TСхожесть с базовыми типами......Page 734
Список объектов класса person......Page 735
237TПоиск всех людей с указанным номером телефона......Page 737
Функциональные объекты......Page 738
Предопределенные функциональные объекты......Page 739
Создание собственных функциональных объектов......Page 741
237TФункциональный объект displayPerson()......Page 745
Резюме......Page 746
Вопросы......Page 747
Эволюция процесса создания программного обеспечения......Page 752
Объектно-ориентированное программирование......Page 753
Современные подходы......Page 754
Действующие субъекты......Page 755
Сценарии......Page 756
Диаграммы вариантов использования......Page 757
От вариантов использования к классам......Page 758
Предметная область программирования......Page 759
Рукописные формы......Page 760
Варианты использования......Page 762
Описание вариантов использования......Page 763
290TВывести годовой отчет......Page 764
Диаграммы действий UML......Page 765
Список существительных......Page 766
Уточнение списка......Page 767
От глаголов к сообщениям......Page 768
Диаграммы последовательностей......Page 770
Диаграмма последовательностей для варианта использования Начать программу......Page 771
294TДиаграмма последовательностей для варианта использования Вывод списка жильцов......Page 772
293TДиаграмма последовательностей для варианта использования Добавить нового жильца......Page 773
Написание кода......Page 774
Исходные .cpp файлы......Page 780
Взаимодействие с программой......Page 789
Резюме......Page 791
Вопросы......Page 792
Проекты......Page 794
Таблица ASCII......Page 796
Зарезервированные слова......Page 803
Элементы экрана......Page 806
Компоновка существующего файла......Page 807
Информация о типах в процессе исполнения (RTTI)......Page 808
Работа над проектом......Page 809
Сохранение, закрытие и открытие проектов......Page 810
Отладка программ......Page 811
Пошаговая трассировка функций......Page 812
Точки останова......Page 813
Borland C++ Builder......Page 814
Создание нового проекта......Page 815
Работа с существующими файлами......Page 817
Закрытие и открытие проектов......Page 818
Определение местонахождения заголовочного файла......Page 819
Добавление существующих исходных файлов......Page 820
Программы с консольной графикой......Page 821
Пошаговая трассировка функций......Page 822
Точки останова......Page 823
39TПриложение Д 39TУпрощенный вариант консольной графики......Page 824
Функции библиотеки консольной графики......Page 825
Компиляторы328T Microsoft......Page 827
Листинги исходных кодов......Page 828
Алгоритмы......Page 836
Методы......Page 843
Итераторы......Page 845
Ответы на вопросы......Page 847
Ответы на вопросы......Page 849
Решения упражнений......Page 851
Ответы на вопросы......Page 853
Ответы на вопросы......Page 855
Решения упражнений......Page 856
Ответы на вопросы......Page 859
Решения упражнений......Page 860
Ответы на вопросы......Page 862
Решения упражнений......Page 863
Ответы на вопросы......Page 866
Решения упражнений......Page 867
Ответы на вопросы......Page 871
Решения упражнений......Page 872
330TГлава 10 330TОтветы на вопросы......Page 876
Решения упражнений......Page 878
Ответы на вопросы......Page 881
Решения упражнений......Page 882
297TГлава 12 297TОтветы на вопросы......Page 886
Решения упражнений......Page 887
329TГлава 13 329TОтветы на вопросы......Page 889
299TГлава 14 299TОтветы на вопросы......Page 890
Решения упражнений......Page 891
298TГлава 15 298TОтветы на вопросы......Page 894
Решения упражнений......Page 895
Ответы на вопросы......Page 898
Углубленное изучение C++......Page 899
UML......Page 900
И другое......Page 901
Алфавитный указатель......Page 902