Синтаксис объекта Пример №1
поле; FIO :string[15];
. . . B1,B2,B3,B4:2..5;
поле; Procedure Get;
End;
Инкапсуляция – объединение данных и правил их преобразования. В описании вначале располагаются поля данных а затем правила. Метод имеет доступ к полям объекта без передачи их в виде параметров. Доступ к полям только через методы.
Описание методов задается отдельно, при этом имя подпрограммы является составным и состоит из имени объектового типа («хозяина»), точки имени подпрограммы. Для работы с составными именами можно использовать оператор присоединения.
Наследование - любой объект м.б. объявлен как производный («потомок») от объекта объявленного ранее («родителя», «предка») при этом он наследует поля данных и методы родителя и м.б. дополнен другими данными и методами. Он в сою очередь может являться родителем для др. потомка, т.е. м. б. создана иерархия объектов. У объекта м.б. один родитель и сколь угодно потомков.
Это свойство позволяет создавать расширяемые программы.
Полиморфизм (много форм - греческое) - это задание одного имени действию, которое использует вся иерархия объектов, но каждый объект использует его своим способом. Имена полей потомка и предка не могут совпадать т.е. они не м.б. переопределены. Имена методов м.б. переопределены т.е. подпрограмма с тем же именем но выполняет другое действие.
Виртуальные методы
Свойство полиморфизма реализуется с использованием виртуальных методов.
Методы разделяются на статические и виртуальные.
одним.
Статические методы – код, которых подсоединяется к вызову в процессе компиляции.
Виртуальные методы – код, которых подсоединяется к вызову в процессе выполнения программы.
Виртуальный метод имеет тип Virtual (например: Procedure: Virtual).
Объект содержащий виртуальный метод должен содержать специальную подпрограмму которая позволяет инициализировать виртуальный метод, которая называется конструктор (Constructor).
Экземпляры объектов могут размещаться в динамической памяти (куче). Для освобождения динамической памяти при работе с объектами используется специальная подпрограмма, которая называется деструктор (Destructor).
Пример №1
На основании объекта школьник создать объект студент.
Program Obj2;
Uses crt;
Type skol=object
FIO :string[15];
B1,B2,B3,B4 :2..5;
Procedure Get;
Procedure Put;
Function Sbal:real;
End;
Var
sk :skol;
sb :real;
Procedure skol.Get;
Begin
Writeln('Введите FIO'); Readln(FIO);
Writeln('Баллы'); Readln(B1,B2,B3,B4)
End;
Procedure skol.Put;
Begin
Writeln('sb=',sb:4:2)
End;
Function skol.Sbal:real;
Var s:real;
Begin
s:=(B1+B2+B3+B4)/4;
Sbal:=s
End;
{ Начало описание обьекта "студент" }
Type stud=object(skol)
str :string[10];
Procedure Gets;
Procedure Puts;
End;
Procedure stud.Gets;
Begin
Writeln('Введите Страну'); Readln(str);
End;
Procedure stud.Puts;
Begin
Writeln('Страна->',str)
End;
Var
st:stud;
{ Конец описания }
Begin
clrscr;
{ With sk do } WitH st do
{ Begin } Begin
{ Get ; } Get;
{ sb:=Sum;} sb:=Sbal;
{ Put; } Put;
{ Readln } Gets;
{ End } Puts;
{ End. } Readln
End
End.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.