OOAD
-
Upload
declan-harding -
Category
Documents
-
view
40 -
download
3
description
Transcript of OOAD
1
OOAD
An Example
2
ATM
atm #
req_withdrwreq_depreq_balancereq_int_rate
ACCOUNT
acct #balancesec-codestate
withdrwdepprov_balance
STD_ACCT SAVINGS_ACCT
add_on_interestprov_int_rate
int_rate
TRANS_REC
trans_typedate_timeamountteller_ID
has
(0,N) (1,1)
Static OOAD Diagram
3
ATM
atm #
req_withdrwreq_dep
ACCOUNT
acct #balancesec-codestate
withdrwdep
TRANS_REC
trans_typedate-timeamountteller_ID
Scenario 1
withdrw / deposit create
4
ATM
req_balance
ACCOUNT
acct #balancesec-codestate
prov_balance
Scenario 2
prov_balance
5
ATM
req_int_rate
ACCOUNT
acct #sec-codestate
SAVINGS_ACCT
prov_int_rate
int_rate
Scenario 3
prov_int_rate
6
OBJECT SPECIFICATION atmSTRUCTURESEXTERNAL 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-customerOUTPUT cash
ATTRIBUTES atm # := identifies atm STATE-DIAGRAM
7
SERVICES <atm>
- SERVICE req_withdrw ( )VARIABLE ok:= withdrawal possible?TRIGGERED BY INPUT request-for-withdrawalSEND 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) ENDELSE WRITE OUTPUT message-for-customer
END-SERVICE req_withdrw.
8
SERVICES <atm>
- SERVICE req_dep ( )VARIABLE ok:= deposit successful ?TRIGGERED BY INPUT request-for-depositSEND 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-customerEND-SERVICE req_dep.
9
SERVICES <atm>
SERVICE req_balance( )VARIABLE ok:= access to balance possible?TRIGGERED BY INPUT request-for-balanceSEND 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.
10
SERVICES <atm>
SERVICE req_int_rate( )VARIABLE ok:= access to int-rate possible?TRIGGERED BY INPUT request-for-int-rateSEND 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.
11
OBJECT SPECIFICATION accountSTRUCTURES
account has (0,N) trans_recaccount specialized_into std_acctaccount specialized_into savings_acct
EXTERNAL INPUTS / OUTPUTSATTRIBUTES acct # := identifies atm
balance := current balance on account in $sec-code := authorization codestate := active, closed
STATE-DIAGRAM
active
closed
12
SERVICES <account>
- SERVICE withdrw ( IN atm #, amount, req-sec-code; OUT ok)IF (state = active) & (req-sec-code = sec-code) & (amount < balance)
THEN BEGIN <transaction ok>ok <= TRUEbalance <= balance - amountSEND MESSAGE TO trans-rec.create(IN “withdrawal”, current date&time, amount, atm #;
OUT) ENDELSE ok<= FALSE
END-SERVICE withdrw.
13
SERVICES <account>
- SERVICE dep ( IN atm #, amount; OUT ok)IF (state = active)
THEN BEGIN <transaction ok>ok <= TRUEbalance <= balance + amountSEND MESSAGE TO trans-rec.create(IN “depositl”, current date&time, amount, atm #;
OUT) ENDELSE ok<= FALSE
END-SERVICE dep.
14
SERVICES <account>
- SERVICE prov_balance ( IN req-sec-code; OUT result_balance, ok)IF (state = active) & (req-sec-code = sec-code)
THEN BEGIN <transaction ok>ok <= TRUEresult_balance <= balance
ENDELSE ok<= FALSE
END-SERVICE prov_balance.
END SPECIFICATION account.
15
OBJECT SPECIFICATION std_acctSTRUCTURES
std_acct is-a accountEXTERNAL INPUTS / OUTPUTSATTRIBUTESSTATE-DIAGRAMSERVICES
END SPECIFICATION std_acct
16
OBJECT SPECIFICATION savings_acctSTRUCTURES
savings_acct is-a accountEXTERNAL INPUTS / OUTPUTSATTRIBUTES
int_rate := currently valid interest rateSTATE-DIAGRAM
17
SERVICES <savings_acct>
- SERVICE prov_int_rate ( IN req-sec-code; OUT result_int_rate, ok)IF (state = active) & (req-sec-code = sec-code)
THEN BEGIN <transaction ok>ok <= TRUEresult_int_rate <= int_rate
ENDELSE ok<= FALSE
END-SERVICE prov_int_rate.
18
SERVICES <savings_acct>
- SERVICE add_on_interest ( )VARIABLE interest := used to calculate interestTRIGGERED BY TIME (end-of-month)calculate interest from ( balance & int-rate )balance <= balance + interest
END-SERVICE add_on_interest.
END SPECIFICATION savings_acct.
19
OBJECT SPECIFICATION trans_recSTRUCTURES
trans_rec has <belongs to> (1,1) accountEXTERNAL INPUTS / OUTPUTSATTRIBUTES trans_type := withdrawal or desposit
date_time := date & time of transactionamount := amount used in trans_typeteller_ID := ID of accessing entity (teller, atm)
STATE-DIAGRAM SERVICES
- SERVICE create is standard create.END SPECIFICATION trans_rec.