Рассматриваются классы, различные аспекты работы с ними. Подробно рассматривается механизм наследования, использования виртуальных функций, а также абстрактных классов. Даются основы построения диаграмм классов, использования лямбда-функций и обработки исключительных ситуаций. Обширный раздел посвящен описанию основ работы с STL: рассмотрены некоторые контейнеры и алгоритмы, правила создания и основы работы с функторами. В каждой теме приводится необходимый теоретический материал и код программ, что существенно ускоряет усваивание материала. Издание адресуется прежде всего студентам, а также всем, кто хотел бы научиться приемам объектно-ориентированного программирования.
Глобальные объявления и пространство имен.
Классы, объекты, функции, переменные и именованные константы, объявленные вне классов и функций, являются глобальными. То есть, к ним можно получить доступ из любой части программы. Несмотря на то, что это может быть очень удобным, это также может вызвать значительные проблемы. Так. если программа большая и разделена на несколько исходных файлов, над которыми работают различные группы программистов, вероятно случайное создание нескольких глобальных объявлении с одинаковыми именами.
Существует два способа решения этой проблемы:
• идентификаторами глобальных объявлений могут выступать длинные и сложные имена, вероятность совпадении которых низка в разных группах программистов;
• каждая отдельная группа программистов создает собственное пространство имен.
ОГЛАВЛЕНИЕ.
КЛАССЫ. БАЗОВЫЕ СВЕДЕНИЯ.
Объявление класса.
Инкапсуляция.
Спецификаторы доступа.
Объявление объекта, указателя на объект, ссылки на объект, а также массива объектов в стеке.
Доступ к публичным компонентам класса.
Операция уточнения имени.
Операция косвенной адресации.
Конструкторы класса.
Деструктор класса.
Выделение памяти под объекты и массивы объектов в куче.
Структуры.
Применение структур для сокращения количества параметров в функциях или методах.
Использование указателя на функцию в качестве поля структуры.
Правила оформления имен классов, объектов, полей и методов.
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ ПО КЛАССАМ.
Операция уточнение области видимости имени.
Описание методов за пределами класса.
Глобальные объявления и пространство имен.
Инструкция using.
Статические члены классов.
Статические свойства.
Статические методы.
Объекты как свойства классов.
Композиция.
Агрегация.
Признаки, используемые при классификации отношений классов.
Основы построения диаграмм классов.
Графическое отображение классов.
Отображение отношений между классами.
Вложенные классы.
Константные члены классов и объекты.
Объекты не имеющие состояния (statеless object).
Дружественные функции.
Массивы автоматической памяти как свойства классов.
Массивы хранящиеся в куче как свойства классов.
Указатель this.
Конструктор копирования.
Конструктор как средство преобразования типов.
Ключевое слово explicit.
Ключевое слово delete.
ФУНКЦИИ-ОПЕРАЦИИ. ПЕРЕГРУЗКА ОПЕРАЦИЙ.
Глобальная функция-операция.
Функция-операция, как метод класса.
Перегрузка бинарной операции.
Перегрузка унарной операции.
Перегрузка операций ввода/вывода.
Общие сведения о потоках.
Стандартные потоки в C++.
Функции-операции для перегрузки ввода-вывода.
Правила перегрузки операций.
Преобразование типов с помощью метода класса.
СПИСКИ ОБЪЕКТОВ.
Однонаправленные (односвязные) списки.
Организация стека.
Создание очереди.
Создание двусвязного (двунаправленного) списка.
НАСЛЕДОВАНИЕ.
Общие представление о наследовании.
Создание дочернего класса.
Графическое отображение наследования в диаграммах классов.
Права доступа при наследовании.
Управление спецификаторами доступа при наследовании с помощью using.
Переопределение компонентов родительского класса.
Конструкторы и деструкторы при наследовании.
Конструкторы с параметрами при наследовании.
Расширение функциональности уже существующего проекта.
Наследование и указатели на объекты. Раннее связывание.
Виртуальные методы. Позднее связывание.
Виртуальный деструктор.
Абстрактные классы.
Обобщенное понятие полиморфизма.
Множественное наследование.
Виртуальные классы.
ДОПОЛНИТЕЛЬНЫЕ ОБОБЩАЮЩИЕ ТИПЫ В С++.
Классы enum.
Объединения.
Битовые поля.
ЛЯМБДА-ФУНКЦИИ.
Назначение квадратных скобок в лямбда-функции.
Захват по значению.
Захват по ссылке.
Захват нескольких параметров.
Захват всех переменных в области видимости.
Использование лямбда-функции внутри методов класса. Захват this.
Объект-хранитель лямбда-функции.
Передача объекта-хранителя лямбды в стороннюю функцию.
Захваты значений лямбдами при создании объектов.
Изменение захваченных значений в теле лямбда-функции.
ИСКЛЮЧЕНИЯ.
Общие принципы механизма обработки исключений.
Поиск исключения.
Выбрасывание исключения.
Обработка исключений.
Генерация исключений за пределами блока try.
Размещение блоков try и catch в функциях.
Перехват исключений агрегирующего типа.
Перехват исключений базового класса в иерархии наследников.
Перехват всех исключений.
ТЕКСТОВЫЕ ФАЙЛЫ.
Базовый класс ios.
Классы ifstream, ofstream и fstream.
Операции позиционирования в потоке.
Запись информации. Объект класса ofstream.
Примеры записи в текстовый файл.
Запись текстовой информации.
Запись числовой информации.
Создание текстового файла с помощью функций.
Чтение информации. Объект класса ifstream.
Примеры чтения информации.
Чтение строки.
Чтение вещественных чисел из файла.
Применение функций для организации чтения текстовой информации.
Особенности использования объектов класса fstream.
ШАБЛОНЫ.
Параметризация функций.
Использование базовых типов в шаблонных функциях.
Перегрузка шаблона функции.
Удобство применения шаблонов функций.
Недостатки шаблонов функций.
Параметризация классов.
Пример класса с двумя обобщенными типами данных.
Использование типов «по умолчанию» в шаблонах классов.
Использование в шаблонах не параметризованных типов (параметр non-type).
Пример шаблона двумерного массива.
Преимущества использования шаблонов классов.
БИБЛИОТЕКА STL.
Шаблон complex.
Параметризованная структура pair.
Класс tuple.
Класс string.
Конструкторы строк.
Арифметические операции со строками.
Обращение к отдельным символам. Операция индексирования.
Ввод и вывод строк.
Методы класса string.
Примеры использования методов класса string.
Обработка чисел, хранящихся в строковом формате. Парсинг строк.
Контейнеры.
Контейнер vector.
Контейнер stack.
Контейнер queue.
Контейнер deque.
Контейнер list.
Контейнер set.
Алгоритмы стандартной библиотеки C++.
Алгоритмы поиска.
Алгоритм реверса.
Определение минимального и максимального элемента, подсчет количества совпадений.
Сортировки.
Функторы. Предикаты. Предикатные классы.
Создание функтора.
Передача функтора в шаблон функции, созданной разработчиком.
Создание функтора помощью параметризованного класса function.
Ознакомление с функциональными адаптерами.
ЛИТЕРАТУРА.
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Язык С++, Объектно-ориентированное программирование, Библиотека STL, Кравчук А.С., Кравчук А.И., Кремень Е.В., 2023 - fileskachat.com, быстрое и бесплатное скачивание.
Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.Купить эту книгу
Скачать - pdf - Яндекс.Диск.
Дата публикации:
Теги: учебник по программированию :: программирование :: Кравчук :: Кравчук :: Кремень
Смотрите также учебники, книги и учебные материалы:
Следующие учебники и книги:
- Паскаль для школьников, Подготовка к ЕГЭ, Кашаев С.М., Шерстнева Л.В., 2014
- Qt 6, Разработка оконных приложений на C++, Прохоренок Н.А., 2022
- Хакинг на С++, Ярошенко А.А., 2022
- Qt 6 QML, Боклаге-Рианнель Ю., Лорке С., Телин Й.
Предыдущие статьи:
- Разработка кроссплатформенного программного обеспечения, Городничев М.Г., Фатхулин Т.Д., Джабраилов X.А., 2023
- Статистическая обработка данных на языке R, Задорожный С.С., 2023
- Языки и системы программирования, Создание приложений для работы с базами данных, Учебно-методическое пособие, Шварцкоп О.Н., 2023
- Искусство Agile-разработки, Теория и практика гибкой разработки ПО, Шор Д., Уорден Ш., 2024