Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Объектно-ориентированное программирование

..pdf
Скачиваний:
2
Добавлен:
12.11.2023
Размер:
16.61 Mб
Скачать

Г.С.Иванова, Т.Н.Ничушкина, Е.К.Пугачев

Объектноориентированное программирование

Под редакцией Г.С. Ивановой

Допущено Министерством образования Российской Федерации

в качестве учебника для студентов высших учебных заведений, обучающихся по направлению

подготовки дипломированных специалистов «Информатика и вычислительная техника»

М осква Издательство М ГТУ имени Н .Э .Баумана

2001

Информатика в техническом университете

Информатика в техническом университете

Серия основана в 2000 году

РЕДАКЦИ ОНН АЯ КОЛЛЕГИЯ:

д техн. наук И.Б. Федоров — главный редактор

д техн. наук А.А. Марков — зам. главного редактора

д техн. наук Ю.М. Смирнов — зам. главного редактора

д техн. наук В. Ф. Горнее

д техн. наук В.В. Девятков

канд. техн. наук И.П. Иванов

д техн. наук В.А. Матвеев

д техн. наук И.П. Норенков

д техн. наук В.В. Сюзев

д техн. наук Б.Г. Трусов

д техн. наук В.М. Черненький

д техн. наук В.А. Шахнов

УДК 681.3.06(075.8) ББК 32.973-018

И21

Рецензенты:

кафедра «Информатизация структур государственной службы» Российской академии госслужбы при Президенте РФ

(зав. кафедрой профессор А.В. Петров); профессор О.М. Брехов

Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К.

И21 Объектно-ориентированное программирование: Учеб, для вузов/ Под ред. Г.С. Ивановой. - М.: Изд-во М ГТУ им. Н.Э. Баумана, 2001. - 320 с., ил. (Сер. Информатика в техническом университете).

ISBN 5-7038-1525-8

В учебнике рассмотрена технология объектно-ориентированного программирования (ООП). Приведены основные теоретические положения ООП и описание реализаций ООП в средах Borland Pascal 7.0, C++ 3.1, Delphi и C++ Builder. Подробно рассмотрена специфика создания Windows-приложений с использованием современных средств ООП.

Содержание учебника соответствует курсу лекций, который авторы читают в МГТУ им. Н.Э. Баумана.

Для студентов вузов, обучающихся по направлению подготовки дипломированных специалистов «Информатика и вычислительная техника» и специальностям: «Вычислительные машины, системы, комплексы и сети», «Автоматизированные системы обработки информации и управления», «Программное обеспечение вычислительной техники и информационных систем». Может быть полезен всем изучающим объектноориентированное программирование.

УДК 681.3.06(075.8) ББК 32.973-018

 

©

Г.С. Иванова, Т.Н. Ничушкина, Е.К. Пугачев, 2001

 

© МГТУ им. Н.Э. Баумана, 2001

ISBN 5-7038-1525-8

©

Издательство МГТУ им. Н.Э. Баумана, 2001

СОДЕРЖАНИЕ

 

Предисловие.............................................................................................................

7

1. Т еор ети ч ески е осн овы объектно-ориентированного п р о гр ам ­

мирования ............................................................................................................

11

1.1. От процедурного программирования к объектному.....................

11

1.2. Основные принципы и этапы объектно-ориентированного

программирования..................................................................................

18

1.3. Объектная декомпозиция.....................................................................

25

1.4. Объекты и сообщения...........................................................................

33

1.5. К лассы .......................................................................................................

35

1.6. Основные средства разработки классов...........................................

39

1.7. Дополнительные средства и приемы разработки классов..........

48

2. С ред ства о б ъ ектн о -о р и ен ти р о ван н о го п р о гр ам м и р о ван и я в

Borland Pascal 7 .0 .............................................................................................

59

2.1. Определение класса.............................................................................

59

2.2. Наследование..........................................................................................

63

2.3. Полиморфизм..........................................................................................

67

2.4. Динамические объекты.........................................................................

75

2.5. Создание библиотек классов...............................................................

83

2.6. Композиция и наполнение...................................................................

