示例场景
拷贝的状态模型表明,有三个操作触发状态从“保留”到“待出租”。如果会员取消预订,保留的拷贝就可以出租。如果时间超过期限,预订失效,保留的拷贝也可以出租。操作“出租”使拷贝从“保留”变为“待出租”,在后面对比进行解释。
以下场景解释这种转变是怎么发生的。场景由三部分组成:开始状态的描述,场景步骤,结果状态。
开始状态
在场景的开始状态,我们有4 个会员对象(m1,m2,m3,m4),我们有一个片名对象(t),有3 个拷贝对象c1,c2和c3 处于出租状态。会员m4 有一个影片t 的预订。以下是这种情况的一个快照。
场景步骤
会员m1 还回拷贝c1。
拷贝c1 为m4 的预订保留,预订v 变为可满足。
会员m2 还回拷贝c2。
没有等待的预订,因此,拷贝c2 被放回货架。
会员m4 进入店中,看到c2 在货架。
会员m4 取下c2,告诉店员租借该拷贝。
拷贝c2 被m4 借走。
为m4 预留的拷贝c1,被放到货架。
最终状态
会员m4 租了拷贝c2(而不是预留的拷贝c1)拷贝c1 在货架上。
连接将场景与状态模型
当一个会员m 租借拷贝c:
如果
会员m 获得了Cr
并且
有另一个拷贝Ch 为会员m 保留
那么
拷贝Cr 从状态“待出租”到“已出租”
拷贝Ch 从状态“保留”到“待出租”