Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Визуальное программирование / Визальное_программирование_лекция.doc
Скачиваний:
53
Добавлен:
07.06.2015
Размер:
57.34 Кб
Скачать
  1. Инкапсуляция. Наследование и полиморфизм

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

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

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

Наследование и подклассы.

Все объекты создаются на основе классов и наследуют свойства и методы классов. Классы могут создаваться на основе других классов. Такие классы называют подклассами. Они наследуют все свойства и методы родительского класса. Дополнительно для подкласса можно определить новые свойства и методы. Изменение свойств и методов родительского класса отслеживается в подклассах, созданных на основе этого класса, а также в объектах, созданных на основе подклассов.

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

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

  1. Объектно-ориентированные средства языка Турбо Паскаль

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

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

Сфера действия типа объекта состоит из него самого и всех его порожденных типов.

Следующий код показывает примеры объявления типов объектов.

type

Point = object

X, Y: Integer;

end;

Rect = object

A, B: Point;

procedure Init(XA, YA, XB, YB: Integer);

procedure Copy(var R: Rect);

procedure Move(DX, DY: Integer);

procedure Grow(DX, DY: Integer);

procedure Intersect(var R: Rect);

procedure Union(var R: Rect);

function Contains(P: Point): Boolean;

end;

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

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

Аналогично записям к полям переменных объектных типов разрешается обращаться как с помощью уточненных идентификаторов, так и с помощью оператора with.

В разделе типов при описании объектных типов указываются только заголовки методов. Полное же описание методов – их тело – указывается в разделе объявления процедур и функций.