Download presentation
Presentation is loading. Please wait.
Published byTobias Townsend Modified over 9 years ago
1
1 OOAD An Example
2
2 Atm atm # req_withdrw req_dep req_balance req_int_rate Account acct # balance sec-code state withdrw dep prov_balance Savings_Acct add_on_interest prov_int_rate int_rate Trans_Rec trans_type date_time amount teller_ID (Static) Class diagram Std_Acct has 0..* 1 abstract
3
3 ATM atm # req_withdrw req_dep req_balance req_int_rate ACCOUNT acct # balance sec-code state withdrw dep prov_balance STD_ACCTSAVINGS_ACCT add_on_interest prov_int_rate int_rate TRANS_REC trans_type date_time amount teller_ID has (0,N)(1,1) Static OOAD Diagram – other notations
4
4 ATM atm # req_withdrw req_dep acct # balance sec-code state withdrw dep TRANS_REC trans_type date-time amount teller_ID Scenario 1 withdrw / depositcreate ACCOUNT abstract
5
5 ATM req_balance ACCOUNT abstract acct # balance sec-code state prov_balance Scenario 2 prov_balance
6
6 ATM req_int_rate ACCOUNT abstract acct # sec-code state SAVINGS_ACCT prov_int_rate int_rate Scenario 3 prov_int_rate
7
7 OBJECT SPECIFICATION atm STRUCTURES EXTERNAL INPUTS / OUTPUTS INPUT request-for-withdrawal (atm #, acct #, amount, sec-code) INPUT request-for-deposit (atm #, acct #, amount) INPUT request-for-balance (acct #, sec-code) INPUT request-for-int-rate (acct #, sec-code) OUTPUT message-for-customer OUTPUT cash ATTRIBUTES atm # := identifies atm STATE-DIAGRAM
8
8 SERVICES - SERVICE req_withdrw ( ) VARIABLE ok:= withdrawal possible? TRIGGERED BY INPUT request-for-withdrawal SEND MESSAGE TO account(acct #).withdrw (IN atm #, amount, sec-code; OUT ok) IF ok equal TRUE THEN BEGIN WRITE OUTPUT message-for-customer USE OUPUT cash(amount) END ELSE WRITE OUTPUT message-for-customer END-SERVICE req_withdrw.
9
9 SERVICES - SERVICE req_dep ( ) VARIABLE ok:= deposit successful ? TRIGGERED BY INPUT request-for-deposit SEND MESSAGE TO account(acct #).dep (IN atm #, amount; OUT ok) IF ok equal TRUE THEN WRITE OUTPUT message-for-customer ELSE WRITE OUTPUT message-for-customer END-SERVICE req_dep.
10
10 SERVICES SERVICE req_balance ( ) VARIABLE ok:= access to balance possible? TRIGGERED BY INPUT request-for-balance SEND MESSAGE TO account(acct #).prov_balance (IN sec-code; OUT balance, ok) IF ok equal TRUE THEN WRITE OUTPUT message-for-customer (balance) ELSE WRITE OUTPUT message-for-customer END-SERVICE req_balance.
11
11 SERVICES SERVICE req_int_rate ( ) VARIABLE ok:= access to int-rate possible? TRIGGERED BY INPUT request-for-int-rate SEND MESSAGE TO savings_acct(acct #).prov_int_rate (IN sec-code; OUT int-rate, ok) IF ok equal TRUE THEN WRITE OUTPUT message-for-customer (int-rate) ELSE WRITE OUTPUT message-for-customer END-SERVICE req_int_rate. END SPECIFICATION atm.
12
12 OBJECT SPECIFICATION account STRUCTURES account has (0,N) trans_rec account specialized_into std_acct account specialized_into savings_acct EXTERNAL INPUTS / OUTPUTS ATTRIBUTES acct # := identifies atm balance := current balance on account in $ sec-code := authorization code state := active, closed STATE-DIAGRAM active closed Informal
13
13 SERVICES - SERVICE withdrw ( IN atm #, amount, req-sec-code; OUT ok) IF (state = active) & (req-sec-code = sec-code) & (amount < balance) THEN BEGIN ok <= TRUE balance <= balance - amount SEND MESSAGE TO trans-rec.create (IN “withdrawal”, current date&time, amount, atm #; OUT) END ELSE ok<= FALSE END-SERVICE withdrw.
14
14 SERVICES - SERVICE dep ( IN atm #, amount; OUT ok) IF (state = active) THEN BEGIN ok <= TRUE balance <= balance + amount SEND MESSAGE TO trans-rec.create (IN “depositl”, current date&time, amount, atm #; OUT) END ELSE ok<= FALSE END-SERVICE dep.
15
15 SERVICES - SERVICE prov_balance ( IN req-sec-code; OUT result_balance, ok) IF (state = active) & (req-sec-code = sec-code) THEN BEGIN ok <= TRUE result_balance <= balance END ELSE ok<= FALSE END-SERVICE prov_balance. END SPECIFICATION account.
16
16 OBJECT SPECIFICATION std_acct STRUCTURES std_acct is-a account EXTERNAL INPUTS / OUTPUTS ATTRIBUTES STATE-DIAGRAM SERVICES END SPECIFICATION std_acct
17
17 OBJECT SPECIFICATION savings_acct STRUCTURES savings_acct is-a account EXTERNAL INPUTS / OUTPUTS ATTRIBUTES int_rate := currently valid interest rate STATE-DIAGRAM
18
18 SERVICES - SERVICE prov_int_rate ( IN req-sec-code; OUT result_int_rate, ok) IF (state = active) & (req-sec-code = sec-code) THEN BEGIN ok <= TRUE result_int_rate <= int_rate END ELSE ok<= FALSE END-SERVICE prov_int_rate.
19
19 SERVICES - SERVICE add_on_interest ( ) VARIABLE interest := used to calculate interest TRIGGERED BY TIME (end-of-month) calculate interest from ( balance & int-rate ) balance <= balance + interest END-SERVICE add_on_interest. END SPECIFICATION savings_acct.
20
20 OBJECT SPECIFICATION trans_rec STRUCTURES trans_rec has (1,1) account EXTERNAL INPUTS / OUTPUTS ATTRIBUTES trans_type := withdrawal or desposit date_time := date & time of transaction amount := amount used in trans_type teller_ID := ID of accessing entity (teller, atm) STATE-DIAGRAM SERVICES - SERVICE create is standard create. END SPECIFICATION trans_rec.
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.