UML建模之类图总结

  |   0 评论   |   0 浏览

  大学时期就学习过UML,可能很多同学一直没有用于工作和生产中,但是UML是一个非常强大的工具,能帮助我们理解作者的意图和思想,理解设计模式,理解核心逻辑,这个就像是武功秘籍一样,把招式套路先画个图,能对系统逻辑有个整体的了解,当前这个系统、功能模块或者是什么工具包,都有什么样的类结构,设计模式是怎样的,类与类之间的关系是咋样的,如果你有一个良好的程序设计习惯,那么一定要会UML建模。关于java的UML建模工具,我推荐使用Astah,做得很专业,很方便,还有社区版,是一款非常强大的UML建模工具。1706496507507052544.png

1、概述

  在UML 2.0的13种图形中,类图是使用频率最高的UML图之一。Martin Fowler在其著作《UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition》(《UML精粹:标准对象建模语言简明指南(第3版)》)中有这么一段:“If someone were to come up to you in a dark alley and say, 'Psst, wanna see a UML diagram?' that diagram would probably be a class diagram. The majority of UML diagrams I see are class diagrams.”(“如果有人在黑暗的小巷中向你走来并对你说:‘嘿,想不想看一张UML图?’那么这张图很有可能就是一张类图,我所见过的大部分的UML图都是类图”),由此可见类图的重要性。
==类图==用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是==系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据==。
==类图(Class Diagram)==使用出现在系统中的不同类来描述系统的静态结构,它用来描述不同的类以及它们之间的关系。

2、类图的元素

  在类图中一共包含了以下几种模型元素,分别是:类(Class)、接口(Interface)、依赖(Dependency)关系、泛化(Generalization)关系、关联(Association)关系、聚合(Aggregation)关系、组合(Composition)关系和实现(Realization)关系。本节介绍类、接口,下一节具体介绍各种关系。

2.1 类

  在面向对象(OO) 编程中,类是对现实世界中一组具有相同特征的物体的抽象。包括名称、属性和操作。1706496627573198848.png

2.2 接口

  接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。在UML中,接口使用一个带有名称的小圆圈来进行表示。也可以说,是在没有给出对象的实现和状态的情况下对对象行为的描述。
与类图不同,是顶部有一个《interface》显示:
1706496736721571840.png

也可以是一个空心圆表示:

1706496801188024320.png

3、类的关系

  在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。
各种关系的强弱顺序:

    泛化 = 实现 , 组合 > 聚合 , 关联 > 依赖 

3.1 实现(Realization)

【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现,参考person与animal的关系
【箭头指向】:带三角箭头的虚线,箭头指向接口
【java表示方法】implements

1706496956612153344.png

3.2 泛化(Generalization)

【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。参考student与person的关系。
【箭头指向】:带三角箭头的实线,箭头指向父类
【java表示方法】extends

1706497048534519808.png

3.3 关联(Association)

【关联关系】:两个对象是强关联关系,一般来说,一个对象是以成员变量的方式,关联到另一个类中,这种关联关系比依赖要强很多,依赖主要是A类用到B类的方法,关联的话,可以理解为B类直接就是A类的某个属性。参考person与head的关系。
【代码体现】:成员变量
【箭头及指向】:带普通箭头的实心线,指向被拥有者

1706497173839351808.png

3.4 依赖(Dependency)

【依赖关系】:依赖关系,就关系紧密性而言,没有关联那么强烈,例如person类关联了head这个类,依赖主要是强调的A类会用到B类中某个方法或者逻辑,来达到A的目的,入下图中的学生依赖笔一样,学生需要用笔来记录东西。参考student与pen的关系。
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者

1706497238490353664.png

3.5 组合(Composition)

【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如人和手是整体和部分的关系,没有人就不存在手。组合关系是比聚合关系还要强的关系,参考下面person和hand的关系。
【箭头及指向】:带实心菱形的实线,菱形指向整体

1706497292663984128.png

3.6 聚合(Aggregation)

【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如学生和班级是部分和整体的关系,学生离开班级仍然可以存在,参考如下AClass与Student的关系。
【箭头及指向】:带空心菱形的实心线,菱形指向整体

1706497344937594880.png


标题:UML建模之类图总结
作者:michael
地址:https://blog.junxworks.cn/articles/2021/06/15/1623740411672.html