OOAD

19
OOAD An Example

description

OOAD. An Example. ACCOUNT. Static OOAD Diagram. acct # balance sec-code state. TRANS_REC. trans_type date_time amount teller_ID. has. withdrw dep prov_balance. (0,N). (1,1). ATM. atm #. req_withdrw req_dep req_balance req_int_rate. STD_ACCT. SAVINGS_ACCT. int_rate. - PowerPoint PPT Presentation

Transcript of OOAD

Page 1: OOAD

1

OOAD

An Example

Page 2: OOAD

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

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

4

ATM

req_balance

ACCOUNT

acct #balancesec-codestate

prov_balance

Scenario 2

prov_balance

Page 5: OOAD

5

ATM

req_int_rate

ACCOUNT

acct #sec-codestate

SAVINGS_ACCT

prov_int_rate

int_rate

Scenario 3

prov_int_rate

Page 6: OOAD

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

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

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

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

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

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

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

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

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

15

OBJECT SPECIFICATION std_acctSTRUCTURES

std_acct is-a accountEXTERNAL INPUTS / OUTPUTSATTRIBUTESSTATE-DIAGRAMSERVICES

END SPECIFICATION std_acct

Page 16: OOAD

16

OBJECT SPECIFICATION savings_acctSTRUCTURES

savings_acct is-a accountEXTERNAL INPUTS / OUTPUTSATTRIBUTES

int_rate := currently valid interest rateSTATE-DIAGRAM

Page 17: OOAD

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

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

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.