依赖关系

在生产中,很多场景下类与类之间都存在一定的联系,类之间的关系包括:依赖、关联、聚合、组合、继承等 ,通过学习类之间的关系有利提高面向对象编程的能力,为解决生产实际问题打下基础。

假设有两个类,类A和类B,类A的某个成员方法的参数有类B,说明类A使用了类B,类A依赖类B,依赖关系即uses-a关系,依赖关系除了被依赖方作为依赖方的方法参数,还可能作为依赖方的方法返回值存在,这些都是依赖关系的表现形式。如下图所示:

依赖关系的例子有很多,比如:LocalDateTime的now方法根据时区ID创建LocalDateTime,这里说明LocalDateTime依赖ZoneId。

public static LocalDateTime now(ZoneId zone) {return now(Clock.system(zone));
}

在UML中依赖关系使用虚线箭头表示,依赖方指向被依赖方:

LocalDateTime依赖ZoneId的关系如下图所示:

UML是什么?引用百度百科,统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。

关联关系

关联关系是一种强依赖的关系,假设有两个类,类A和类B,类B作为类A的成员变量存在,类A也可为类B的成员变量存在,如果互为成员变量则为双向依赖,否则为单向依赖。

关联关系与依赖关系的区别在于,依赖关系是一种临时的关系,依赖关系主要体现在方法参数,当调用方法时才有关系,关联关系是一种长期的关系,主体现在成员变量,无论是否调用方法这种关系都存在。

比如:ZonedDateTime与LocalDateTime关联,ZonedDateTime是带时区的日期时间,ZonedDateTime关联LocalDateTime。

在UML中双向关联关系一条实线表示,单向关联为单向实线箭头表示 。

ZonedDateTime关联LocalDateTime的关系图表示如下:

聚合关系

聚合关系是一种has-a关系,假设有两个类,类A和类B,类A包含类B,类B是类A的成员变量,聚合关系和关联关系都体现在成员变量,它们的区别在于:关联关系双方是平级的,是个体和个体的关系,聚合关系双方不是平级的,是整体和部分的关系。

比如:LocalDateTime类中包括LocalDate date和LocalTime time,这是一种聚合关系。

在UML中聚合关系用下边的符号表示 聚合关系:


菱形连接整体,实线连接部分。LocalDateTime类中包括LocalDate date和LocalTime time聚合关系如下图:

组合关系

组合关系是一种强聚合的关系,组合关系与聚合关系的区别在于:聚合关系中部分离开整体仍可存活,组合关系中部分离开整体没有意义,比如:人由身体、四肢等部分组成 ,它们的关系为组合关系。

在UML中组合关系使用下边的符号表示:

人与身体、四肢的关系表示如下:

类与类之间的关系还有继承关系、接口实现关系,课程后边会详细讲解。

配套视频下载

传智燕青Java基础精讲教程带你从零基础自学Java到大牛课程开放下载

彻底搞清类的依赖关系、关联关系、聚合关系、组合关系相关推荐

  1. 使用Classycle验证类/包依赖关系

    Classycle是一个非常好的类和包依赖项的分析器和依赖项检查器. 它使您可以定义程序包组(组件,层),并表达不需要的依赖性,例如周期或特定程序包之间的依赖性. 例如,您可以指定不希望包周期,也不需 ...

  2. UML类图--依赖关系

    依赖--Dependency:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖. UML展示: 箭头指向:带箭头的虚线,指向被使用者 代码展示: // 人类-类 pu ...

  3. 关联关系和依赖关系的区别

    关联关系:A类实例化的时候需要B类的对象引用或指针作为参数 依赖关系:A类的某个方法使用B类,可能是方法的参数是B类或在方法中获得了一个B类的实例 某个类以成员变量的形式出现在另一个类中,二者是关联关 ...

  4. java中友元类_友元类成员的依赖关系|循环依赖

    定义一个CBottle类,另一个类CCarton的某个成员对CBottle进行操作,因此在CBottle类中赋予CCarton成员的友元权利.我们很容易写出如下代码: //CBottle类的头文件 b ...

  5. c++类与类的依赖(Dependency)关系

    类与类的依赖关系 类与类的依赖(Dependency)关系 具体表现 现实例子 代码表现 类与类的依赖(Dependency)关系 对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖 ...

  6. 类继承和依赖注入的关系_管理类依赖关系:依赖关系注入,服务定位符和工厂简介,第1部分...

    类继承和依赖注入的关系 Let's face it: for good or bad, OOP has been actively drilling deep holes in the soil of ...

  7. java设计模式之UML③类图讲解多个类之间的关系

    图来自大话设计模式 虚线和箭头指向依赖关系,也就是动物类依赖氧气类和水类 一般依赖关系是一个类使用另一个类作为参数使用 动物是一个父类 鸟继承动物 其中空心三角继承关系(箭头方向是子类指向父类) 实心 ...

  8. 面向对象的基本概念(二)--UML.类之间的关系

    8.接口和类继承 (1)接口中不能有非抽象方法,但抽象类中可以有. (2)一个类能实现多个接口,但只能有一个父类. ( 3)接口并不属于继承结构,它实际与继承无关,因此无关的类也可以实现同一个接口. ...

  9. JavaSE(this与super关键字;关联、依赖关系)

    this与super 1. this与super访问普通成员 1.1 this和super访问注意事项 调用普通成员: this.成员变量 可以访问本类对象的成员变量 super.成员变量 可以访问父 ...

  10. Python学习,类空间问题及类之间的关系

    一. 类的空间问题** 1.1 何处可以添加对象属性 class A:def __init__(self,name):self.name = namedef func(self,sex):self.s ...

最新文章

  1. ITK:使用最小最大曲率流平滑RGB图像
  2. 判断随机抽取代码_高中数学中离散型随机变量的分布列知道吗?均值与方差能干什么?...
  3. Spring注入总结
  4. 服务器标配 SSH 协议,你了解多少?
  5. OpenCV实现简单人脸检测
  6. CORS 实战 专题
  7. WordPress主题zibll子比主题+新增阿里云短信/腾讯云/短信宝/风吹雨短信接口
  8. 存储基础(VG、LV、LP、PV、PP)
  9. 北大中文核心期刊计算机类前30%名录
  10. 软件著作权申请怎么申报?申报流程、应该注意哪些事项
  11. Dplayer Android播放器,呆呆播放器手机版官方下载
  12. 医学影像中的基础知识
  13. 【pygame小游戏】摸鱼系列:”躲避粒子“小游戏在线玩,看谁才是”最强王者“?
  14. Follow My Heart Of Jan.Feb.Mar. 2023
  15. 2022-2028年全球与中国近红外照相机行业发展趋势及投资战略分析
  16. 银行卡收单业务____单边账___现实生活中单边账的处理
  17. 服务器的系统信息命令 厂家,查看云服务器系统的命令行
  18. 【手游服务端】梦幻西游十五门派端+教程+GM物品后台
  19. 程序员工作面试题目汇总
  20. 从WAVE SUMMIT+2021,寻找新一代AI人不可或缺的“凝视”

热门文章

  1. C02014010宋明妤信息论作业
  2. Embedding Projector
  3. ACM常用算法模版(常用函数与STL、重要公式与定理)
  4. 【CF335E】 Counting Skyscrapers(期望)
  5. hdu4699(对顶栈模拟+简单dp)
  6. 编程机器人考级证书有用吗_少儿编程考级证书有什么用
  7. 202109青少年软件编程(Python)等级考试(五级编程题)
  8. 什么是黎曼和?什么是定积分?
  9. CTFshou wed文件上传
  10. python密码安全性检查代码