Голосование

За какой срок реально продвинуть сайт в TOP-10 Yandex по НЧ запросу ?
 

Поиск по сайту

Функция THourly.GetPayAmount

Другим примером переопределяемого метода является функция THourly.GetPayAmount, вычисляющая сумму выплат работающему на почасовой ставке. В действительности, каждый тип объекта TEmployee имеет свой метод GetPayAmount, так как тип работающего зависит от того, как производится расчет. Метод THourly.GetPayAmount должен учитывать, сколько часов работал сотрудник, были ли сверхурочные работы, каков коэффициент увеличения за сверхурочные работы и т. д.

Метод TSalaried. GetPayAmount должен лишь делить ставку работающего на число выплат в каждом году (в нашем примере).

unit Workers;

interface

const

PayPeriods = 26; {в год}

OvertimeThreshold = 80; {за каждый период оплаты}

OvertimeFactor =1.5; {увеличение против обычной оплаты}

type

TEmployee = object

Name, Title: string[25];

Rate: Real;

procedure Init (AName, ATitle: string; ARate: Real);

function GetName : String;

function GetTitle : String;

function GetRate : Real;

function GetPayAmount : Real;

end;

THourly = object(TEmployee)

Time: Integer;

procedure Init(AName, ATitle: string; ARate:

Real, Atime: Integer);

function GetPayAmount : Real;

function GetTime : Real;

end;

TSalaried = object(TEmployee)

function GetPayAmount : Real;

end;

TCommissioned = object(TSalaried)

Commission : Real;

SalesAmount : Real;

constructor Init (AName, ATitle: String; ARate,

ACommission, ASalesAmount: Real);

function GetPayAmount : Real;

end;

implementation

function RoundPay(Wages: Real) : Real;

{округляем сумму выплат, чтобы игнорировать суммы меньше

денежной единицы}

begin

RoundPay := Trunc(Wages * 100) / 100;

.

.

.

 
 Яндекс цитирования 2008 Soft-Uprating.Ru ©  Все права защищены.

Партнеры и друзья сайта
Как привлечь деньги - кабинет руководителя. Низкие цены мебели руководителю.