ЛИСТИНГ 8.4 Объектно-ориентированный "механизм обработки" закладной MORTUB.PAS

MORTLIB By Jeff Duntemann KG7JF

"Механизм обработки" обсчета закладных в Delphi с полным использованием новых библиотек класса VCL Delphi Написано для *Delphi Programming Explorer* Copyright (с) 1995 The Coriolis Group, Inc.

Свободная адаптация кода, первоначально опубликованного в DDJ в октябре 1991 Последнее дополнение 3/7/95

UNIT MortLib;

INTERFACE USES Classes; TYPE

String2 = String[2]; { Удобно для кодов состояний } StringlO = String[10]; { Удобно для 9-цифровых ZIP кодов ) Strmgl5 = String[15]; String2S = String[25]; String40 = String[40]; String80 = String[80]; TLender = RECORD

LenderlD Integer;
LenderName String40; LenderAddress String40; LenderCity String25 LenderState : String2, LenderZIP : StringlO;
LenderPhone String25;
end;

TPayment = CLASS(TObject) { Один элемент в амортизационной }

{ таблице } PaymentNum Integer;
PayPrincipal : Real; Paylnterest : Real; PrincipalSoFar : Real, InterestSoFar : Real; ExtraPrincipal : Real; Balance : Real;

PROCEDURE GetStringForm(VAR StrPayNum,

StrPayPrin, StrPaylnt, StrPrinSoFar, StrlntSoFar, StrExtraPrin, StrBalance : Stringl5);
END;

TMortgage =

CLASS(TObject)

Periods : Integer; { Число периодов в закладной }

PeriodsPerYear : Integer, { Число периодов в году ) Principal : Real; { Величина основного капитала }

{ в центах }

Interest : Real; { Процентная ставка в год }

MonthlyPI : Real; { Месячный платеж в центах }

Payments : TList, {Список объектов, содержащий платежи}

CONSTRUCTOR Init(StartPrincipal : Real;
Startlnterest : Real;
StartPeriods : Integer;

StartPeriodsPerYear : Integer)

PROCEDURE SetNewInterestRate(NewRate : Real); PROCEDURE Recalc;
FUNCTION GetPayment(PaymentNumber : Integer) : TPayment; PROCEDURE ApplyExtraPrincipal(PaymentNumber Integer;
Extra : Real);

PROCEDURE RangeExtraPrincipal(StartPayment,

EndPayment Integer; Extra : Real);
PROCEDURE MultipleExtraPrincipal(StartPayment : Integer ;
Extra : Real);

PROCEDURE RemoveExtraPrincipal(PaymentNumber : Integer); PROCEDURE RemoveAllExtraPrincipal; end; IMPLEMENTATION

{ Это не метод, а просто функция-"утилита", приватная для } { этого модуля. Она вычисляет месячный платеж. }

FUNCTION CalcPayment(Principal,InterestPerPeriod : Real;
NumberOfPeriods Integer) : Real;

var Factor : Real; begin Factor :=

EXP(-NumberOfPeriods * LN(1.0 + InterestPerPeriod)); CalcPayment := Principal * InterestPerPeriod / (1.0 - Factor) END;

{ Этот метод существует для преобразования числовых значений } { внутри объекта TPayment в строчную форму для } { отображения в TStringGrid. }

PROCEDURE TPayment.GetStringForm(VAR StrPayNum,

StrPayPrin, StrPaylnt, StrPrinSoFar, StrlntSoFar, StrExtraPrin, StrBalance : Stringl5);
begin
Str(PaymentNum:5,StrPayNum); Str(PayPrincipal : 12 : 2,StrPayPrin); Str(PayInterest :12 : 2,StrPaylnt); Str(PrincipalSoFar: 12 : 2,StrPrinSoFar); Str(InterestSoFar:12 : 2,StrlntSoFar); Str(ExtraPrincipal: 12 : 2,StrExtraPrin) ; Str(Balance:12:2,StrBalance);
end;

⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в среде Delphi



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31