参考答案:
【问题1】(8分)
C1:Patron
C2:Book
C3:Catalog
C4:CheckoutSessionController
【问题2】(4分)
M1:getForCheckOut
M2:isFaculty
M3:circulates
M4:recordBookLoan
【问题3】(3分)
应采用策略模式,策略模式定义了一系列算法,并将每个算法封装起来,而且使它们可以相互替换。策略模式让算法独立于使用它们的客户而变化。适用于需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其他方式来实现。
详细解析:
根据系统类模型,我们可以各个类之间的关联关系。
首先从类Accounts中的can CheckOut(patronID:string)方法,可以看出Accounts关联Patron,因此图中C1为Patron。
C1为Patron,则C1必会与书关联,从C1中的recordBookLoad(b:C2),可以看出C1关联C2。因此C2为Book。
C2为Book,根据系统操作check Out的通信图,可以看出与Book关联的是Catalog,因此C3为Catalog。
结合两图,则可以得出C4为CheckoutSessioncontroller。
结合典型事件流:
1.输入读者ID;
2.确认该读者能够借阅图书,并记录读者ID;
以上两步实际上就是判断读者是不是老师,也就是isFaculty( ),因此M2为isFaculty( )。
3.输入所要借阅的图书ID;对应的操作就是M1:getforcheck(book ID)。
4.根据图书目录中的图书ID确认该书可以借阅,计算归还时间,生成借阅记录;对应的操作就是M3:circulates( )。
5.通知读者图书归还时间。对应的操作就是M4:recordBookLoan( )。