- •Содержание
- •Часть 1. Основные понятия программирования §1.1. Этапы разработки программного обеспечения
- •§1.2. Основные сведения об алгоритмах Понятие алгоритма
- •Свойства алгоритма
- •Формы записи алгоритмов
- •Блок-схемы алгоритмов
- •§1.3. Языки программирования
- •§1.4. Паскаль и Object Pascal, Турбо-Паскаль и Delphi
- •Контрольные вопросы
- •Язык, оболочка и интегрированная среда разработки
- •Часть 2. Общие сведения о языке Паскаль §2.1. Алфавит и служебные слова
- •Описание общих конструкций языка
- •§2.2. Структура программы
- •§2.3. Разделы описаний Описание меток
- •Определение констант
- •Определение типов
- •Описание переменных
- •Контрольные вопросы
- •Часть 3. Простые типы данных Иерархия типов
- •§3.1. Целые типы
- •§3.2. Вещественные типы
- •§3.3. Логический тип
- •§3.4. Литерный тип
- •§3.5. Перечисляемый тип
- •§3.6. Диапазоны (интервальный тип)
- •Дополнительные типы в Delphi
- •Контрольные вопросы
- •Глава 4. Операторы языка Паскаль Выражения
- •§4.1. Оператор присваивания
- •§4.2. Ввод-вывод данных
- •§4.3. Составной оператор
- •§4.4. Пустой оператор
- •§4.5. Безусловный оператор перехода
- •§4.6. Условный оператор
- •§4.7. Оператор цикла с параметром for
- •§4.8. Оператор цикла с предусловием while
- •§4.9. Оператор цикла с постусловием repeat
- •§4.10. Оператор выбора case
- •Контрольные вопросы
- •Глава 5. Процедурное программирование §5.1. Функции
- •Параметры – значения
- •Параметры – переменные
- •Бестиповые параметры
- •§5.2. Процедуры
- •Правила использования подпрограмм
- •Рекурсия
- •Директивы
- •Процедурные типы
- •Пример использования подпрограмм
- •Контрольные вопросы
- •Глава 6. Структурированные типы данных
- •§6.1. Массивы
- •§6.2. Строки
- •§6.3. Записи
- •§6.4. Множества
- •Пример использования множеств
- •§6.5. Файлы
- •Установочные и завершающие операции
- •Операции ввода-вывода
- •Перемещения по файлу
- •Пример работы с файлом
- •Обработка ошибок ввода-вывода
- •Специальные операции
- •Пример объединения двух файлов
- •Текстовые файлы
- •Стандартные текстовые файлы
- •Файлы без типа
- •Контрольные вопросы
- •Глава 7. Динамические структуры данных §7.1. Динамические переменные
- •§7.2. Указатели
- •Работа с динамическими переменными
- •Пример двухсвязанного циклического списка
- •Указатели без типа
- •Контрольные вопросы
- •Глава 8. Низкоуровневые возможности Паскаля §8.1. Язык Ассемблер
- •§8.2. Доступ к аппаратуре Доступ к памяти
- •Доступ к портам ввода-вывода
- •Работа по прерываниям
- •Контрольные вопросы
- •Глава 9. Модули §9.1. Основные понятия
- •§9.2. Использование модулей
- •§9.3. Стандартные модули
- •§9.4. Модуль Crt
- •Работа с экраном в текстовом режиме
- •Работа с клавиатурой
- •Работа со звуком
- •§9.5. Модуль dos
- •§9.6. Графический режим монитора
- •Контрольные вопросы
- •Глава 10. Введение в объектно-ориентированное программирование §10.1. История развития программирования
- •Понятие объекта
- •§10.2. Свойства объектов
- •Раннее и позднее связывание
- •§10.3. Виртуальные методы
- •Конструкторы и деструкторы
- •§10.4. Динамические объекты
- •Скрытые поля и методы
- •Контрольные вопросы
- •Литература
Глава 10. Введение в объектно-ориентированное программирование §10.1. История развития программирования
В общих чертах ее можно представить диаграммой:
Машинное программирование процедурное программирование ООП
Первый объектно-ориентированный язык программирования Симула был создан в 1967 г. и являлся расширением Алгола. В 1970 г. был разработан язык Смолток, но они не стали популярными из-за низкого быстродействия.
В современные прикладные языки объектно-ориентированное программирование пришло не сразу, так Турбо Паскаль и Си изначально не были объектно-ориентированными. В 1983 г. появилась объектно-ориентированная версия Си++, а в 1989 г. были включены средства работы с объектами в версию Турбо Паскаль 5.5.
Понятие объекта
Весь окружающий нас мир состоит из объектов, то есть предметов живой и неживой природы, которые представляются как единое целое, а отдельные их части образуют сложное взаимодействие друг с другом. Объект можно разделить на части, но тогда он перестает быть этим объектом.
Объекты являются высшим уровнем абстракции данных, так как отношения частей к целому и взаимоотношения между частями становятся понятнее и удобнее тогда, когда все содержится вместе как единое целое.
Обычно, классифицируя некоторый объект, возникают вопросы: чем этот объект похож на другие объекты из общего класса и чем он отличается от других. Каждый конкретный класс имеет свои особенности поведения и характеристик, определяющих этот класс. В свою очередь классы делятся на подклассы и т.д., то есть образуют иерархическую структуру, пример которой приведен на рис. 10.1.
Рис. 10.1. Пример фрагмента иерархии геометрических фигур
Наивысший уровень – самый общий, каждый последующий – более специфический, дополняемый деталями. На последнем уровне определяются цвет, стиль заполнения и т.п.
Более низкий уровень, называемый непосредственным потомком или подклассом, наследует данные (поля) и программы обработки (методы) уровня, стоящего выше. Уровень, стоящий выше подкласса, называют непосредственным предком или родителем. Объектный тип в Турбо Паскале может иметь не более одного родителя, но неограниченное число порожденных типов.
Иерархия объекта – это структурированный в виде дерева набор связей родитель-потомок набора объектов.
Основное правило ООП: если характеристика определена для какого-либо объекта, то все объекты, расположенные ниже данного определения, содержат эту характеристику.
Объектные типы в языке Турбо Паскаль очень похожи на комбинированный тип – записи, то есть объектный тип так же является составным, элементы, то есть поля которого могут иметь любой тип. Простейший пример объектного типа, – точка, – может выглядеть следующим образом.
Type
Point = object
X,Y: integer;
Visible: boolean
end;
Для формирования структуры типа объект используется служебное слово object. В дальнейшем тип Point можно использовать в программе обычным образом: определять переменные этого типа, как статически, в разделе Var, так и динамически, создавая экземпляр переменной этого типа с помощью процедуры New; работать с полями и прочее.
Но важнейшим и радикальным отличием от обычных комбинированных типов является возможность, наряду с полями, описывать в объектовом типе процедуры и функции, описывающие действия, которые можно выполнять с данным объектом. В этом и заключается одна из главных идей объектно-ориентированного подхода к программированию: предполагается, что объект содержит не только информацию о себе, но и правила своего поведения, оформленные в виде выполняемых фрагментов, – подпрограмм. Подпрограммы, определенные в объектном типе, называются методами объекта.
