一次讲清:UML类图中的六大关系

小知识,大挑战!本文正在参与“  程序员必备小知识  ”创作活动

本文同时参与 「掘力星计划」  ,赢取创作大礼包,挑战创作激励金

👨‍🎓作者:Java学术趴

🏦仓库:GithubGitee

✏️博客:CSDN掘金InfoQ云+社区

💌公众号:Java学术趴

🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。

🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。

☠️每日毒鸡汤:你可怀疑任何人,但绝不要怀疑你自己。

👋大家好!我是你们的老朋友Java学术趴,今天给大家分享UML图以及其中最重要的UML类图的几大关系,几分钟交会大家如何制作出UML类图。在UML的静态机制中类图是一个重点,它不但是设计人员关心的核心,更是实现人员关注的核心。

3. UML

  • UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助开发人员进行思考和记录思路的结果。
  • UML本身是一套符号的规定,就像数学与化学符号,这些符号用来表示各个元素之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等。
  • UML可以画时序图、用例图、类图。

3.1 UML类图

  • 用于描述系统中的类(对象)本身的组成和类(对象)之间各种静态关系。
  • 类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合。

3.2 类图—依赖关系

  • 只要在类中用到对方,那么他们之间就存在依赖关系,如果没有对方,连编译都通过不了。

类中用到对方的地方:

  • 类的成员属性
  • 方法的返回类型
  • 方法接收的参数类型
  • 方法中使用到

依赖使用虚线箭头,箭头指向依赖者

3.3 类图—泛化关系

  • 泛化关系实际上就是继承关系,他是依赖关系的特列。

  • 泛化就是继承关系。

  • 如果A继承了B,我们就说A和B存在泛化关系。

泛化使用实线空心箭头,箭头指向继承类

3.4 类图—实现关系

  • 实现关系就是A类(实现类)实现了B类(接口),他就是依赖关系的特例。

实现关系使用虚线空心箭头,接口指向接口

3.5 类图—关联关系

  • 关联关系实际上就是类与类之间的联系,他就是依赖关系的特例。
  • 关联具有导航性:即双向关联或单项关联
  • 关联具有多重性:一对多,一对一,多对一,多对多。

关联使用实线箭头(单向关联)或者实线没有箭头(双向关联),箭头指向被调用者

可以通过上图看出,Person类中使用了IDCard类,但是IDCard类中没有使用到Person类,此时是单项一对一,并且存在箭头,这个箭头指向被调用的类。

而在第二个中,他们之间的类互相调用,所以此时是双向一对一关系,此时不存在箭头。

3.6 类图—聚合关系

  • 聚合关系表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,所有它具有关联的导航性和多重性。

例如:一台计算机的键盘和显示器是可以从计算机中拆分出来的,使用带空心菱形的实线表示。(空心菱形从部分指向整体)

聚合使用空心的菱形箭头,箭头指向调用者

3.7 类图—组合关系

  • 组合也是整体与部分的关系,但是整体与部分不可以分开。(比如人与脑袋,就是组合关系)

  • 如果类中的成员变量不可以与整体类分离,就称为组合。比如上边的鼠标类如果不能与计算机分离,那么就是组合关系。(此时是new的对象,当Computer类加载时,鼠标类也会加载,当计算机类消失的时候,鼠标类也会随之消失,此时存在组合关系)

  • 组合使用的是实体的菱形箭头表示,箭头指向调用者。

区分组合与聚合:

  • 人的身体与人不可以拆分的,所以此时就是组合关系。
  • 人的身份证与人是可以拆分的,此时是聚合关系。

---💘看完的大佬们可以关注一下小编,会一直更新小技巧,免费分享给大家呦!!!💝--