SLIDE 28 Bank name: String ... pinOK pinNotOk accountFor(a): Account ... «interface» AtmToBank pinOK pinNotOK withdrawOk withdrawNotOk Customer name address ... Account number : IBAN balance : int withdraw(amount:int): bool ... BankToATMPort verifyPIN(a,p): bool withdraw(a,m): bool pinOK pinNotOk 1 cc 1..* 1..* * c * «interface» BankToAtm verifyPIN(a,p): bool withdraw(a,m): bool * 1 b «interface» ClearingCompanyToBank verifyPIN(a,p) «interface» BankToClearingCompany pinOK pinNotOk 1 atm
Behaviour implementation Lifecycle state machine BankToATMPort
sm: BankToATMPort idle verifyPin(a,p)/b.verifyPin(self,ap,p) verifying pinNotOk/atm.pinNotOk pinOK/atm.pinOK waiting for withdraw widthdraw(a,m)/b.withdraw(self,a,m) withdrawing withdrawNotOk/atm.withdrawNotOk withdrawOk/atm.withdrawOK
Lifecycle state machine Bank Protocol conformance 28