一篇文章就能学会UML图中的类图

观看前确保自己对类的概念已经有所了解了。

类图(Class Diagram)

描述类、接口及它们之间关系的图,显示系统中各个类的静态结构。

参考类图

完整的关系

在这里插入图片描述

该图片来自百度百科

类的3个基本组件:

  • 类名
  • 属性
  • 方法

属性和方法都有各种声明

+表示public
-表示private
#表示protected
~表示default,也就是包权限
_下划线表示static
斜体 表示抽象

field:type3
method(type1,type2):type3
type1、type2是函数参数的类型,type3是函数的返回类型.
类图的3个基本组件
如果只是为了理解整个项目架构也可以不带属性或者方法。
在这里插入图片描述

接口

接口组件和类组件类似
在这里插入图片描述
简单的接口
在这里插入图片描述

类图其实就是接口和类的不断组合组成一个结构。不同的类之间会有不同的关系,比如继承或派生,引用或调用等。

这只是当然函数意义上的关系,在类图之间的关系与此又不太一样,有细分之处。

类之间的关系——表示形式一览

在UML类图中,常见的有以下几种关系:

  • 依赖(Dependency)
  • 泛化(Generalization)
  • 实现(Realization)
  • 关联(Association)
  • 聚合(Aggregation)
  • 组合(Composition)

下图来自关系线条

在这里插入图片描述

依赖关系(Dependency)——任何形式的使用

有两个元素如果修改X的定义可能会影响Y的定义,则认为Y依赖X


依赖关系可能由各种原因引起,如一个类向另一个类发送消息,或者一个类是另一个类的数据成员类型,或者一个类是另一个类的方法的参数类型等。
只要是在类中用到了对方,那么他们之间就存在依赖关系。


类中用到了对方:

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

有时依赖关系和关联关系比较难区分。如果类A和类B有关联关系,它们之间必然有依赖关系。如果两个类之间有关联关系时不用再表示出这两个类之间的依赖关系。

依赖关系有时候也可以看成是以函数参数类型的方式使用产生的联系,别的依赖关系都可以以关联或者更细化的聚合组和来描述。

在这里插入图片描述

依赖关系的表示:带箭头的虚线,指向被使用者。
依赖关系的表示

泛化(Generalization)——类和接口的继承

泛化关系实际上是依赖关系的特例,如果A类继承了B类,我们就说A和B存在泛化关系

在这里插入图片描述

例如,人类和中国人之间的关系。

泛化关系的表示:带空心三角箭头的实线,箭头指向父类
在这里插入图片描述

实现关系(Realization)——接口的实现

实现关系:是一种类与接口的关系,表示类对接口所有特征和行为的实现

在这里插入图片描述

实现关系的表示:带三角箭头的虚线,箭头指向接口

在这里插入图片描述

关联关系(Association) ——类 类型 的属性

关联是一种拥有的关系,它使一个类知道另一个类的属性和方法。关联一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;
表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;

例如,老师,学生和课程之间的关系。

关联关系的三种表示
在这里插入图片描述

聚合关系(Aggregation)——相对独立的关联

一种特殊类型的关联
表示整体与部分关系的关联
描述了“has a”的关系

在基本的聚合关系中, 成员对象的生命周期 独立 于整体类的生命周期。

例如,学校和班级之间的关系。

聚合关系的表示:右边的箭头指向 部分
在这里插入图片描述

组合关系(Composition)——单向依存的关联

组合是聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合
聚合关系是“has-a”关系,组合关系是“contains-a”关系
成员对象的生命周期取决于聚合的生命周期
聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和析构

例如,鸟和翅膀之间的关系。

为什么说是单向依存的关联呢?
——因为双向依存在创建的时候会进入一个死循环状态,A在创建的时候需要创建B,然后创建B的时候需要创建A,双方的创建都需要创建对方,可到最后谁都无法成功创建。

组合关系的表示:右边的箭头指向 部分
在这里插入图片描述


参考博客
UML图:类图 --详细介绍
浅谈UML中常用的几种图

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪野Solye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值