
- •Введение. Принципы объектно-ориентированного программирования
- •Глава 1. Классы и объекты
- •1.1. Операция разрешения области видимости ::
- •1.2. Перечислимый тип
- •1.3. Модификатор const
- •1.4. Новый тип данных – ссылка &
- •Inline определение_функции
- •2. Определение класса. Сокрытие информации.
- •3. Объект.
- •4. Конструкторы и деструкторы
- •4.1.Назначение конструктора
- •4.2. Конструктор копирования
- •X::X(X&); // где X – имя класса
- •4.3. Деструктор
- •5. Неявный указатель this
- •6. Перегрузка операций
- •7. Примеры перегрузки некоторых операций
- •7.1. Перегрузка операции [ ]
- •7.2. Перегрузка операции ()
- •7.6. Перегрузка операции (тип)
- •8. Дружественность
- •Istream
- •10. Массивы объектов.
- •11. Функции- и классы-шаблоны
- •11.1 Функции-шаблоны (родовые функции)
- •11.2 Классы-шаблоны
- •12. Член-данные класса – объекты другого класса: агрегированные классы.
- •Глава 2. Наследование. Полиморфизм
- •1. Базовый и порожденный классы
- •2. Конструкторы порожденного класса
- •3. Стандартные преобразования при наследовании
- •4. Множественное наследование. Виртуальный базовый класс
- •4.1. Прямые базовые классы
- •4.2. Виртуальный базовый класс
- •5. Полиморфизм, раннее и позднее связывание, виртуальные функции
- •5.1 Раннее (статическое) и позднее (динамическое) связывание
- •5.2. Определение виртуальной функции
- •5.3. Чистая виртуальная функция и абстрактный класс
- •5.4. Правила определения виртуальных функций
- •5.5. Механизм позднего связывания
- •6. Библиотека fstream – работа с файлами
- •Глава 3. Библиотека стандартных шаблонов (бсш). Контейнеры
- •1. Контейнер. Структура бсш.
- •2. Контейнер Vector – динамический массив
- •Контейнер list – список
- •4. Контейнер Set – множество
- •Содержание
- •Глава 1. Классы и объекты
- •Глава 2. Наследование. Полиморфизм
- •Глава 3. Библиотека стандартных шаблонов (бсш). Контейнеры
Введение. Принципы объектно-ориентированного программирования
В настоящее время компьютеры используются во всех областях человеческой деятельности. В связи с этим в последние годы резко возросла сложность решаемых задач. Для увеличения эффективности их решения уже недостаточно использование традиционных подходов: лучшая организация труда, подбор кадров и т.д. Более важным в настоящее время является выбор инструментария, т.е. системы программирования, языка программирования, т.к. современные системы содержат приемы, позволяющие эффективно решать большие задачи, контролировать критические ситуации (исключения). Подобные приемы получили название – технология программирования. В последние 10-15 лет наибольшее распространение получила технология объектно-ориентированного программирования (ООП).
В основу ООП положено понятие объекта. По своей сути – это простое понятие. Объект – это данные и операции, их обрабатывающие, любого уровня сложности. Причем в ООП наибольшее внимание уделяется не реализации объектов, а связям между ними. Эти связи организованы в виде сложных иерархических структур, где новые типы объектов создаются на основе имеющихся. В языке С++ имеется большой набор стандартных объектов, но при решении новых задач приходится создавать новые объекты, и профессиональный программист должен уметь это делать.
ООП базируется на 3-х основных принципах:
Инкапсуляция – сокрытие информации. Этот принцип предполагает создание пользовательских типов данных, включающих как данные, так и операции и функции, их обрабатывающие. Никакие другие данные не могут использовать эти операции и функции и наоборот. Контроль над санкционированным использованием данных и функций выполняет компилятор. Такие данные называются абстрактными в отличие от стандартных (встроенных) типов данных (int, char,...). Механизм создания абстрактных типов данных осуществляется через понятие класса.
Наследование – создание иерархии абстрактных типов данных. Определяется базовый класс, содержащий общие характеристики (прародительский класс), а из него по правилам наследования строятся порожденные классы, сохраняющие свойства и методы базового класса и дополненные своими характерными свойствами и методами.
Полиморфизм – множественность форм. Это принцип использования одинаковых имен функций и знаков операций для обозначения однотипных действий. В языке С++ полиморфизм используется в двух видах:
а) для обычных функций и операций над стандартными и абстрактными типами данных. Это так называемая “перегрузка функций и операций”;
б) для функций, определенных в иерархии наследования. Это так называемые “виртуальные функции”.
Язык С++ был создан в лаборатории Bell Labs в начале 80-х годов программистом Бьярном Страуструпом в течение нескольких месяцев путем добавления к С аппарата классов. Первый компиляторы появились в 1985 г.
В заключение отметим, что в настоящее время имеется много учебников по данному вопросу, но большинство из них ориентировано на профессиональных программистов. Данное учебное пособие предназначено в первую очередь для начинающих изучать технологию ООП и имеющих навыки программирования на языке С++. Примеры, приведенные в учебнике, написаны на языке С++ и отлажены в среде CBuilder.