- :
.
. .
- -.
, . , . , .
. , . , . .
Object. :
Type
= Object
;
;
End;
. -, . , . - . , , , .
, , , .
Var Person: TPerson;
Person .
: Private Public. Private . , TPU‑. , . Public Private. , Public, .
Type
NewObject = Object {}
; {}
; {}
Private
; {}
; {}
Public
; {}
; {}
End;
|
|
- . :
Type
= Object ( )
;
;
End;
, , . () , , , () . .
, . Person TPerson Student TStudent, :
Person:= Student;
Person , Student. . , , :
.
, . , . .
. , , .
TPerson = Object
Name: string[25];
Dolgn: string[25];
Stavka: Real;
Procedure Init (Nm, Dg: String; Sv: Real);
Function GetName: String;
Function GetDolgn: String;
Function GetStavka: Real;
Procedure ShowName;
Procedure ShowDolgn;
Procedure ShowStavka;
end;
TStudent = Object (TPerson)
Ball: Real;
Procedure Init (Nm, Dg: String; Sv, Bl: Real);
Function GetBall: Real;
Function GetSum: Real;
Procedure ShowBall;
Procedure ShowSum;
Procedure ShowAll;
end;
TStudent : Name, Dolgn, Stavka TStudent ; Ball TStudent. ShowName, ShowDolgn, ShowStavka, ShowBall , , . GetSum Ball c . ShowAll .
Student TStudent :
With Student Do
Begin
Init (, , 100, 4.5);
ShowAll;
End;
:
Student. Init (, , 100, 4.5);
Student. ShowAll;
. , . EXE. , .
|
|
.
TStudent Init, , , Ball:
Procedure TStudent.Init;
Begin
TPerson.Init (Nm, Dg, Sv);
Ball:= Bl;
End;
, , Name, Dolgn Stavka, TPerson.
Inherited (). TStudent.Init :
Procedure TStudent.Init;
Begin
Inherited Init (Nm, Dg, Sv);
Ball:= Bl;
End;
. -.
TStaff:
TStaff = Object (TPerson)
Private
Bonus: Real;
Public
Procedure Init (Nm, Dg: String; Sv, Bn: Real);
Function GetSum: Real;
Procedure ShowSum;
Procedure ShowAll;
End;
, :
Function TStudent.GetSum: Real;
Begin
If Ball > 4.6 Then GetSum:= 1.5 * Stavka Else GetSum:= Stavka
End;
:
Function TStaff.GetSum: Real;
Begin
GetSum:= Stavka + Bonus
End;
, , :
TTeacher = Object (TStaff)
Private
Hours: Word;
HourRate: Real;
Public
Procedure Init (Nm, Dg: String; Sv, Bn, Hrt: Real; Hr: Word);
Function GetSum: Real;
Procedure ShowSum;
Procedure ShowAll;
End;
TTeacher.GetSum TStaff.GetSum , :
Function TTeacher.GetSum: Real;
Begin
GetSum:= TStaff.GetSum + Hours * HourRate
End;
, . , , .
With... Do.... . , .
TPerson, TStudent, TStaff TTeacher ShowSum ShowAll. TStudent :
Procedure TStudent.ShowSum;
Begin
Writeln (GetSum);
End;
Teacher :
Procedure Teacher.ShowSum;
Begin
Writeln (GetSum);
End;
Teacher ShowSum TStaff, TStaff TStudent. , : ? , ShowSum Teacher ShowSum TStaff, . Teacher ShowSum TStaff, GetSum, , TStaff. .
, TPerson, TStudent, TStaff TTeacher, . , . , , :
|
|
1. , .
2. , . , .
3. , , , . , , .
4. , . .
, .
TTeacher TStaff, TStaff.GetSum. TStaff.ShowSum, TStaff.GetSum. , TStaff.GetSum TStaff.ShowSum . , :
Procedure TStaff.ShowSum;
Begin
Writeln (TStaff.GetSum);
End;
TStaff TTeacher.
, , , , . , . .
, Virtual:
Procedure (); Virtual;
Function (): ; Virtual;
:
1. , , , . , .
2. , .
3. , ( Init). Procedure Constructor. , . .
, , . . . . , , () , , . .
. , . .
|
|
:
TPerson = Object
Name: string[25];
Dolgn: string[25];
Stavka: Real;
Constructor Init (Nm, Dg: String; Sv: Real);
Function GetName: String;
Function GetDolgn: String;
Function GetStavka: Real;
Procedure ShowAll; Virtual;
end;
TStudent = Object (TPerson)
Ball: Real;
Constructor Init (Nm, Dg: String; Sv, Bl: Real);
Function GetBall: Real;
Function GetSum: Real; Virtual;
Procedure ShowAll; Virtual;
end;
TStaff = Object (TPerson)
Private
Bonus: Real;
Public
Constructor Init (Nm, Dg: String; Sv, Bn: Real);
Function GetSum: Real; Virtual;
Procedure ShowSum; Virtual;
Procedure ShowAll; Virtual
End;
TTeacher = Object (TStaff)
Private
Hours: Word;
HourRate: Real;
Public
Constructor Init (Nm, Dg: String; Sv, Bn, Hrt: Real; Hr: Word);
Function GetSum: Real; Virtual;
Procedure ShowAll; Virtual
End;
ShowSum TTeacher. ShowSum TStaff , TTeacher.
, . .
, . , , . () , , , .
, , , . New, :
Var p: ^TPerson;
...
New (p);
New , , , .
, :
p^.Init (, , 400)
New. New . , :
New (p, Init (, , 400));
Dispose (p);
. , . . Destructor. , , . Done . . . , , , . , Dispose , New.
Dispose (p, Done);
. . , , Dispose, . , , , , Destructor.
Destructor TPerson.Done;
Begin
End;
, TStaff, , :
|
|
Destructor TStaff.Done;
Begin
Inherited Done;
End;