Od pomysłu do serwisu

Oczywiście, w procesie wyznaczania RRSO hipotezy nie są stawiane na ślepo. Najprostszym, możliwym do zastosowania algorytmem jest wyznaczenie granic przedziału, między którymi znajduje się szukana wielkość, a następnie zacieśnianie go przez dzielenie na pół i ponowne sprawdzanie, w której z połówek znajduje się poszukiwana wielkość - aż do osiąg-nięcia zadanej dokładności.

Na początek trzeba też przyjąć gra- nice tego przedziału. Granicą dolną powinno być oczywiście zero. Górną granicę można wyznaczyć, posługując się bieżącym poziomem stóp procentowych. Jak przekonamy się w testach, apetyt polskich banków jest niezmierny, a ponadto wysiłki rządu zmierzające do ograniczenia samodzielności Rady Polityki Pieniężnej mogą już wkrótce zaowocować wzrostem inflacji i stóp procentowych, a chcemy przecież, aby nasz komponent mógł działać także w przyszłości. W tej sytuacji rozsądne wydaje się przyjęcie górnej wartości RRSO na 200%. Wartość domyślną ustalmy na 50%.

Dodajmy też do klasy "CKredyt" metodę Suma, biorącą hipotetyczną stopę procentową jako parametr. Metoda ta zwróci nam prawą stronę równania znajdującego się w ustawie, iterując po wszystkich zarejestrowanych spłatach i każdą z nich odpytując o składową (tj. wołając metodę SkładowaSumy dla każdego obiektu klasy "CSkładowa") i sumując wyniki. Poniżej znajduje się algorytm wyliczania RRSO zapisany w pseudokodzie.

HipotetycznaStopa = 0.5

BarieraDolna = 0

BarieraGorna = 2

DokladnoscWyliczenia = 0.001

Do

Suma = Suma(dHipotetycznaStopa)

If Suma < KwotaKredytu Then

BarieraGorna = HipotetycznaStopa

Else If Suma > KwotaKredytu Then

BarieraDolna = HipotetycznaStopa

End If

HipotetycznaStopa = BarieraGorna - BarieraGorna - BarieraDolna) / 2

Loop Until Abs(Kwota - Suma) / KwotaKredytu < DokladnoscWyliczenia

Po zakończeniu tej pętli w zmiennej HipotetycznaStopa powinna znaleźć się realna roczna stopa procentowa, wyliczona dla zadanego planu spłat, z zadaną dokładnością.

Model po uszczegółowieniu

To stadium projektowania jest dobrym momentem, aby nieco uszczegółowić projekt. Mając rozpisaną zasadę działania metody, a także wybrany język programowania, możemy dokonać kilku decyzji programistycznych. Podejmijmy więc decyzję o typach i przyjmijmy basicowy typ Double zamiast abstrakcyjnego Float, typ Long w miejsce abstrakcyjnego Integer i Currency tam, gdzie mówiliśmy o Money. Typ Date istnieje w wybranym narzędziu programistycznym. Visual Basic, niestety, nie posiada funkcji podnoszenia liczby do zadanej potęgi, ale możemy wykorzystać metodę pow z biblioteki Math języka JScript. Najlepiej w tym celu napisać zewnętrzną funkcję, która może nam się przydać w innych komponentach, które zechcemy napisać w Visual Basicu, a które będą wymagały podnoszenia do zadanej potęgi.

Budowa komponentu ActiveX DLL wymaga także zdefiniowania klasy dostępowej, nazwijmy ją "CKalkulator", która będzie służyła jako "punkt wejścia" do całego komponentu. Klasa ta będzie posiadać metodę NowyKredyt i będzie to jedyny sposób powołania nowego kredytu. Tworzenie obiektów klasy "CKredyt" bezpośrednio jest nie wskazane, ze względu na słabość Visual Basica, nie pozwalającą na jednoczesne utworzenie obiektu i jego inicjalizację.


TOP 200