前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软考高级架构师:聚合关系、关联关系、包含关系、依赖关系

软考高级架构师:聚合关系、关联关系、包含关系、依赖关系

作者头像
明明如月学长
发布2024-05-25 10:29:54
550
发布2024-05-25 10:29:54
举报

一、AI 讲解

在面向对象编程(OOP)中,类与类之间的关系可以通过几种不同的方式来描述:聚合关系、关联关系、包含关系和依赖关系。为了更好地理解这些关系,我们可以用生活中的例子来进行比喻。

1. 关联关系(Association)

关联关系是类与类之间最基础的关系。它表示一个类的对象与另一个类的对象之间存在联系,但这种联系比较松散。

例子:

  • 老师和学生:老师和学生之间有联系,老师教学生,学生向老师学习,但他们之间的关系是比较松散的,学生可以有多个老师,老师也可以教多个学生。
2. 聚合关系(Aggregation)

聚合关系是一种特殊的关联关系,表示一个类是另一个类的一部分或组件,但部分可以独立于整体存在。这种关系被称为“has-a”关系。

例子:

  • 班级和学生:班级由学生组成,班级消失了,学生依然存在,他们可以加入其他班级。
3. 组合关系(Composition)

组合关系是更强的一种聚合关系,表示一个类是另一个类不可或缺的一部分,整体的生命周期结束,部分也会随之结束。这也是一种“has-a”关系,但比聚合关系更为紧密。

例子:

  • 房子和房间:房子由房间组成,如果房子被拆除,房间也不存在了。
4. 依赖关系(Dependency)

依赖关系表示一个类使用另一个类的功能,通常是短暂的。在实现中,通常是一个类的方法使用了另一个类的对象作为参数。

例子:

  • 司机和汽车:司机开车,司机依赖于汽车才能完成驾驶任务,但汽车和司机可以分开存在。
总结
  • 关联关系:老师和学生,关系松散。
  • 聚合关系:班级和学生,部分可独立存在。
  • 组合关系:房子和房间,部分与整体共存亡。
  • 依赖关系:司机和汽车,暂时依赖。

通过这些生活中的例子,我们可以更容易地理解面向对象编程中不同类关系的概念及其应用。

二、题目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(1)在银行业务的存款和取款两个用例中,确实都需要执行查询余额的操作。我们可以通过分析这几种关系的定义,来确定它们之间的具体关系:

  1. 拓展关系(Extend Relationship)
    • 用例A在某些条件下可以扩展用例B,表示用例B完成后,可以选择性地执行用例A。比如:“查询余额”可以在“取款”过程中被触发,但不是每次取款都必须要查询余额。
  2. 包含关系(Include Relationship)
    • 用例A总是包含用例B,表示每次执行用例A时,必须执行用例B。比如:“存款”每次都需要“查询余额”,那么“存款”用例就包含“查询余额”用例。
  3. 依赖关系(Dependency Relationship)
    • 用例A依赖用例B的结果。比如:“取款”依赖“查询余额”提供当前余额的信息。
  4. 继承关系(Generalization Relationship)
    • 用例A是用例B的特化形式,表示用例A继承用例B的行为和属性。比如:“高级查询余额”继承了“查询余额”的功能,但增加了一些新的功能。

基于以上定义,存款和取款用例与查询余额之间的关系更符合包含关系。因为无论是存款还是取款操作,都必须先执行查询余额操作,才能决定下一步如何进行。所以正确答案是:

B 包含关系

(2)开发中用的是 extend 表示继承,但是在 UML 中 generalize 才表示继承,extend 表示扩展关系。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、AI 讲解
    • 1. 关联关系(Association)
      • 2. 聚合关系(Aggregation)
        • 3. 组合关系(Composition)
          • 4. 依赖关系(Dependency)
            • 总结
            • 二、题目
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档