- •Часть 3. Объектно-ориентированное программирование
- •Екатеринбург
- •Введение
- •Классы Описание класса
- •Описание объектов
- •Указатель this
- •Конструкторы
- •Конструктор копирования
- •Конструктор копирования для класса monstr:
- •Статические элементы класса
- •Статические поля
- •Статические методы
- •Дружественные функции и классы Дружественные функции
- •Дружественный класс
- •Деструкторы
- •Перегрузка унарных операций
- •Перегрузка бинарных операций
- •Перегрузка операции присваивания
- •Перегрузка операции приведения типа
- •Наследование Ключи доступа
- •Простое наследование
- •Правила наследования методов
- •Виртуальные методы и механизм позднего связывания
- •Абстрактные классы
- •Обработка исключительных ситуаций
- •Синтаксис исключений
- •Перехват исключений
- •Список исключений
- •Иерархии исключений
- •Библиографический список
- •Оглавление
- •Часть 3. Объектно-ориентированное программирование
- •620002, Екатеринбург, ул.Мира, 19
- •620002, Екатеринбург, ул.Мира, 19
Федеральное агентство
по образованию ГОУ
ВПО «Уральский государственный
технический университет
УПИ»
Программирование
на языке C++
Методические
указания к лабораторным и самостоятельным
работам по курсу «Программирование
на языке С++» для слушателей курсов
повышения квалификации и студентов
всех форм обучения всех специальностей.
2006Часть 3. Объектно-ориентированное программирование
Екатеринбург
УДК 681.3
Составитель А. В. Кибардин
Научный редактор доц., канд.техн.наук Б. В. Семенов
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ с++. ч.3. Объектно-ориентированное программирование: методические указания к лабораторным и самостоятельным работам по курсу «Программирование на языке С++» / А. В. Кибардин. Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2006. 40 с.
Методические указания предназначены для изучения основ объектно-ориентированного программирования на алгоритмическом языке С++ и ориентированы на студентов, аспирантов, слушателей ФПК и подготовительного отделения, обучающихся основам современных информационных технологий.
Библиогр.: 3 назв. Табл.1
Подготовлено факультетом повышения квалификации преподавателей и профессиональной переподготовки
УДК 681.3
© ГОУ ВПО “Уральский государственный
технический университет-УПИ”, 2006
Введение
В С/С++ вводится понятие класса – тип данных, объединяющий структруры данных и обрабатывающие их функции.
Конкретные величины типа данных “класс” называются экземплярами класса или объектами.
Основными принципами объектно-ориентированного программирования (ООП) являются инкапсуляция, наследование и полиморфизм.
Инкапсуляция – это объединение в единое целое данных и процедур (алгоритмов) обработки данных. В рамках ООП данные называются полями объекта, а алгоритмы их обработки (процедуры) – методами объекта. Инкапсуляция позволяет в максимальной степени изолировать объект от “внешнего” окружения, т.е. остальной программы, так как локализованные в объектах алгоритмы обмениваются с программой сравнительно небольшими объемами данных. В результате замена или модификация алгоритмов и данных, инкапсулированных в объект, как правило, не ведет за собой плохо прослеживаемых последствий для программы в целом. Другим немаловажным следствием является возможность переноса объектов из одной программы в другую.
Наследование есть свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от своего родителя все поля и методы, может дополнять объекты новыми полями и перегружать (перекрывать) методы родителя или дополнять их. Принцип наследования решает проблему модификации свойств и придает ООП исключительную гибкость. При работе с объектами программист обычно подбирает объект, наиболее подходящий по своим свойствам для решения данной задачи, и создает одного или нескольких потомков от него, которые “умеют” делать то, что не реализовано в их родителе.
Полиморфизм – это свойство родственных объектов, т.е. объектов, имеющих одного общего предка-родителя, решать схожие по смыслу проблемы разными способами. В рамках ООП возможности (свойства) объекта определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках объекта-родителя, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть (перегрузить) его в потомке, т.е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющих разные алгоритмы и, следовательно, придающих объектам разные свойства.