Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 28_ООП. Инкапсуляция, наследование, поли...doc
Скачиваний:
0
Добавлен:
24.08.2019
Размер:
120.32 Кб
Скачать

Лекция: Объектно-ориентированное программирование: объект, наследование, инкапсуляция, полиморфизм с. 8 из 8

Оглавление

Введение 1

Определение объектов 1

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

Наследование 3

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

Контрольные вопросы 8

Урок-лекция №28

Введение

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

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

Определение объектов

Объект – это структура, компонентами которой являются данные-поля объекта и процедуры (функции) - методы объекта. Все данные и методы инкапсулированы в одном объекте.

Определение типа ОБЪЕКТ:

TYPE ИмяОбъекта = OBJECT

Поля данных;

Заголовки методов;

END;

Все поля данных предшествуют методам. Поля – любые структуры данных кроме файлов. Например,

Type TPerson=Object

Name : string[20];

Address : string[40];

Procedure Init(n,a : string);

End;

Var Student : TPerson;

В примере объявлены объектный тип TPerson и переменная Student. Переменная Student – это экземпляр объектного типа. Очевидно, что объект Student представляет собой структуру, которая состоит их двух полей строкового типа – Name и Address.

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

Метод – это процедура (или функция), объявление которой включено в объявление объектного типа. Метод выполняет действие над объектом – экземпляром объектного типа. Включая объявление методов в объявление объектного типа, программист явно указывает какие действия могут быть выполнены над объектом.

Пример:

Type TPerson =Object

Name : string[20];

Address : string[40];

Procedure Init(n,a:string);

Procedure Show;

Function GetAddress:string;

End;

Var Person : TPerson;

В примере объявлены два метода-процедуры Init и Show и метод-функции GetAddress. Метод Init предназначен для инициализации полей объекта, метод Show предназначен для вывода содержимого полей объекта на экран, метод GetAddress обеспечивает доступ к полю Address.

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

Переменную, описываемую типом ИмяОбъекта, называют экземпляром объекта:

Var ЭкземплярОбъекта : ИмяОбъекта;

В программе может быть сколько угодно экземпляров одного объекта. Вызов метода – это оператор (или выражение) вида:

<ИмяЭкземпляраОбъекта>.<ИмяМетода>[<СписокФактическихПараметров>]

Например,

Procedure TPerson.Init(n,a:string);

Begin

Name:=n;

Address:=a;

End;

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

Например, в результате выполнения Student.Show; будет применен метод Show, в результате чего на экран будет выведено содержимое полей объекта Student.

Вместо прямого доступа к полям следует использовать методы. Например,

Type TPerson =Object

Procedure Init(n,a:string);

Function GetName:string;

Function GetAddress:string;

Procedure SetAddress(NewAddress:string);

End;

В объявлении типа TPerson включены объявления методов. Метод Init обеспечивает инициализацию объекта. Метод SetAddress позволяет изменить значение поля Address, методы GetName и GetAddress – получить значения соответствующих полей.