Автор: Лафоре Р.
2004.
Благодаря этой книге тысячи пользователей овладели технологией объектно-ориентированного программирования в C++. В ней есть все: основные принципы языка, готовые полномасштабные приложения, небольшие примеры, поясняющие теорию, и множество полезных иллюстраций. Книга пользуется стабильным успехом в учебных заведениях потому, что содержит более 100 упражнений, позволяющих проверить знания по всем темам.
Содержание
Предисловие
Введение
Новые концепции программирования
Объектно-ориентированное программирование
Унифицированный язык моделирования
Языки и платформы разработки
Для чего нужна эта книга
Новые концепции
Последовательность изложения материала
Знания, необходимые для чтения этой книги
Техническое и программное обеспечение
Консольные программы
Исходные тексты программ
Упражнения
Проще, чем кажется
Преподавателям
Стандартный C++
Унифицированный язык моделирования (UML)
Средства разработки программного обеспечения
Различия между C и C++
Оптимальный порядок изучения ООП
Нововведения в C++
Избыточные возможности
Упражнения
От издательства
Глава 1. Общие сведения
Для чего нужно объектно-ориентированное программирование?
Процедурные языки
Деление на функции
Недостатки структурного программирования
Неконтролируемый доступ к данным
Моделирование реального мира
Объектно-ориентированный подход
Аналогия
ООП: подход к организации программы
Характеристики объектно-ориентированных языков
Объекты
Классы
Наследование
Повторное использование кода
Пользовательские типы данных
Полиморфизм и перегрузка
C++ и C
Изучение основ
Универсальный язык моделирования (UML)
Резюме
Вопросы
Глава 2. Основы программирования на C++
Что необходимо для работы
Структура программы
Функции
Операторы
Разделяющие знаки
Вывод с использованием cout
Строковые константы
Директивы
Директивы препроцессора
Заголовочные файлы
Директива using
Комментарии
Синтаксис комментариев
Использование комментариев
Альтернативный вид комментариев
Переменные целого типа
Описание переменных целого типа
Объявление и определение переменной
Имена переменных
Операция присваивания
Целые константы
Оператор вывода
Манипулятор endl
Другие целые типы
Символьные переменные
Символьные константы
Инициализация
Управляющие последовательности
Ввод с помощью cin
Определение переменных при первом использовании
Каскадирование операции <<
Выражения
Приоритеты выполнения операций
Вещественные типы
Тип float
Типы double и long double
Вещественные константы
Префикс const
Директива #define
Тип bool
Манипулятор setw
Каскадирование операции <<
Множественное определение
Файл заголовка IOMANIP
Таблица типов переменных
Беззнаковые типы данных
Преобразования типов
Неявные преобразования типов
Явные преобразования типов
Арифметические операции
Остаток от деления
Арифметические операции с присваиванием
Инкремент
Декремент
Библиотечные функции
Заголовочные файлы
Библиотечные файлы
Заголовочные и библиотечные файлы
Формы директивы #include
Резюме
Вопросы
Упражнения
Глава 3. Циклы и ветвления
Операции отношения
Циклы
Цикл for
Инициализирующее выражение
Условие выполнения цикла
Инкрементирующее выражение
Число выполнений цикла
Несколько операторов в теле цикла
Блоки и область видимости переменных
Форматирование и стиль оформления циклов
Обнаружение ошибок
Варианты цикла for
Определение счетчика цикла внутри оператора цикла for
Несколько инициализирующих выражений и условий цикла
Цикл while
Несколько операторов в цикле while
Приоритеты арифметических операций и операций отношения
Цикл do
Выбор типа цикла
Ветвления
Условный оператор if
Несколько операторов в теле if
if внутри циклов
Функция exit()
Оператор if?else
Функция getche()
Условия с присваиванием
Вложенные ветвления if...else
if и else во вложенных ветвлениях
Конструкция else...if
Оператор switch
Оператор break
switch и символьные переменные
Ключевое слово default
Сравнение switch и if...else
Условная операция
Логические операции
Операция логического И
Логическое ИЛИ
Логическое НЕ
Целые величины в качестве булевых
Приоритеты операций C++
Другие операторы перехода
Оператор break
Расширенная таблица символов ASCII
Оператор continue
Оператор goto
Резюме
Вопросы
Упражнения
Глава 4. Структуры
Структуры
Простая структура
Определение структуры
Определение структурной переменной
Доступ к полям структуры
Другие возможности структур
Пример применения структур
Вложенные структуры
Пример карточной игры
Структуры и классы
Перечисления
Дни недели
Перечисления и программа подсчета числа слов
Пример карточной игры
Недостаток перечислений
Примеры перечисляемых типов
Резюме
Вопросы
Упражнения
Глава 5. Функции
Простые функции
Объявление функции
Вызов функции
Определение функции
Обычные и библиотечные функции
Отсутствие объявления
Передача аргументов в функцию
Передача констант в функцию
Передача значений переменных в функцию
Передача аргументов по значению
Структурные переменные в качестве аргументов
Имена переменных внутри прототипа функции
Значение, возвращаемое функцией
Оператор return
Исключение ненужных переменных
Структурная переменная в качестве возвращаемого значения
Ссылки на аргументы
Передача по ссылке аргументов стандартных типов
Усложненный вариант передачи по ссылке
Передача структурных переменных по ссылке
Замечание о ссылках
Перегруженные функции
Переменное число аргументов функции
Различные типы аргументов
Рекурсия
Встраиваемые функции
Аргументы по умолчанию
Область видимости и класс памяти
Локальные переменные
Глобальные переменные
Статические локальные переменные
Возвращение значения по ссылке
Вызов функции в качестве левого операнда операции присваивания
Зачем нужно возвращение по ссылке?
Константные аргументы функции
Резюме
Вопросы
Упражнения
Глава 6. Объекты и классы
Простой класс
Классы и объекты
Определение класса
Использование класса
Вызов методов класса
Объекты программы и объекты реального мира
Детали изделия в качестве объектов
Круги в качестве объектов
Класс как тип данных
Конструкторы
Пример со счетчиком
Графический пример
Объекты в качестве аргументов функций
Объекты в качестве аргументов
Конструктор копирования по умолчанию
Объекты, возвращаемые функцией
Аргументы и объекты
Пример карточной игры
Структуры и классы
Классы, объекты и память
Статические данные класса
Применение статических полей класса
Пример использования статических полей класса
Раздельное объявление и определение полей класса
сonst и классы
Константные методы
Константные объекты
Зачем нужны классы?
Резюме
Вопросы
Упражнения
Глава 7. Массивы и строки
Основы массивов
Определение массивов
Элементы массива
Доступ к элементам массива
Среднее арифметическое элементов массива
Инициализация массива
Многомерные массивы
Передача массивов в функции
Массивы структур
Массивы как члены классов
Массивы объектов
Массивы интервалов
Границы массива
Доступ к объектам в массиве
Массивы карт
Строки
Строковые переменные
Считывание нескольких строк
Копирование строк
Копирование строк более простым способом
Массивы строк
Строки как члены классов
Определенные пользователем типы строк
Стандартный класс string языка C++
Определение объектов класса string и присваивание им значений
Ввод/вывод для объектов класса string
Поиск объектов класса string
Модификация объектов класса string
Сравнение объектов класса string
Доступ к символам в объектах класса string
Другие методы класса string
Резюме
Вопросы
Упражнения
Глава 8. Перегрузка операций
Перегрузка унарных операций
Ключевое слово operator
Аргументы операции
Значения, возвращаемые операцией
Временные безымянные объекты
Постфиксные операции
Перегрузка бинарных операций
Арифметические операции
Объединение строк
Множественная перегрузка
Операции сравнения
Операции арифметического присваивания
Операция индексации массива ([])
Преобразование типов
Преобразования основных типов в основные типы
Преобразования объектов в основные типы и наоборот
Преобразования строк в объекты класса string и наоборот
Преобразования объектов классов в объекты других классов
Преобразования: когда что использовать
Диаграммы классов UML
Объединения
Направленность
"Подводные камни" перегрузки операций и преобразования типов
Использование похожих значений
Использование похожего синтаксиса
Показывайте ограничение
Избегайте неопределенности
Не все операции могут быть перегружены
Ключевые слова explicit и mutable
Предотвращение преобразования типов с помощью explicit
Изменение данных объекта, объявленных как const, используя ключевое слово mutable
Резюме
Вопросы
Упражнения
Глава 9. Наследование
Базовый и производный классы
Определение производного класса
Обобщение в диаграммах классов в UML
Доступ к базовому классу
Результат программы COUNTEN
Спецификатор доступа protected
Недостатки использования спецификатора protected
Неизменность базового класса
Разнообразие терминов
Конструкторы производного класса
Перегрузка функций
Какой из методов использовать?
Операция разрешения и перегрузка функций
Наследование в классе Distance
Применение программы ENGLEN
Конструкторы класса DistSign
Методы класса DistSign
В поддержку наследования
Иерархия классов
Абстрактный базовый класс
Конструкторы и функции
Наследование и графика
Общее и частное наследование
Комбинации доступа
Выбор спецификатора доступа
Уровни наследования
Множественное наследование
Методы классов и множественное наследование
Частное наследование в программе EMPMULT
Конструкторы при множественном наследовании
Конструкторы без аргументов
Конструктор со многими аргументами
Неопределенность при множественном наследовании
Включение: классы в классах
Включение в программе EMPCONT
Композиция: сложное включение
Роль наследования при разработке программ
Резюме
Вопросы
Упражнения
Глава 10. Указатели
Адреса и указатели
Операция получения адреса &
Переменные указатели
Недостатки синтаксиса
Указатели должны иметь значение
Доступ к переменной по указателю
Указатель на void
Указатели и массивы
Указатели-константы и указатели-переменные
Указатели и функции
Передача простой переменной
Передача массивов
Сортировка элементов массива
Расстановка с использованием указателей
Сортировка методом пузырька
Указатели на строки
Указатели на строковые константы
Строки как аргументы функций
Копирование строк с использованием указателей
Библиотека строковых функций
Модификатор const и указатели
Массивы указателей на строки
Управление памятью: операции new и delete
Операция new
Операция delete
Класс String с использованием операции new
Указатели на объекты
Ссылки на члены класса
Другое применение операции new
Массив указателей на объекты
Действия программы
Доступ к методам класса
Связный список
Цепочка указателей
Добавление новых элементов в список
Получение содержимого списка
Классы, содержащие сами себя
Пополнение примера LINKLIST
Указатели на указатели
Сортируем указатели
Тип данных person
Сравнение строк
Пример разбора строки
Разбор арифметических выражений
Программа PARSE
Симулятор: лошадиные скачки
Разработка лошадиных скачек
Моделирование хода времени
Уничтожение массива указателей на объекты
Функция putch()
Диаграммы UML
Диаграмма состояний в UML
Состояния
Переходы
От состояния к состоянию
Отладка указателей
Резюме
Вопросы
Упражнения
Глава 11. Виртуальные функции
Виртуальные функции
Доступ к обычным методам через указатели
Доступ к виртуальным методам через указатели
Позднее связывание
Абстрактные классы и чистые виртуальные функции
Виртуальные функции и класс person
Виртуальные функции в графическом примере
Виртуальные деструкторы
Виртуальные базовые классы
Дружественные функции
Дружественные функции как мосты между классами
Ломая стены
Пример с английскими мерами длины
Дружественность и функциональная запись
Дружественные классы
Статические функции
Доступ к статическим функциям
Инициализация копирования и присваивания
Перегрузка оператора присваивания
Конструктор копирования
Объектные диаграммы UML
Эффективное использование памяти классом String
Указатель this
Доступ к компонентным данным через указатель this
Использование this для возврата значений
Исправленная программа STRIMEM
Динамическая информация о типах
Проверка типа класса с помощью dynamic_cast
Изменение типов указателей с помощью dynamic_cast
Оператор typeid
Резюме
Вопросы
Упражнения
Глава 12. Потоки и файлы
Потоковые классы
Преимущества потоков
Иерархия потоковых классов
Класс ios
Класс istream
Класс ostream
Классы iostream и _withassign
Предопределенные потоковые объекты
Ошибки потоков
Биты статуса ошибки
Ввод чисел
Переизбыток символов
Ввод при отсутствии данных
Ввод строк и символов
Отладка примера с английскими расстояниями
Потоковый ввод/вывод дисковых файлов
Форматированный файловый ввод/вывод
Строки с пробелами
Ввод/вывод символов
Двоичный ввод/вывод
Оператор reinterpret_cast
Закрытие файлов
Объектный ввод/вывод
Совместимость структур данных
Ввод/вывод множества объектов
Биты режимов
Указатели файлов
Вычисление позиции
Вычисление сдвига
Функция tellg()
Обработка ошибок файлового ввода/вывода
Реагирование на ошибки
Анализ ошибок
Файловый ввод/вывод с помощью методов
Как объекты записывают и читают сами себя
Как классы записывают и читают сами себя
Код типа объекта
Перегрузка операторов извлечения и вставки
Перегрузка cout и cin
Перегрузка << и >> для файлов
Память как поток
Аргументы командной строки
Вывод на печатающее устройство
Резюме
Вопросы
Упражнения
Глава 13. Многофайловые программы
Причины использования многофайловых программ
Библиотеки классов
Организация и концептуализация
Создание многофайловой программы
Заголовочные файлы
Директории
Проекты
Межфайловое взаимодействие
Взаимодействие исходных файлов
Заголовочные файлы
Пространства имен
Класс сверхбольших чисел
Числа как строки
Описатель класса
Методы
Прикладная программа
Моделирование высотного лифта
Работа программы ELEV
Проектирование системы
Листинг программы ELEV
Диаграмма состояний для программы ELEV
Резюме
Вопросы
Проекты
Глава 14. Шаблоны и исключения
Шаблоны функций
Шаблон простой функции
Шаблоны функций с несколькими аргументами
Шаблоны классов
Контекстозависимое имя класса
Создание класса связных списков с помощью шаблонов
Хранение пользовательских типов
UML и шаблоны
Исключения
Для чего нужны исключения
Синтаксис исключений
Простой пример исключения
Многократные исключения
Исключения и класс Distance
Исключения с аргументами
Класс bad_alloc
Размышления об исключениях
Резюме
Вопросы
Упражнения
Глава 15. Стандартная библиотека шаблонов (STL)
Введение в STL
Контейнеры
Алгоритмы
Итераторы
Возможные проблемы с STL
Алгоритмы
Алгоритм find ()
Алгоритм count ()
Алгоритм sort()
Алгоритм search()
Алгоритм merge()
Функциональные объекты
Пользовательские функции вместо функциональных объектов
Добавление _if к аргументам
Алгоритм for_each ()
Алгоритм transform()
Последовательные контейнеры
Векторы
Списки
Итераторы
Итераторы как интеллектуальные указатели
Итераторы в качестве интерфейса
Соответствие алгоритмов контейнерам
Работа с итераторами
Специализированные итераторы
Адаптеры итераторов
Потоковые итераторы
Ассоциативные контейнеры
Множества и мультимножества
Отображения и мультиотображения
Ассоциативный массив
Хранение пользовательских объектов
Множество объектов person
Список объектов класса person
Функциональные объекты
Предопределенные функциональные объекты
Создание собственных функциональных объектов
Функциональные объекты и поведение контейнеров
Резюме
Вопросы
Упражнения
Глава 16. Разработка объектно-ориентированного ПО
Эволюция процесса создания программного обеспечения
Процесс просиживания штанов
Каскадный процесс
Объектно-ориентированное программирование
Современные подходы
Моделирование вариантов использования
Действующие субъекты
Варианты использования
Сценарии
Диаграммы вариантов использования
Описания вариантов использования
От вариантов использования к классам
Предметная область программирования
Рукописные формы
Допущения
Программа LANDLORD: стадия развития
Действующие субъекты
Варианты использования
Описание вариантов использования
Сценарии
Диаграммы действий UML
От вариантов использования к классам
Список существительных
Уточнение списка
Определение атрибутов
От глаголов к сообщениям
Диаграмма классов
Диаграммы последовательностей
Написание кода
Заголовочный файл
Исходные .cpp файлы
Вынужденные упрощения
Взаимодействие с программой
Заключение
Резюме
Вопросы
Проекты
Приложение А. Таблица ASCII
Приложение Б. Таблица приоритетов операций C++
Таблица приоритетов операций
Зарезервированные слова
Приложение В. Microsoft Visual C++
Элементы экрана
Однофайловые программы Компоновка существующего файла
Создание нового файла
Ошибки
Информация о типах в процессе исполнения (RTTI)
Многофайловые программы
Проекты и рабочие области
Работа над проектом
Сохранение, закрытие и открытие проектов
Компиляция и компоновка
Программы с консольной графикой
Отладка программ
Пошаговая трассировка
Просмотр переменных
Пошаговая трассировка функций
Точки останова
Приложение Г. Borland C++ Builder
Запуск примеров в C++ Builder
Очистка экрана
Создание нового проекта
Задание имени и сохранение проекта
Работа с существующими файлами
Компиляция, связывание и запуск программ
Запуск программы в C++ Builder
Запуск программы в MS DOS
Предварительно скомпилированные заголовочные файлы
Закрытие и открытие проектов
Добавление заголовочного файла к проекту
Создание нового заголовочного файла
Редактирование заголовочного файла
Определение местонахождения заголовочного файла
Проекты с несколькими исходными файлами
Создание дополнительных исходных файлов
Добавление существующих исходных файлов
Менеджер проектов
Программы с консольной графикой
Отладка
Пошаговый прогон
Просмотр переменных
Пошаговая трассировка функций
Точки останова
Приложение Д. Упрощенный вариант консольной графики
Использование подпрограмм библиотеки консольной графики
Функции библиотеки консольной графики
Реализация функций консольной графики
Компиляторы Microsoft
Компиляторы Borland
Листинги исходных кодов
Приложение Е. Алгоритмы и методы STL
Алгоритмы
Методы
Итераторы
Приложение Ж. Ответы и решения
Глава 1
Глава 2
Глава 3
Глава 4
Глава 5
Глава 6
Глава 7
Глава 8
Глава 9
Глава 10
Глава 11
Глава 12
Глава 13
Глава 14
Глава 15
Глава 16
Приложение З. Библиография
Углубленное изучение С++
Основополагающие документы
UML
История С++.
Имена переменных.
В программе INTVARS используются переменные с именами var1 и var2. Имена, даваемые переменным и другим элементам программы, называются идентификаторами. Каковы правила составления идентификатора? Вы можете использовать буквы как верхнего, так и нижнего регистров, а также цифры от 1 до 9. Кроме того, разрешается использовать символ подчеркивания _. Первый символ идентификатора должен быть либо буквой, либо символом подчеркивания.
Длина идентификатора теоретически не ограничивается, но большинство компиляторов не распознают идентификаторы длиной более нескольких сотен символов. Компилятор различает буквы верхнего и нижнего регистра, поэтому имена Var и VAR будут восприниматься как различные.
В качестве имен переменных в C++ нельзя использовать ключевые слова. Ключевое слово - это зарезервированное слово, имеющее особое значение. Примерами ключевых слов могут служить int. class, if, while. Полный список ключевых слов можно найти в приложении Б или в справочной системе вашего компилятора.
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Объектно - ориентированное программирование в С++ - Лафоре Р. - fileskachat.com, быстрое и бесплатное скачивание.
Скачать djvu
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.Купить эту книгу
Скачать книгу - Объектно - ориентированное программирование в С++ - Лафоре Р. - depositfiles
Скачать книгу - Объектно - ориентированное программирование в С++ - Лафоре Р. - letitbit
Дата публикации:
Хештеги: #книга по программированию :: #С++ :: #Лафоре
Смотрите также учебники, книги и учебные материалы:
Следующие учебники и книги:
- Альманах Программиста, том 3, Платформа 2003 - Купцевич Ю.И.
- Эффективное использование STL - Мейерс C.
- Освой самостоятельно программирование для Microsoft Access 2002 за 24 часа - Киммел П.
- Объектно - ориентированное программирование на С++ - Пол А.
Предыдущие статьи:
- Объектно - ориентированный анализ и проектирование с примерами приложений на С++ - Гради Буч
- Обработка объектных баз данных в C++ - Программирование с использованием стандарта ODMG - Дэвид Джордан
- MS SQL server 2000 - Мамаев Е.
- STL для программистов на C++ - Аммерааль Л.