带你了解软件工程中的类与类的关系

带你了解软件工程中的类与类的关系

  • 一、UML图
    • 1.UML图简介
    • 2.UML图分类
    • 3.类图
  • 二、六大关系
    • 1.依赖关系(Dependence)
    • 2.泛化关系(Generalization)
    • 3.实现关系(Realization)
    • 4.关联(Association)
    • 5.聚合(Aggregation)
    • 6.组合(Composition)
  • 三、总结

一、UML图

1.UML图简介

  • UML——Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路等
  • UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等
  • 使用UML来建模,常用的工具有很多,如:StarUML、Rational Rose、PowerDesigne等。也可以使用IDEA或Eclipe的插件来建模
  • 画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理

2.UML图分类

  1. 结构型图:类图、对象图、包图、组件图、部署图、剖面图、复合结构图
  2. 行为型图:状态图、活动图、用例图
  3. 交互式图:通信图、交互概述图、时序图、时间图

3.类图

类图可以直观的表示出类与类的关系

带你了解软件工程中的类与类的关系

注:PersonDao与PersonServiceBean为聚合关系

2.泛化关系(Generalization)

  • 说白了讲就是继承关系
  • 即”is a”关系,类继承抽象类,类继承父类都属于这种关系
  • 如果A继承B,我们就说A和B存在泛化关系
  • 泛化关系可以看成是依赖关系的特例
    带你了解软件工程中的类与类的关系

PS:注意,这张图中的直线是虚线,可能不太明显

4.关联(Association)

  • 是一种拥有的关系.
  • 通常表现为成员变量。
  • 关联可分为双向关联和单向关联。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
  • 关联关系可以看成是依赖关系的特例

5.聚合(Aggregation)

  • 聚合关系表示的是整体和部分的关系,整体与部分可以分开,且整体与部分分离后可以单独存在。所以他具有关联的导航性与多重性。
  • 通常变现为成员变量。
  • 聚合关系是关联关系的特例
    带你了解软件工程中的类与类的关系

三、总结

  • 各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
  • 聚合与组合的区别:

聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。

另外有一个差别是组合中的一个对象在同一时刻只能属于一个组合对象,而聚合的一个部分对象可以被多个整体对象聚合。

  • 在类中的表现:
    • 依赖关系:关系对象出现在局部变量或者方法的参数里,或方法的返回值或者关系类的静态方法被调用
    • 泛化关系:继承父类或抽象类
    • 实现: 实现接口
    • 关联关系:关系对象出现在实例变量中
    • 聚合关系:关系对象出现在实例变量中
    • 组合关系:关系对象出现在实例变量中

       在网上看到这样一个例子,希望可以帮助到你:学生学习需要要文具,这就是依赖;老师与学生,这就是关联。学生与所在班级,这就是是聚合。学生和心脏,这是组合。学生和他爹, 这是就是泛化。学生和美食,给她一个吃饭的接口即可。当然可能有些人认为例子不太恰当,但我感觉这个例子还不错。

ps:若文章中有错误或不恰当的地方,可以再评论区指出,感谢。

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树类和接口类和面向对象92461 人正在系统学习中

来源:wangIQD

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月25日
下一篇 2020年3月25日

相关推荐