Е. К. Пугачев Объектно-ориентированное программирование Под общей редакцией Ивановой Г. С. Рекомендовано Министерством общего и профессионального образования Российской Федерации в качестве учебник
Вид материала | Учебник |
- Е. Л. Григоренко психогенетика под редакцией И. В. Равич-Щербо Рекомендовано Министерством, 27103.82kb.
- Г. В. Плеханова И. Н. Смирнов, В. Ф. Титов философия издание 2-е, исправленное и дополненное, 4810.28kb.
- К. Э. Фабри Основы зоопсихологии 3-е издание Рекомендовано Министерством общего и профессионального, 5154.41kb.
- Е. А. Климов введение в психологию труда рекомендовано Министерством общего и профессионального, 4594.17kb.
- Н. Ф. Самсонова Рекомендовано Министерством общего и профессионального образования, 6152.94kb.
- Ю. Г. Волков И. В. Мостовая социология под редакцией проф. В. И. Добренькова Рекомендовано, 6915.59kb.
- Е. Ф. Жукова Рекомендовано Министерством общего и профессионального образования Российской, 6286.83kb.
- О. А. Кривцун эстетика Рекомендовано Министерством общего и профессионального образования, 6381.8kb.
- В. И. Рудой классическая буддийская философия рекомендовано Министерством, общего, 6771.74kb.
- В. И. Ильинича Рекомендовано Министерством общего и профессионального Образования Российской, 6751.75kb.
Информатика в техническом университете
Том 4
Книга 2
Г.С Иванова, Т.Н. Ничушкина, Е.К. Пугачев
Объектно-ориентированное
программирование
Под общей редакцией Ивановой Г.С.
Рекомендовано Министерством общего
и профессионального образования
Российской Федерации в качестве учебника
для студентов высших учебных заведений,
обучающихся по специальностям:
«Вычислительные машины, системы, комплексы и сети»,
«Автоматизированные системы обработки информации и управления», «Программное обеспечение вычислительной техники и автоматизированных систем»
Москва
Издательство МГТУ имени Н.Э.Баумана
2000
Содержание
Введение ……………………………………………………………..……..….4
1. Теоретические основы объектно-ориентированного программирования 8
1.1. От процедурного программирования к объектному 8
1.2. Основные принципы и этапы объектно-ориентированного программирования 15
1.3. Объектная декомпозиция 22
1.4. Объекты и сообщения 30
1.5. Классы 33
1.6. Основные средства разработки классов 38
1.7. Дополнительные средства и приемы разработки классов 47
^ 2. Средства объектно-ориентированного программирования в языке Borland Pascal 7.0 58
2.1. Определение классов 58
2.2. Наследование 62
2.3. Полиморфизм 66
2.4. Динамические объекты 74
2.5. Создание библиотек классов 82
2.6. Композиция и наполнение 85
2.7. Разработка программ с использованием объектно-ориентированного программирования на языке Borland Pascal 7.0 91
^ 3. Средства объектно-ориентированного программирования в Borland С++ 3.1 99
3.1. Определение класса 99
3.2. Конструкторы и деструкторы 109
3.3. Наследование 118
3.4. Полиморфизм 129
3.5. Дружественные функции и классы 135
3.6. Переопределение операций 138
3.7. Особенности работы с динамическими объектами 144
3.8. Параметризованные классы 154
3.9. Контейнеры 161
^ 4. Создание приложений Windows 170
4.1. Семейство операционных систем Windows с точки зрения программиста 170
4.2. Структура приложения Windows 176
4.3. Технология разработки приложений Windows в средах Delphi и С++Builder 179
^ 5. Объектная модель Delphi Pascal 194
5.1. Определение класса 194
5.2. Особенности реализации полиморфизма 204
5.3. Свойства 212
5.4. Метаклассы 221
5.5. Делегирование 230
5.6. Библиотека стандартных классов Delphi 234
5.7. Создание и обработка сообщений и событий 244
5.8. Обработка исключений 254
^ 6. Объектная модель C++ Builder 263
6.1. Расширение базовой объектной модели С++ 263
6.2. Исключения 275
6.3. VCL-совместимые классы 286
6.4. Различие реализации объектных моделей С++, Delphi и С++ Builder 297
Заключение.................................................................................................320
Список литературы.................................................................................... 321
Предметный указатель................................................................................323
Перечень примеров …………………………………………………………325
Введение
Сложность современного программного обеспечения требует от разработчиков владения наиболее перспективными технологиями его создания. Одной из таких технологий на настоящий момент является объектно-ориентированное программирование (ООП). Применение ООП позволяет разрабатывать программное обеспечение повышенной сложности за счет улучшения его технологичности (лучших механизмов разделения данных, увеличения повторяемости кодов, использования стандартизованных интерфейсов пользователя и т.д.)
Однако ООП существенно отличается от традиционного программирования, к которому мы привыкаем со школьной скамьи, и потому считается трудно осваиваемым. Чтобы технологически грамотно использовать ООП, необходимо хорошо понимать его основные концепции и научиться мыслить при разработке программы в понятиях ООП. Для того чтобы помочь Вам в этом, и написана данная книга.
Практика преподавания ООП показывает, что идеология ООП лучше осваивается начинающими программистами, поэтому, чем раньше будущий программист ознакомится с этой технологией, тем лучше.
В основе книги лежат конспекты лекций, читаемых авторами в течение нескольких лет в МГТУ им. Н.Э. Баумана на кафедре «Компьютерные системы и сети» в цикле базовой подготовки по программированию, рассчитанной на студентов младших курсов. К началу чтения данного раздела студенты уже владеют основными навыками программирования на Паскале и С, а также работы в операционных системах MS DOS и Windows'95 (или старше). Аналогичная подготовка желательна и для читателей предлагаемой книги.
Изложение построено следующим образом.
В первой главе подробно описываются основные концепции и механизмы ООП. Описание выполняется чисто теоретически, без учета особенностей конкретных реализаций объектных моделей в рассматриваемых языках программирования. При чтении этой главы очень важно понять: чем рассматриваемый подход отличается от традиционного, что подразумевается под объектной декомпозицией, чем объектная декомпозиция отличается от процедурной, и какие основные механизмы реализуются средствами объектно-ориентированных языков программирования.
В двух следующих главах подробно рассмотрены средства ООП языков программирования, предназначенные для использования в среде MS DOS. Это упрощенная модель, предложенная в Borland Pascal 7.0 специально для облегчения «вживания» программистов в новую технологию, и практически полная объектная модель Borland C++ 3.1. Выбор именно этих языковых средств в значительной степени был обусловлен их широким распространением в нашей стране. Материал сопровождается большим количеством примеров, иллюстрирующих основные моменты изложения. При желании можно изучать одну из предложенных моделей, так как материал этих глав не связан, но в главе 2 много внимания уделяется выполнению декомпозиции, поэтому желательно ее хотя бы просмотреть.
Четвертая глава содержит сведения об особенностях разработки приложений операционных систем Windows'95, Windows'98 и Windows NT, необходимые для понимания последних двух глав, посвященных объектным моделям, положенным в основу Delphi и С++ Builder. Разработка приложений Windows в этих средах существенно автоматизирована, что упрощает их освоение по сравнению с профессиональными средами типа Visual С++. В то же время эти среды предлагают разработчикам огромные библиотеки визуальных и невизуальных компонент и в том числе средства для связи с наиболее популярными базами данных, позволяя создавать в них достаточно серьезные программные продукты. Данная книга поможет Вам сравнить обе модели, оценить их недоставки и достоинства.
Серьезной проблемой при изложении материала было отсутствие единой принятой терминологии ООП. Так, например, традиционно в С++ для обозначения функций, включенных в класс, используется термин «компонентные функции», а в Pascal – «методы» и т.д. По мере возможности мы стремились использовать единую терминологию, оговаривая соответствующие особенности при изложении материала.
Материал данной книги содержит большое количество иллюстраций (структур объектов, классов), при их изображении использовались следующие обозначения.
На структурной схеме программного продукта, которая при ООП является результатом объектной декомпозиции, объекты изображаются прямоугольниками (возможно со скругленными углами), а сообщения - линиями со стрелками, рядом с которыми указывается передаваемые сообщения. Например:
При изображении диаграмм классов использованы следующие условные обозначения:
В большинстве случаев рядом с разрабатываемым классом указываются названия полей и методов, которые предполагается включить в класс. Такое описание, как правило, позволяет сориентироваться в основных особенностях классов. Например:
При изображении графа состояний интерфейса сами состояния показываются в виде эллипсов, а возможные переходы - линиями со стрелкой на конце. На графе состояний интерфейса могут быть отмечены события, в результате наступления которых осуществляется тот или иной переход. Например:
Книга содержит большое количество примеров программ на рассматриваемых языках программирования. Как правило, они иллюстрируют новые положения или сложные моменты.
Мы будем рады, если наша книга поможет Вам в освоении ООП.
Глава 2 написана к.т.н. старшим преподавателем Пугачевым Е.К., глава 3 – к.т.н. доцентом Ничушкиной Т.Н., весь остальной материал данной книги – к.т.н. доцентом Ивановой Г.С.
Использованные сокращения:
ООП – объектно-ориентированное программирование
ТВМ – таблица виртуальных методов
ТДМ – таблица динамических методов
RTTI (Run Time Type Information) – информация о типе переменной времени выполнения