
Лекция:
Объектно-ориентированное программирование:
объект, наследование, инкапсуляция,
полиморфизм
с.
Оглавление
Введение 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 – получить значения соответствующих полей.