Излож. мат-л позв. созд. в очень упрощ. вар-те мод-ь, расчит. зарпл. сотрудн. инститт. разл. катег. Ранее были определ. методы Tsaff.Getsum и Tteacher. Getsum нам понад еще 2 метод. Tsaff. Showsum и Tteacher. Showsum, вывод на экран. знач фу –ии Getsum Unit Persons;
Interface
Type Tperson = object
Name:string[6];
Money:real;
Procedure Init(nm:string; m:real);
End;
Tstaff = object(Tperson)
Bonus:ral;
Procedure Init(nm:string;m,b:real);
Function Getsum:real;
Procedure Showsum;
End;
Tteacher = object(Tstaff)
Hours:word;
Procedure Init(nm:string;m,b:real;h:word);
Function Getsum:real;
Procedure Showsum;
End;
Implementetion
Procedure Tperson.Init;
Begin
Name:=nm;
Money:=m;
End;
Procedure Tstaff.Init;
Begin
Tperson(nm,m);
Bonus:=b;
End;
Procedure Tteacher.Init;
Begin
Tstaff.Init(nm.m.b);
Hours:=h;
End;
Function Tstaff .Getsum;
Begin
Getsum:=money+bonus;
End;
Function Tteacher. Getsum;
Begin
Getsum:= Tstaff .Getsum + 0.01* hours* money;
End;
Procedure Tstaff . Showsum;
Begin
Writeln(getsum);
End;
Procedure Tteacher. Showsum;
Begin
Writeln(getsum);
End;
End.
Прогр., использ. од. Persons, мож. выгляд., наприм. след образ.
Uses Persons;
Var saff:tstaff; teacher:tteacher;
Begin
Staff.Init(‘Иванов’, 300,100);
Teacher.Init(‘Петров’, 200,200,100);
Staff.Showsum
End.
В наш. прим. был опред. род. тип Tperson, не используем. в дальнейш. для опис. перемен. Такие типы наз. абстрактн.Понятно, что в дан. конкр. случ. этот тип оказ. беспол-м, иерарх. объектов можно было нач. с Tstaff. Однока в общ. слу. использов. абстрактн. типов мож. упрост. описан.
(Срытие данных)
Если объект сд. в мод., то доступ к полям и методам объекта извне,т.е. чаще всего из использ. модуль программы, можно огранич. Для этого использ. лиректива private, окрывающ. секцию скрытых полей и методов.Те элементы объекта, кот были перечислены в этой секции, не дост. пользоват., получивш. TPU файл. Часто так делают, чтобы предупред. ошибочн. действия пользоват. с объекн. данными.Скрытые поля и методы доступны лишь в рамках той програм. еден.(прогр или мод), где описан соов. объект.
Директ. public отменяет действ. директ. private, поэт. все элем. объекта, след. за этой дир., доступы в люб. прогр. еден.
Директ. private и public могут произв. образ. чередов. в предел. одн. объекта.
Type Myobject = object
Поля; {общедоступн.}
Методы; {общедоступн.}
Private
Поля; {сткрытые.}
Методы; {сткрытые.}
Public
Поля; { общедоступн.}
Методы; { общедоступн.}
end;
Директ. Public закрыв. поля и методы, описан. ниже (до public), от пользоват. модуля, оставл. их доступн. для всех методов дан. модуля
29.ООП. Наследование, его назначение. Наследование полей. Наследование и
переопределение методов.
Пусть все сотр. инстит. в соотв. со спос. начислен. заработн. платы дел.-ся на 2 категор.: просто сотрудн., для кот. размер ежемес. выплат сост.. из велич., задаваем. полем money в типе Tperson, и некот. премии, и препод., для кот. ежемес. выплаты превыш. зарплату сотрудн. на некот. велич., завис. от кол-ва аудиторных часов.
Таким образ., нам понадоб. еще 2 типа: Tstaff, для расч. зарплаты сотрудн. с доп. к типу Tperson полем Bonus, и Tteacher, с еще одним полем – hours. Если бы мы имели дело с обычн. Turbo Паскалем, то должны были бы ввести новый тип, Tstaff, и пределить его след. образом
Type Tstaff = record
Staff:Tperson;
Bonus:real;
End;
Такой тип буд. сод. все поля Tperson и еще одно доп. В ООП, однако, объектн. тип можно объявить не только как полн., самост. тип, но также как потомка другого ранее определ. типа. В наш. случ. типом – предк. будет явл-ся тип Tperson , а Tstaff – дочерним типом, посколку посл. долж. сод. все поля объекта Tperson плюс еще одно дополн. В этом случ.в опред. типа – потом. должн. быть указан.(в кругл скобк. после служ. слова object) имя род. типа
Type Tstaff = object(Tperson)
Bonus:real;
End;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.