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

Информатика в техническом университете / Информатика в техническом университете. Объектно ориентированное программирование

.pdf
Скачиваний:
105
Добавлен:
06.03.2018
Размер:
9.48 Mб
Скачать

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

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

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

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

д-р техн. наук И.Б, Федоров — главный редактор д-р техн. наук А.А. Марков — зам. главного редактора

д-р техн. наук Ю.М. Смирнов — зам. главного редактора д-р техн. наук В.Ф. Горнее д-р техн. наук В.В. Девятков канд. техн. наук И.П. Иванов д-р техн. наук В.А. Матвеев д-р техн. наук И.П. Норенков д-р техн. наук В.В. Сюзев д-р техн. наук Б.Г. Трусов

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

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

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

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

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

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

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

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

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

2001

УДК 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. Подробно рассмотрена специфика создания Wшdows-пpилoжeний с использованием современных средств ООП.

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

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

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

 

©

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

 

©

МГТУ им. Н.Э. B^Tviana, 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

5 9

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. Структура приложения Windows

175

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

 

HC++Builder

178

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

192

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

192

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

202

5.3. Свойства

210

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

219

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

228

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

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++, Delphi и

 

C++Builder

294

Заключение

306

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

307

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

310

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

312

П Р Е Д И С Л О В И Е

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

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

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

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

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

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

Предисловие

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

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

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

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

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

> Создать и нарисовать

^|

 

Окно

 

^1

 

Изменить размер

^|

Окружность

приложения

Изменить цвет

^1

 

^|

 

J,

Уничтожить

^1

 

 

 

Предисловие

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

:1111111

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

Имя

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

 

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

 

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

 

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

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

Имя Класс - шаблон

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

Ш||||^|

1

^mg^^^im^^

Методы:

||||И^^

 

TMainForm

Form Activate

 

InputEditKeyPressed

Д|^^^^^^^

 

NextButtonClick

^^^^Шй.

 

 

ExitButtonClick

 

 

 

При изображении

г р а ф а с о с т о я н и й и н т е р ф е й с а сами

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

События:

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

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

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

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