【UML建模】(3) UML建模之类图

简介: 类图是显示一组类、接口以及它们之间关系的图

类图的介绍

类图是显示一组类、接口以及它们之间关系的图.

类图包含的元素

基本元素: 类(Class), 接口(interface)

元素之间的关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。

类(Class)

类是一组拥有相同的属性、操作、方法、关系和行为的对象地描述符。

在UML中,类表达成一个有三个分隔区的矩形。其中顶端显示类名,中间显示类的属性,尾端显示类的操作。

参数列表:是一些按照顺序排列的属性定义了操作的输入。例如:oper(arg1:int, arg2:double=3.2)

接口(interface)

接口代表了一份契约,实现该接口的类元必须履行它,在UML中接口由一个带名称的小圆圈表示;也可以表示为带有<>构造型的类。

泛化关系(Generalization)

泛化是继承关系的一种,子类继承父类的所有行为和属性,子类可以新增新的功能,uml中使用带空心三角箭头的实线标示,由子类指向父类。

关联关系(Association)

使类可以感知到其他类的行为和属性,关联分为双向关联和单向关联,如下:企鹅类和气候类是关联关系,是属于同一层次的对象。

聚合关系(Aggregation)

聚合是关联关系的一种,聚合主要描述整体与部分直接的关系,聚合有分为基本聚合和组合聚合,

1.基本聚合:对应基本聚合来说部分类的生命周期独立于 整体类 的生命周期,uml中使用一条从整体类到部分类的实线,并在整体类的关联末端画一个未填充棱形标示:

一个汽车有4个轮子组成,轮子的生命周期不依赖与车的,因为车轮可以独立于车独立存在。

2. 组合聚合:组合聚合是聚合的一种情况,不同在于部分类的生命周期依赖整体类,uml中使用一条从整体类到部分类的实线,并在整体类的关联末端画一个填充棱形标示:

一个公司有至少一个部门组成,部门要依赖于公司的存在而存在,不会存在一个部门而它不属于某一个公司。

关联和聚合的区别

关联关系所涉及的两个对象是处于同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。

聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如:电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。

组合关系:代表整体的对象负责部分对象的生命周期。公司不存在了,部门也没有意义了。再比如:人和五脏六腑,和四肢的关系

实现关系(Realization)

实现是接口和类的关系,指类实现接口中定义的方法。uml中用带空心三角箭头的虚线,箭头指向接口类

依赖关系(Dependency)

即一个类的实现需要其他类的协助,代码表现为方法参数,局部变量,静态方法,uml中使用一条箭头的虚线,从依赖方指向被依赖的类。

关系的强弱顺序:泛化= 实现> 组合> 聚合> 关联> 依赖

类图关系综合例子

1、企鹅与气候是关联关系

2、鸭与唐老鸭是继承关系

3、大雁与飞翔是实现的关系

4、雁群与大雁是聚合关系

5、动物与氧气,水是依赖关系

6、鸟与翅膀是组成关系

类图多重性的说明

多重性是用来说明两个类之间的数量关系,表示为一个整数范围n…m,整数n定义所链接的最少对象的数目,m为最多对象数目(但不确定最大数时,可以*号表示)。

如何阅读类图

类图的阅读还是遵循先整体,后部分的原则。

先理清楚类和接口,掌握类图的整体结构

看看类的内部结构以及类之间存在的关系

结合多重性来理解类图的结构特点以及各个属性和方法的含义。

如何进行类图建模呢?

李小平是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计。

1. 提取类&职责分析

书籍类(Book):从需求描述中,可找到书名,类别,作者,出版社,书号;

借阅记录类(BorrowRecord):借阅人(朋友),借阅时间,借阅的图书ID,归还时间

图书类别类(BookCategory): 枚举类

操作书籍接口(BookService):新增,修改,查询,统计(按照特定时限统计册数与金额)

借阅记录操作接口(BorrowService): 主要职责就是添加记录(借出),修改记录(归还)以及打印借阅记录

2. 限定与修改

导航性:Book与BookService之间,BorrowRecord与BorrowService之间是依赖关系,而Book和BorrowRecord之间则是双向关联,也无需添加

约束:Book对象创建后就不能被删除只能修改,因此在Book类边上加上用自由文本写的约束

限定符:一本书只有一册,因此能够被借一次,因此对于一本书而言只能有一个有效的RecordId与其对应

参考

UML官网

UML之类图

相关文章
|
7月前
|
uml
UML之类图
UML之类图
98 1
|
7月前
|
机器学习/深度学习 人工智能 测试技术
【软件设计师备考 专题 】软件工程的未来:面向构件和统一建模语言(UML)
【软件设计师备考 专题 】软件工程的未来:面向构件和统一建模语言(UML)
141 0
|
7月前
|
数据可视化 Java uml
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
327 1
|
4月前
|
Java uml
使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
该博客文章通过UML类图和Java代码示例,展示了如何使用工厂方法模式设计一个支持加法、减法、乘法和除法运算的计算机程序,并严格按照类图设计实现程序。
|
4月前
|
Java uml
1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
该博客文章展示了如何使用简单工厂模式设计一个程序,该程序能够根据用户输入的运算符(加、减、乘、除)对两个数进行计算,并提供了相应的UML类图和Java源码实现。
1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
|
6月前
|
应用服务中间件 uml
【UML】软件工程中常用图:类图、部署图、时序图、状态图
【UML】软件工程中常用图:类图、部署图、时序图、状态图
644 1
|
3月前
|
测试技术 uml
『软件工程13』浅谈面向对象方法,统一建模语言UML
该文章介绍了面向对象方法的基本概念及其在软件工程中的应用,并详细探讨了统一建模语言(UML)的各种图示及其在系统设计中的作用。
『软件工程13』浅谈面向对象方法,统一建模语言UML
|
4月前
|
数据可视化 Java uml
精通UML:从类图到序列图的实战指南
【8月更文第23天】统一建模语言(Unified Modeling Language, UML)是一种用于软件工程的标准图形化语言,它提供了一套工具来帮助开发团队可视化、构造和文档化软件系统。在UML中,类图和序列图是最常用也是最重要的两种图。类图用于描述系统的静态结构,而序列图则用于表示对象之间的交互和系统的动态行为。
181 5
|
4月前
|
设计模式 uml
设计模式常用的UML图------类图
这篇文章介绍了UML中类图的基本概念和用途,详细解释了类与接口、类之间的关系,包括继承、实现、组合、聚合、关联和依赖等六种关系,并展示了它们在类图中的表示方法。
设计模式常用的UML图------类图
|
4月前
|
uml
UML 类图几种关系(依赖、关联、泛化、实现、聚合、组合)及其对应代码
UML 类图几种关系(依赖、关联、泛化、实现、聚合、组合)及其对应代码
358 0