diff options
Diffstat (limited to 'bank-eiffel/account.e')
| -rw-r--r-- | bank-eiffel/account.e | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/bank-eiffel/account.e b/bank-eiffel/account.e index 39e4167..61145f0 100644 --- a/bank-eiffel/account.e +++ b/bank-eiffel/account.e | |||
| @@ -62,14 +62,14 @@ feature {NONE} -- Initialization | |||
| 62 | a_credit_line_range.count() = 2 | 62 | a_credit_line_range.count() = 2 |
| 63 | an_interest_debit_range.count() = 2 | 63 | an_interest_debit_range.count() = 2 |
| 64 | an_interest_deposit_range.count() = 2 | 64 | an_interest_deposit_range.count() = 2 |
| 65 | a_credit_line_range.item (0) < a_credit_line_range.item (1) | 65 | a_credit_line_range.item (1) < a_credit_line_range.item (2) |
| 66 | an_interest_debit_range.item (0) < an_interest_debit_range.item (1) | 66 | an_interest_debit_range.item (1) < an_interest_debit_range.item (2) |
| 67 | an_interest_deposit_range.item (0) < an_interest_deposit_range.item (1) | 67 | an_interest_deposit_range.item (1) < an_interest_deposit_range.item (2) |
| 68 | do | 68 | do |
| 69 | create authorized_signers.make(1) | 69 | create authorized_signers.make(1) |
| 70 | add_authorized_signer (an_authorized_signer) | 70 | add_authorized_signer (an_authorized_signer) |
| 71 | transfer_minamount := 2 | 71 | transfer_minamount := 2.0 |
| 72 | balance := 0 | 72 | balance := 0.0 |
| 73 | creditline := a_credit_line | 73 | creditline := a_credit_line |
| 74 | interest_debit := an_interest_debit | 74 | interest_debit := an_interest_debit |
| 75 | interest_deposit := an_interest_deposit | 75 | interest_deposit := an_interest_deposit |
| @@ -139,7 +139,6 @@ feature -- Basic operations | |||
| 139 | Result := authorized_signers.has (an_authorized_signer) | 139 | Result := authorized_signers.has (an_authorized_signer) |
| 140 | end | 140 | end |
| 141 | 141 | ||
| 142 | |||
| 143 | authorized_signers_count : INTEGER | 142 | authorized_signers_count : INTEGER |
| 144 | do | 143 | do |
| 145 | Result := authorized_signers.count | 144 | Result := authorized_signers.count |
| @@ -150,6 +149,19 @@ feature -- Basic operations | |||
| 150 | Result := transfer_minamount | 149 | Result := transfer_minamount |
| 151 | end | 150 | end |
| 152 | 151 | ||
| 152 | get_balance : REAL_64 | ||
| 153 | do | ||
| 154 | Result := balance | ||
| 155 | end | ||
| 156 | |||
| 157 | advance | ||
| 158 | do | ||
| 159 | if balance < 0.0 then -- debit | ||
| 160 | balance := balance + (balance * interest_debit) | ||
| 161 | else -- deposit | ||
| 162 | balance := balance + (balance * interest_deposit) | ||
| 163 | end | ||
| 164 | end | ||
| 153 | 165 | ||
| 154 | feature {NONE} -- Implementation | 166 | feature {NONE} -- Implementation |
| 155 | 167 | ||
| @@ -191,13 +203,13 @@ feature {NONE} -- Implementation | |||
| 191 | 203 | ||
| 192 | invariant | 204 | invariant |
| 193 | interest_debit_within_bounds: | 205 | interest_debit_within_bounds: |
| 194 | interest_debit >= interest_debit_range.item (0) and | 206 | interest_debit >= interest_debit_range.item (1) and |
| 195 | interest_debit <= interest_debit_range.item (1) | 207 | interest_debit <= interest_debit_range.item (2) |
| 196 | interest_deposit_within_bounds: | 208 | interest_deposit_within_bounds: |
| 197 | interest_deposit >= interest_deposit_range.item (0) and | 209 | interest_deposit >= interest_deposit_range.item (1) and |
| 198 | interest_deposit <= interest_deposit_range.item (1) | 210 | interest_deposit <= interest_deposit_range.item (2) |
| 199 | authorized_signers_attached: authorized_signers /= Void | 211 | authorized_signers_attached: authorized_signers /= Void |
| 200 | authorized_signers_not_empty: authorized_signers.count > 0 | 212 | authorized_signers_not_empty: authorized_signers.count > 0 |
| 201 | transfer_minamount_positive: transfer_minamount > 0.0 | 213 | transfer_minamount_positive: transfer_minamount > 0.0 |
| 202 | creditline_range_correct: creditline >= creditline_range.item (0) and creditline <= creditline_range.item (1) | 214 | creditline_range_correct: creditline >= creditline_range.item (1) and creditline <= creditline_range.item (2) |
| 203 | end | 215 | end |
