上一章 工具介绍

类图 Class Diagram

UX百科编辑部2024-02-06 发布
2217人在学·4条笔记
收藏

基本介绍:

类图(Class Diagram)是一种辅助思考工具,是使用抽象化的方式去概括事物的方法,也可以理解为一种图形化的建模工具。

“类”是具有相同属性、操作、关系的对象集合的总称,是面向对象的重要组成部分。

类图的应用场景:

类图是使用率最高的UML图形,一般是UML中分析业务的首选方式。通过类图,开发、产品、项目需求方可以更清晰的了解到系统的组织结构、属性等。

实际开发场景中,类的各方面内容可以指导开发方式和产品设计方式,包括但不限于业务分析、业务架构梳理、数据储存方式和索引方式等等。

类图的使用方式列举如下,但不限于此:

  1. 对系统的词汇进行建模
  2. 对简单的协作进行建模
  3. 对逻辑数据库模式进行建模

比如,用户到平台办理业务,例如购买商品、信息登记,对于这种场景产品和开发团队是可以使用类图整理出平台和用户的属性、各自的操作和彼此之间的联系,以便更直观的将客观世界抽象出来,形成静态模型。


看懂类图:

类图包括:类、关系、接口

类:

类名:图中最上面的矩形框中为类名。如果字体为斜体,表示为抽象类

属性的组成:“可见性”+“属性名称” :类型 [ = 缺省值]

操作的组成:可见性”+“操作名称” :参数 [ : 返回类型]

可见性:属性和操作前面的符号表示访问级别,以下对这些符号进行解释说明:

  • +:public表示公开,元素对所有引入的以及它们的后代都可见。
  • -:private表示私密,元素对外部元素完全不可见;
  • #:protected表示被保护:元素只对那些与包含这些元素有泛化关系的可见;
  • ~: default表示默认

关系:

上面这条直线其实就是最简单的类图关系——关联。而类图之间的关系还包含其他五种,还有:聚合、组合、继承/泛化、依赖、实现。

以下盘点这6种主要关系类型:

关联关系

  • 通俗解释:表示不强的关联关系,即「老师 和 学生」。
  • 关联关系使用较为频繁,如实现分不清类图的其他关系类型,可先都用关联表示。在完成整体绘制后或随着对业务的认识加深,将关系予以细化分类即可

聚合关系

  • 通俗解释:表示较强的关联关系,即「大学 和 老师」

组合关系

  • 通俗解释:表示极强的关联关系,即「大学 和 大学课程」

继承/泛化关系

  • 通俗解释:表示 is a 的意思,即「苹果Mac is a 电脑」

依赖关系

  • 通俗解释:表示依赖关系,即「人 依赖 氧气 和 水」「在线主机 依赖 电 和 网络」

实现关系

  • 通俗解释:表示一种连接实现的关系,即「打字员 和 键盘」

是不是其中有几种关联关系感觉区别不大?由于UML图也主要用于开发环境,所以一些细微区别其实可以在产品设计环境中忽略,大家在实际应用中主要使用关联、包含即可。

接口:

接口有两种,第一种外观和类相似,注意命名规范即可。上方分类使用《》表示接口名称,下面写接口详情内容。另一种圆圈则比较直观,但不能展示接口详情


完整案例:

如以上所示,类图包含元素有:类、关系和接口。而想要读懂类图只要以下的四个步骤即可:

  1. 找到类
  2. 识别类的属性和操作
  3. 识别类与类之间的关系
  4. 如有接口,识别接口的使用方式
  5. 对各类进行分析和整理

可以将以上讲解内容和关系类型带入到这张UML类图中,看自己是否可以看懂图片表达的意思。

另外大家可以看到在「店家-用户」这里表示的是一家店铺可以关联多个用户;「外卖员-订单」这里表示的是外卖员依赖一个订单。

操作介绍:

之前提到的免费UML图形绘制软件,都是可以直接找到类图类型的图例,然后直接拖进进行绘制,在这里就不做详细展开,大家可以自行尝试。

课后作业:

尝试自己写出学校-课程-老师-学生之间的类图。

注意:

  1. 要写出各类图的2-3项的属性介绍(可忽略操作)
  2. 使用正确的连线

2217人在学·4条笔记
收藏
已学会
13人已学会
下一篇对象图 Object diagram
基本介绍: 对象图(object diagram)用于描述某一时刻的一组对象间的关系,了解过类图的同学可以理解为某一瞬间的一组类图状态,类似于类图的状态快照。对象图和类图关系密切,且使用的图形元素也基本相同,但是对象图会更具体。 对象图的应用场景 如果说类图得属性是抽象化后得系统元素,那对象图就是拥...
本章笔记
仅看自己
logo
Piven发布于 2024-05-28
由于UML图也主要用于开发环境,所以一些细微区别其实可以在产品设计环境中忽略,大家在实际应用中主要使用关联、包含即可。
回复
UX小学生发布于 2024-03-24
感觉写的理解起来有点困难,希望能把实例写在开头,先举个例子,然后再引入定义更容易理解一些,谢谢!
回复
UX小学生发布于 2024-03-24
不是很懂和聚合关系的区别,感觉两者好像
组合关系
回复