【答案解析】[解析] 问题2引入了CirculationHistory类,此类用于记录每种图书或光盘的租借记录。现要求CirculationHistory类、Book类、CD类及Items on loan类之间的关系,Items_on_loan是类Book和CD的公共部分,用面向对象的术语来说,类Items on loan是类Book和CD的父类,所以它们之间存在继承关系。
再看CirculationHistor),类和其他类的关系,CirculationHistory类只需要记录图书或唱碟的名称及借阅记录,而不需要其他详细资料,这样,CirculationHistory不必和Book与CD产生关系,只需要与Items on loan产生关系即可。由于CirculationHistory中除记录图书或唱片名称以外,还需要记录借出时间、归还时间及用户名,这些数据无法从Items_on_loan中获取。一个CirculationHistorv只包含一个Items_on_loan,存在1:1的关系,这说明Items_on_loan其实只是CirculationHistory的组成部分,但Items_on_loan可脱离CirculationHistory而独立存在,也就是说,一本图书或一张CD可以没有记录其借阅历史的CirculationHistory,但有记录其基本信息的。Items_on_loan,所以它们之间又存在聚集关系(而不是那种部分随整体销毁而销毁的组合关系)。综上所述,4个类的关系如图所示。
[*]
聚合关联中涉及重复度,当没有指定重复度时,默认重复度为1,那么,图中两个类CirculationHistory、Items_on_loan所在端的重复度都为1。