OOAD
-
Upload
declan-harding -
Category
Documents
-
view
40 -
download
3
description
Transcript of OOAD
![Page 1: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/1.jpg)
1
OOAD
An Example
![Page 2: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/2.jpg)
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
![Page 3: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/3.jpg)
3
ATM
atm #
req_withdrwreq_dep
ACCOUNT
acct #balancesec-codestate
withdrwdep
TRANS_REC
trans_typedate-timeamountteller_ID
Scenario 1
withdrw / deposit create
![Page 4: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/4.jpg)
4
ATM
req_balance
ACCOUNT
acct #balancesec-codestate
prov_balance
Scenario 2
prov_balance
![Page 5: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/5.jpg)
5
ATM
req_int_rate
ACCOUNT
acct #sec-codestate
SAVINGS_ACCT
prov_int_rate
int_rate
Scenario 3
prov_int_rate
![Page 6: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/6.jpg)
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
![Page 7: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/7.jpg)
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.
![Page 8: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/8.jpg)
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.
![Page 9: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/9.jpg)
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.
![Page 10: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/10.jpg)
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.
![Page 11: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/11.jpg)
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
![Page 12: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/12.jpg)
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.
![Page 13: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/13.jpg)
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.
![Page 14: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/14.jpg)
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.
![Page 15: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/15.jpg)
15
OBJECT SPECIFICATION std_acctSTRUCTURES
std_acct is-a accountEXTERNAL INPUTS / OUTPUTSATTRIBUTESSTATE-DIAGRAMSERVICES
END SPECIFICATION std_acct
![Page 16: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/16.jpg)
16
OBJECT SPECIFICATION savings_acctSTRUCTURES
savings_acct is-a accountEXTERNAL INPUTS / OUTPUTSATTRIBUTES
int_rate := currently valid interest rateSTATE-DIAGRAM
![Page 17: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/17.jpg)
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.
![Page 18: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/18.jpg)
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.
![Page 19: OOAD](https://reader036.fdocuments.net/reader036/viewer/2022082711/5681329a550346895d993330/html5/thumbnails/19.jpg)
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.