Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ООП.doc
Скачиваний:
22
Добавлен:
08.11.2018
Размер:
1.4 Mб
Скачать

246

Федеральное агентство по образованию

РЫБИНСКАЯ ГОСУДАРСТВЕННАЯ АВИАЦИОННАЯ

ТЕХНОЛОГИЧЕСКАЯ АКАДЕМИЯ им. П.А. СОЛОВЬЕВА

И.В. Сухарева

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

OBJECT PASCAL/С++

учебное пособие

Рыбинск, 2006

УДК 681.3.06

Сухарева И.В. Объектно-ориентированное программирование Object Pascal/C++: Учебное пособие/РГАТА, каф. МПО ЭВС. – Рыбинск, 2006. – 248 с.

Пособие содержит курс лекций по объектно-ориентированному программированию для направления 230100 «Информатика и вычислительная техника», специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем» и родственных специальностей.

В пособии рассматриваются принципы объектно-ориентированного программирования на основе языка программирования Object Pascal. В дополнении к нему также рассматривается язык программирования С++. Также рассмтриваются базовые принципы объектно-ориентированного анализа и проектирования.

Пособие подготовлено на кафедре МПО ЭВС РГАТА

Рецензенты:

ОГЛАВЛЕНИЕ

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

Введение 4

1.Инкапсуляция 11

1.1.Инкапсуляция в C++ 23

2.Свойства 26

2.1.Доступ к данным в C++ 41

3.Создание и уничтожение объектов 43

3.1.Создание и уничтожение объектов в C++ 59

4.Наследование 66

4.1.Множественное наследование в C++ 82

5.Полиморфизм, виртуальные и динамические методы 88

5.1.Полиморфизм в C++ 113

6.Абстрактные методы 117

6.1.Абстрактные классы в C++ 119

7.Области видимости 119

7.1.Области видимости в С++ 125

8.Перекрытие и переопределение свойств 129

9.Приведение объектных типов, операторы as и is 140

9.1.Приведение объектных типов в C++ 150

10.Агрегация 155

10.1.Агрегация в C++ 171

11.События 173

11.1.C++ Указатели на функцию 185

12.Внутреннее устройство объекта 188

13.Указатели на класс 192

13.1.Статические элементы класса в С++ 199

13.2.С++ Шаблоны 202

14.Обработка исключительных ситуаций 204

14.1.Обработка исключений в С++ 211

15.Перегрузка методов 217

15.1.Перегрузка имен функций в С++ 226

15.2.Перегрузка операций в С++ 227

16.Параметры по умолчанию 231

16.1.С++ Значения параметров по умолчанию 232

17.Основы объектно-ориентированного анализа и проектирования 233

Заключение 244

Библиографический список 246

Предисловие

Данное пособие написано на основе курса лекций по объектно-ориентированному программированию для направления 230100 «Информатика и вычислительная техника», специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем» и родственных специальностей.

В пособии рассматриваются принципы объектно-ориентированного программирования на основе языка программирования Object Pascal. В дополнении к нему также рассматривается язык программирования С++. Для понимания изложенного материала необходимы знания не объектно-ориентированных предков соответствующих языков: Pascal и С.

Также вводится понятие объектной модели и рассмтриваются базовые принципы объектно-ориентированного анализа и проектирования.

Введение Эволюция разработки программного обеспечения

В момент появления первых ЭВМ программы разрабатывались в двоичных кодах. Программы должны были учитывать особенности архитектуры ЭВМ, и именно в этом заключалась их основная сложность. Со временем вычислительные машины становились мощнее и надежнее. Одновременно возрастала сложность решаемых с их помощью задач, что в свою очередь вызвало совершенствование технологий разработки программ. Важнейший прорыв произошел в конце 50-х годов, когда появились языки программирования высокого уровня: Фортран, Алгол и др. Их появление в свою очередь позволило решать еще более сложные задачи. Требования возросли, что опять потребовало совершенствования технологий и т.д. Этот процесс продолжается непрерывно и не может иметь завершения.

Существующие на данный момент языки программирования высокого уровня исторически могут быть разделены на четыре группы – четыре поколения в зависимости от того, какие языковые конструкции в них использовались:

Первое поколение (1954-1958)

FORTRAN I

Математические формулы

ALGOL-58

Математические формулы

Flowmatic

Математические формулы

IPL V

Математические формулы

Второе поколение (1959-1961)

FORTRAN II

Подпрограммы, раздельная компиляция

ALGOL-60

Блочная структура, типы данных

COBOL

Описание данных, работа с файлами

LISP

Обработка списков, указатели, сборка мусора

Третье поколение (1962-1970)

PL/1

FORTRAN+ALGOL+COBOL

ALGOL-68

Более строгий потомок ALGOL-60

Pascal

Более простой потомок ALGOL-60

Simula

Классы, абстрактные данные

Четвертое поколение (1970-1980)

Огромное количество языков и диалектов

Появление объектных и объектно-ориентированных языков

Smalltalk

Переработанная Simula

Ada

Наследник ALGOL-68 и Pascal c элементами Simula

C++

Возник от брака С и Simula

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

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

В конце 60-х с появлением транзисторов, а затем интегральных схем, стоимость компьютеров резко снизилась, а их производительность росла почти экспоненциально. Появилась возможность решать все более сложные задачи, но это требовало умения обрабатывать самые разнообразные типы данных. Такие языки, как, например, Pascal стали поддерживать абстракцию данных. Программисты смогли описывать свои собственные типы данных.

70-е годы знаменовались всплеском активности создания новых языков. Было создано около 2-х тысяч языков и их диалектов. Вызван этот всплеск тем, что существовавшие к тому времени языки были очевидно неадекватны требованиям написания крупных программных систем. Лишь немногие из этих языков смогли выжить, однако многие их принципы нашли отражения в новых версиях более ранних языков. Именно в этом поколении появились языки, называемые объектными и объектно-ориентированными.

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