在线学习系统中,课程学习和课程考试都需要先检查学员的权限,"课程学习"与"检查权限"两个用例之间属于(问题1);课程学习过程中,如果所缴纳学费不够,就需要补缴学费,"课程学习"与"缴纳学费"两个用例之间属于(问题2);课程学习前需要课程注册,可以采用电话注册或者网络注册,"课程注册"与"网络注册"两个用例之间属于(问题3)。
本题考察的是面向对象分析中的用例模型中用例之间的关系。
在 UML 用例图中,用例之间常见的三种关系包括:包含关系(include)、扩展关系(extend) 和 泛化关系(generalization)。
- 包含关系:表示多个用例共享的公共行为,被提取出来形成一个独立用例,主用例在执行过程中一定会执行该被包含用例。
- 扩展关系:表示某个用例在特定条件下才会执行另一个用例的行为,属于可选路径。
- 泛化关系:表示一个用例是另一个用例的特化形式,子用例继承父用例的全部行为,并可进行扩展。
问题 1:
A选项包含关系:课程学习和课程考试都需要“检查权限”,该功能是从多个用例中抽取出来的公共部分,在执行主用例时一定会执行它,因此是包含关系,正确。
B选项扩展关系:扩展关系表示可选执行,不符合“检查权限”这种必执行的公共逻辑,错误。
C选项泛化关系:泛化用于表示父子用例,不适用此处,错误。
D选项关联关系:关联关系主要用于参与者与用例之间的联系,不适用于用例之间的共享行为,错误。
选择选项 A。
问题 2:
A选项包含关系:包含关系要求必定执行,但“缴纳学费”是在学费不足时才发生,不是必执行的公共逻辑,错误。
B选项扩展关系:当学费不足这一条件成立时,课程学习会触发“缴纳学费”,属于主用例的可选扩展逻辑,正确。
C选项泛化关系:泛化是继承关系,不适用此处,错误。
D选项关联关系:关联不表示条件触发逻辑,错误。
选择选项 B。
问题 3:
A选项包含关系:包含表示必执行的子用例,不适合描述“网络注册”是“课程注册”的一种特化形式,错误。
B选项扩展关系:扩展用于条件触发逻辑,不适用此处,错误。
C选项泛化关系:网络注册是课程注册的一种方式,继承了课程注册的基本功能,并有自己的特定实现,符合父用例-子用例的泛化关系,正确。
D选项关联关系:关联关系只表示连接,不表示继承或特化,错误。
选择选项 C。