86

2.7. Разработка программ с использованием объектно-ориентиро­

ванного программирования.................................................................

92

3. С ред ства о б ъ ектн о -о р и ен ти р о ван н о го п р о гр ам м и р о ван и я

в

Borland C++ 3 .1 ..................................................................................................

99

3.1. Определение класса..............................................................................

99

3.2. Конструкторы и деструкторы............................................................

110

3.3. Наследование.........................................................................................

118

5

3.4. Полиморфизм........................................................................................

129

3.5. Дружественные функции и классы.................................................

135

3.6. Переопределение операций..............................................................

138

3.7. Особенности работы с динамическими объектами...................

144

3.8. Параметризованные классы .............................................................

154

3.9. Контейнеры...........................................................................................

161

4. Создание приложений Windows..........................................................

169

4.1. Семейство операционных систем Windows с точки зрения

 

программиста.......................................................................................

169

4.2. Структура приложения W indow s....................................................

175

4.3. Технология разработки приложений Windows в средах Delphi

 

и C++Builder..........................................................................................

178

5. Объектная модель Delphi Pascal........................................................

192

5.1. Определение класса............................................................................

192

5.2. Особенности реализации переопределения методов.................

202

5.3. Свойства.................................................................................................

210

5.4. М етаклассы...........................................................................................

219

5.5. Делегирование......................................................................................

228

5.6. Библиотека стандартных классов D elphi......................................

233

5.7. Создание и обработка сообщений и событий..............................

241

5.8. Обработка исключений......................................................................

251

6. Объектная модель C++ Builder.............................................................

260

6.1. Расширение базовой объектной модели C++.............................

260

6.2. Исключения...........................................................................................

273

6.3. VCL-совместимые классы .................................................................

283

6.4. Различие реализации объектных моделей C++, D elphi и

 

C++B uilder.............................................................................................

294

Заключение....................................................................................................

306

Список литературы......................................................................................

307

Предметный указатель................................................................................

310

Перечень примеров......................................................................................

312

П Р Е Д И С Л О В И Е

Сложность современного программного обеспечения требует от разработчиков владения наиболее перспективными технологиями его создания. Одной из таких технологий на настоящий момент является объектноориентированное программирование (ООП). Применение ООП позволяет разрабатывать программное обеспечение повышенной сложности за счет улучшения его технологичности (лучших механизмов разделения данных, увеличения повторяемости кодов, использования стандартизованны х интерфейсов пользователя и т.д.)

Однако ООП существенно отличается от традиционного програм­ мирования, к которому мы привыкаем со школьной скамьи, и потому считается трудно осваиваемым. Чтобы технологически грамотно использовать ООП, необходимо хорошо понимать его основные концепции и научиться мыслить при разработке программы в понятиях ООП. Для того чтобы помочь вам в этом, и написана данная книга.

Практика преподавания ООП показывает, что идеология ООП лучше осваивается начинающими программистами, поэтому чем раньше будущий программист ознакомится с этой технологией, тем лучше.

В основе книги лежат конспекты лекций, читаемых авторами в течение нескольких лет в МГТУ им. Н.Э. Баумана на кафедре «Компьютерные системы и сети» в цикле базовой подготовки по программированию, рассчитанной на студентов младших курсов. К началу чтения данного раздела студенты уже владеют основными навыками программирования на Паскале и С, а также работы в операционных системах MS DOS и W indows’95 (или старше). Аналогичная подготовка желательна и для читателей предлагаемой книги.

Изложение построено следующим образом.

В главе 1 подробно представлены основные концепции и механизмы ООП. Описание выполняется чисто теоретически, без учета особенностей конкретных реализаций объектных моделей в рассматриваемых языках программирования. При чтении этой главы очень важно понять: чем рассматриваемый подход отличается от традиционного, что подразумевается под объектной декомпозицией, чем объектная декомпозиция отличается от процедурной, и какие основные механизмы реализуются средствами объектноориентированных языков программирования.

7

Предисловие

