diff options
Diffstat (limited to 'bank-eiffel/account.e')
| -rw-r--r-- | bank-eiffel/account.e | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/bank-eiffel/account.e b/bank-eiffel/account.e index 3ef7a8b..0a7d202 100644 --- a/bank-eiffel/account.e +++ b/bank-eiffel/account.e | |||
| @@ -20,6 +20,16 @@ create | |||
| 20 | 20 | ||
| 21 | feature -- Access | 21 | feature -- Access |
| 22 | 22 | ||
| 23 | creditline_range: ARRAY[REAL_64] | ||
| 24 | attribute Result := ({like creditline_range}).default end --| Remove line when Void Safety is properly set | ||
| 25 | |||
| 26 | interest_debit_range: ARRAY[REAL_64] | ||
| 27 | attribute Result := ({like interest_debit_range}).default end --| Remove line when Void Safety is properly set | ||
| 28 | |||
| 29 | interest_deposit_range: ARRAY[REAL_64] | ||
| 30 | -- min/max for interest_deposit | ||
| 31 | attribute Result := ({like interest_deposit_range}).default end --| Remove line when Void Safety is properly set | ||
| 32 | |||
| 23 | transfer_minamount: REAL_64 assign set_transfer_minamount | 33 | transfer_minamount: REAL_64 assign set_transfer_minamount |
| 24 | -- Mindestbetrag für jede Einzahlung, Auszahlung und Überweisung | 34 | -- Mindestbetrag für jede Einzahlung, Auszahlung und Überweisung |
| 25 | 35 | ||
| @@ -41,12 +51,24 @@ feature -- Access | |||
| 41 | 51 | ||
| 42 | feature {NONE} -- Initialization | 52 | feature {NONE} -- Initialization |
| 43 | 53 | ||
| 44 | make (an_authorized_signer: PERSON) | 54 | make (an_authorized_signer: PERSON; |
| 55 | an_interest_deposit: REAL_64; | ||
| 56 | an_interest_debit: REAL_64; | ||
| 57 | a_credit_line: REAL_64; | ||
| 58 | an_interest_deposit_range: ARRAY[REAL_64]; | ||
| 59 | an_interest_debit_range: ARRAY[REAL_64]; | ||
| 60 | a_credit_line_range: ARRAY[REAL_64]) | ||
| 45 | do | 61 | do |
| 46 | create authorized_signers.make(1) | 62 | create authorized_signers.make(1) |
| 47 | add_authorized_signer (an_authorized_signer) | 63 | add_authorized_signer (an_authorized_signer) |
| 48 | transfer_minamount := 2 | 64 | transfer_minamount := 2 |
| 49 | balance := 0 | 65 | balance := 0 |
| 66 | creditline := a_credit_line | ||
| 67 | interest_debit := an_interest_debit | ||
| 68 | interest_deposit := an_interest_deposit | ||
| 69 | interest_deposit_range := an_interest_deposit_range | ||
| 70 | interest_debit_range := an_interest_debit_range | ||
| 71 | creditline_range := a_credit_line_range | ||
| 50 | end | 72 | end |
| 51 | 73 | ||
| 52 | feature -- Basic operations | 74 | feature -- Basic operations |
| @@ -137,8 +159,6 @@ feature {NONE} -- Implementation | |||
| 137 | 159 | ||
| 138 | set_interest_debit (an_interest_debit: like interest_debit) | 160 | set_interest_debit (an_interest_debit: like interest_debit) |
| 139 | -- Assign `interest_debit' with `an_interest_debit'. | 161 | -- Assign `interest_debit' with `an_interest_debit'. |
| 140 | require | ||
| 141 | an_interest_debit_within_bounds: an_interest_debit >= 0.0 and an_interest_debit <= 1.0 | ||
| 142 | do | 162 | do |
| 143 | interest_debit := an_interest_debit | 163 | interest_debit := an_interest_debit |
| 144 | ensure | 164 | ensure |
| @@ -146,9 +166,15 @@ feature {NONE} -- Implementation | |||
| 146 | end | 166 | end |
| 147 | 167 | ||
| 148 | invariant | 168 | invariant |
| 149 | interest_debit_within_bounds: interest_debit >= 0.0 and interest_debit <= 1.0 | 169 | interest_debit_within_bounds: |
| 170 | interest_debit >= interest_debit_range.item (0) and | ||
| 171 | interest_debit <= interest_debit_range.item (1) | ||
| 172 | interest_deposit_within_bounds: | ||
| 173 | interest_deposit >= interest_deposit_range.item (0) and | ||
| 174 | interest_deposit <= interest_deposit_range.item (1) | ||
| 150 | interest_deposit_within_bounds: interest_deposit >= 0.0 and interest_deposit <= 1.0 | 175 | interest_deposit_within_bounds: interest_deposit >= 0.0 and interest_deposit <= 1.0 |
| 151 | authorized_signers_attached: authorized_signers /= Void | 176 | authorized_signers_attached: authorized_signers /= Void |
| 152 | authorized_signers_not_empty: authorized_signers.count > 0 | 177 | authorized_signers_not_empty: authorized_signers.count > 0 |
| 153 | transfer_minamount_positive: transfer_minamount > 0.0 | 178 | transfer_minamount_positive: transfer_minamount > 0.0 |
| 179 | creditline_range_correct: creditline >= creditline_range.item (0) and creditline <= creditline_range.item (1) | ||
| 154 | end | 180 | end |
