实验三 系统顺序图与操作契约(版本一)
操作契约
契约CO11:newBookBorrow 操作:newBookBorrow() 交叉引用:用例:借书 前置条件:无
后置条件: •创建了“借书”(BookBorrow)的实例bb(创建实例); •bb的属性被初始化(修改属性);
•bb被关联到Rigester的一个实例(形成关联)。
契约CO12:enterBorrower 操作:enterBorrower(id) 交叉引用:用例:借书
前置条件:“借书”业务正在进行
后置条件: •创建了“读者”(Borrower)的实例r;[不是这个时候创建的]
•基于读者id的匹配,“读者”(Borrower)的实例r被关联到BookBorrow的实例bb。
契约CO13:enterBorrowItem 操作:enterBorrowItem(id) 交叉引用:用例:借书
前置条件:“借书”业务正在进行
后置条件: •创建了“借书项”(BookBorrowItem)的实例bbi; •基于图书id的匹配,一个“图书”(Book)的实例b被关联到bbi;
•bbi的属性被初始化;
•bbi被关联到BookBorrow的实例bb。
契约CO14:endBorrow 操作:endBorrow() 交叉引用:用例:借书
前置条件:“借书”业务正在进行 后置条件: • 根据Borrower的匹配,所有“借书项”(BookBorrowItem)的实例bbi
被关联到“所有借出图书”(AllBorrowedBooks)上。(为了能使本次借阅的借书项合并到该借阅者的所有借书列表中)
契约CO21:newBookReturn 操作:newBookReturn() 交叉引用:用例:还书 前置条件:无
后置条件: •创建了“还书”(BookReturn)的实例br(创建实例); •br被关联到Rigester的一个实例(形成关联); •br的属性被初始化(修改属性)。
契约CO22:enterReturnItem 操作:enterReturnItem(id) 交叉引用:用例:借书
前置条件:“还书”业务正在进行
后置条件: •创建了“还书项”(BookReturnItem)的实例bri; •初始化bri的属性; •基于图书id的匹配,BookBorrowItem的一个实例被关联到bri;
•消除BookBorrowItem实例与“所有借出图书”(AllBorrowedBooks)的关联。
•bri被关联到BookReturn的实例br;
契约CO23:endReturn 操作:endReturn() 交叉引用:用例:借书
前置条件:“借书”业务正在进行
后置条件: • br.isComplete被设置为真; • 将br关联到Library上(将其加入到完成还书的日志中去)。