В главах 2 и 3 подробно рассм отрены средства ООП языков программирования, предназначенные для использования в среде MS DOS. Это упрощенная модель, предложенная в Borland Pascal 7.0 специально для облегчения «вживания» программистов в новую технологию, и практически полная объектная модель Borland C++ 3.1. Выбор именно этих языковых средств в значительной степени был обусловлен их широким распространением в нашей стране. Материал сопровождается большим количеством примеров, иллюстрирующих основные моменты изложения. При желании можно изучать одну из предложенных моделей, так как материал этих глав не связан, но в главе 2 много внимания уделяется выполнению декомпозиции, поэтому желательно ее хотя бы просмотреть.

Глава 4 содержит сведения об особенностях разработки приложений операционных систем Windows’95, Windows’98 и Windows NT, необходимые для понимания глав 5 и 6, посвященных объектным моделям, положенным в основу Delphi и C++ Builder. Разработка приложений Windows в этих средах существенно автоматизирована, что упрощает их освоение по сравнению с профессиональными средами типа Visual C++. В то же время эти среды предлагают разработчикам огромные библиотеки визуальных и невизуальных компонент и в том числе средства для связи с наиболее популярными базами данных, позволяя создавать в них достаточно серьезные программные продукты. Данная книга поможет вам сравнить обе модели, оценить их недостатки и достоинства.

Серьезной проблемой при изложении материала было отсутствие единой принятой терминологии ООП. Так, например, традиционно в C++ для обозначения функций, вклю ченны х в класс, используется терм ин «компонентные функции», а в Pascal - «методы» и т.д. По мере возможности мы стрем ились использовать единую терм инологию , оговаривая соответствующие особенности при изложении материала.

Материал данной книги содержит большое количество иллюстраций (структур объектов, классов), при их изображении использовались следующие обозначения.

На с т р у к т у р н о й с х е м е программного продукта, которая при ООП является результатом объектной декомпозиции, объекты изображаются прямоугольниками (возможно со скругленными углами), а сообщения - линиями со стрелками, рядом с которыми указываются передаваемые сообщения. Например:

8

Предисловие

При изображении д и а г р а м м к л а с с о в использованы следующие условные обозначения:

Имя

 

стандартные классы используемой среды;

Имя

 

классы, созданные для данного приложения;

 

 

наследование (направление наследования

 

 

сверху вниз);

2

композиция (цифрами указано количество полей);

—----->

------ >

наполнение - использование ссылок на объекты;

IIИмя

I

Класс - шаблон

В большинстве случаев рядом с разрабатываемым классом указываются названия полей и методов, которые предполагается включить в класс. Такое описание, как правило, позволяет сориентироваться в основных особенностях классов. Например:

Методы: Form Activate

InputEditKeyPressed

NextButtonClick

ExitButtonClick

При изображении г р а ф а с о с т о я н и й и н т е р ф е й с а сами состояния показываются в виде эллипсов, а возможные переходы - линиями со стрелкой на конце. На графе состояний интерфейса могут быть отмечены события, в результате наступления которых осуществляется тот или иной переход. Например:

События:

С1 — активация формы

С2 — нажатие клавиши Enter при вводе значения

СЗ — нажатие кнопки Выход С4 — нажатие кнопки

Следующее С5 — нажатие кнопки ОК

9

Предисловие

У чебник содержит больш ое количество примеров программ на рассматриваемых языках программирования. Как правило, они иллюстрируют новые положения или сложные моменты.

Мы будем рады, если наша книга поможет вам в освоении ООП. Главы 1 ,4 - 6 написаны доцентом, канд. техн. наук Г.С. Ивановой; глава

2 - старшим преподавателем, канд. техн. наук Е.К. Пугачевым; глава 3 - доцентом, канд. техн. наук Т.Н. Ничушкиной.

Хочется выразить глубокую признательность рецензентам: кафедре «Информатизация структур государственной службы» Российской академии госслужбы при Президенте РФ (зав. кафедрой профессор А.В. Петров) и профессору О.М. Брехову (зав. кафедрой «ЭВМ, комплексы и сети», МАИ) за ценные замечания и рекомендации, которые были учтены авторами при работе над рукописью.

Авторы