Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 OOAD An Example. 2 Atm atm # req_withdrw req_dep req_balance req_int_rate Account acct # balance sec-code state withdrw dep prov_balance Savings_Acct.

Similar presentations


Presentation on theme: "1 OOAD An Example. 2 Atm atm # req_withdrw req_dep req_balance req_int_rate Account acct # balance sec-code state withdrw dep prov_balance Savings_Acct."— Presentation transcript:

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.


Download ppt "1 OOAD An Example. 2 Atm atm # req_withdrw req_dep req_balance req_int_rate Account acct # balance sec-code state withdrw dep prov_balance Savings_Acct."

Similar presentations


Ads by Google