Od pomysłu do serwisu
- Jakub Chabik,
- 25.02.2002
Model
Aby wyliczyć efektywną stopę procentową, potrzebujemy przede wszystkim informacji o udzielonym kredycie. Musimy znać jego wysokość i datę udzielenia, więcej informacji nie będzie nam potrzebne. Istotna jest oczywiście wielkość efektywna udzielonego kredytu, tj. pomniejszona o ewentualne prowizje i odsetki płacone z góry. Ponadto potrzebujemy planu spłat. Zgodnie ze wzorem na RRSO zamieszczonym w ustawie, przy każdej spłacie musimy znać jej dokładną wysokość i datę wpłaty. Ta pierwsza zostanie umieszczona w liczniku elementu sumy, ta ostatnia posłuży nam do obliczenia odcinka roku (wykładnika potęgi wyrazu zamieszczonego w mianowniku elementu sumy).
W modelu potrzebujemy więc dwóch klas: "CKredyt" i "CSpłata", reprezentujących odpowiednio: kredyt i pojedynczą spłatę. Zadaniem obiektów pierwszej klasy "CKredyt" będzie wyliczanie rzeczywistej, rocznej stopy oprocentowania. Musi on też posiadać listę spłat, którą wyodrębnimy do osobnej klasy "CSpłaty". Lista ta powinna mieć funkcję dodawania elementu (pojedynczej spłaty), usuwania go oraz przeglądania sekwen- cyjnego elementów. Obiekt ostatniej z naszych klas, klasy "CSpłata" reprezentuje jedną spłatę - element sumy ze wzoru podanego w ustawie. Klasa ta powinna więc podać wartość takiego elementu przy zadanej stopie procentowej i dacie udzielenia kredytu.
Model klas zapisany w uproszczonej notacji UML przedstawia rys. 1.
Obiekt klasy "CKredyt" zawiera dokładnie jeden obiekt klasy "CSpłaty", który zawiera zero lub więcej obiektów klasy "CSpłata".
Rozpiszmy zatem po kolei atrybuty (cechy) i metody (funkcjonalność) klas w sposób bardziej szczegółowy. W przypadku atrybutów dodamy typ, w przypadku metod: parametry i typ zwracany. Założymy istnienie trzech bazowych typów: Money (do przechowywania kwot), Date (do przechowywania dat), Integer (do indeksowania listy spłat) oraz Float (do przechowywania stopy procentowej).
CKredyt
atrybuty
Kwota: Money
DataUdzielenia: Date
metody
RzeczywistaStopa: Float
CSpłaty
metody
Dodaj(kwota: Money, data: Date):
CSpłata
Usuń(indeks: Integer)
Liczba: Integer
Element(indeks: Integer): CSpłata
CSpłata
atrybuty
Kwota: Money
Data: Date
metody
SkładowaSumy: Money