Od pomysłu do serwisu

Na koniec zdefiniujmy jeszcze dwie sytuacje błędne, aby nasz model, zgodnie z zasadami dobrego projektowania i programowania, był przygotowany nawet na niepoprawne dane wejś- ciowe. Pierwszy powód do zgłoszenia błędu to moment, gdy użytkownik komponentu próbuje dodać spłatę wcześniejszą niż moment wypłaty kredytu. Choć w realnym świecie może istnieć kredyt uzyskiwany dopiero po pierwszej wpłacie (np. debet na koncie oszczędnościowo-rozliczeniowym), to jednak wzór zawarty w ustawie o kredycie konsumenckim w takiej sytuacji nie daje poprawnych rezultatów. W tym celu zdefiniowano atrybut DataUdzieleniaKredytu w klasie "CSpłaty", który jest po prostu przeniesioną wartością z klasy "CKredyt". Druga błędna sytuacja to taka, kiedy ktoś próbuje obliczyć efektywne oprocentowanie kredytu, który jeszcze nie został spłacony (suma rat nie pokrywa całości zadłużenia). Aby wykryć taki warunek, musimy dodać do klasy "CKredyt" metodę SumaSpłat, zwracającą prostą sumę wszystkich kwot w zarejestrowanych wpłatach.

W nowym modelu dodano także funkcje o nazwie Init inicjalizujące obiekty. W dojrzalszym od Visual Basica języku programowania byłyby one zdefiniowane jako konstruktory. Przyrostkami read i write oznaczono także funkcje dostępu do atrybutów. Atrybuty opisujące powiązania z obiektami innych klas oznaczono słowem relationship. Użyto także słowa "metody komponentu" dla takich metod, które nie są ani prywatne, ani publiczne, a są widoczne jedynie w obrębie komponentu (słowem kluczowym Visual Basica opisującym takie metody jest Friend). Na koniec usunięto polskie znaki z nazw zmiennych, gdyż środowisko programistyczne nie akceptuje takich znaków w nazwach symboli.

CKalkulator

metody publiczne:

NowyKredyt(curKwota: Currency, dDataUdzielenia: Date): CKredyt

CKredyt

atrybuty

curPiKwota: Currency

dPiDataUdzielenia: Date

oPiSplaty: CSplaty {relationship}

metody prywatne:

DataUdzielenia: Date {write}

Splaty: CSplaty {write}

Kwota: Currency {write}

Suma(dHipotetycznaStopa: Double): Currency

SumaSplat: Currency

metody komponentu:

Init(curKwota: Currency, dData Udzielenia: Date)

metody publiczne:

DataUdzielenia: Date {read}

Splaty: CSplaty {read}

Kwota: Currency {read}

RzeczywistaStopa: Double

CSpłaty

atrybuty

oPiCol: Collection {relationship}

dPiDataUdzieleniaKredytu: Date

metody komponentu:

DataUdzieleniaKredytu: Date {read/ write}

metody publiczne:

Dodaj(curKwota: Currency, dData: Date): CSplata

Usun(indeks: Long)

Liczba: Long

Element(lIndeks: Long): CSplata

CSpłata

atrybuty

curPiKwota: Currency

dPiData: Date

metody prywatne:

Kwota: Currency {write}

Data: Date {write}

metody komponentu:

Init (curKwota: Currency, dData: Date)

metody publiczne:

Kwota: Currency {read}

Data: Date {read}

SkladowaSumy: Currency

Rezultaty

Po skompilowaniu komponentu moż- na użyć prostego programu testowego do obliczenia rzeczywistej rocznej sto-py procentowej w przykładach przy- toczonych na początku tego artykułu i w rzeczywistych kredytach. W ustawie o kredycie konsumenckim jest kilka przykładów, które pozwalają stwierdzić, że komponent działa poprawnie z zadaną dokładnością.

Raty na pralkę opisaną powyżej mają efektywne oprocentowanie 66,9%. Na pewno gdyby potencjalny klient znał tę wielkość przed zakupem, dwa razy przemyślałby swoją decyzję.

Po napisaniu komponentu sprawdziłem oferty kredytowe dostępne w Internecie bądź w moim mieście. Kredyt "Zima z PKO BP", teoretycznie oprocentowany na 13,1%, zaciągnięty na rok przez osobę nie posiadającą konta w tym banku, ma efektywne oprocen-towanie 41,2%. Jest to oferta bardzo konkurencyjna, bo np. kredyt ratalny na 17" monitor o wartości 1999 zł zakupiony w sklepie Computer, a kredytowany przez Lukas Bank ma efektywne oprocentowanie 60,1%. Tak zwana pożyczka śnieżna w Banku Ochrony Środowiska, 10 tys. zł na rok wg stopy nominalnej 14,9% z 4-proc. prowizją ma RRSO równe 49,3%.

Ustawa o kredycie konsumpcyjnym nakłada obowiązek podawania RRSO w ofertach. Dzień, w którym wejdzie ona w życie, może być sądnym dniem dla banków i innych instytucji udzielających kredytów. Stanie się to dopiero w połowie tego roku, ale już dziś możemy udostępnić wszystkim zainteresowanym internautom możliwość obliczenia efektywnego oprocentowania kredytu.

Zobacz też

Od pomysłu do serwisu - część II - jak zbudowac serwis internetowy oparty na naszym nowo stworzonym komponencie

Kalkulator - pobierz pliki źródłowe


IBM Think Digital Summit Poland, 16-17 września 2020
TOP 200