uml类图

来源:互联网 发布:linux下压缩文件夹命令 编辑:程序博客网 时间:2024/05/16 03:44

  • uml类图
    • 基本概念
    • 泛化generalization
    • 实现Realization
    • 依赖Dependency
    • 关联Association
    • 聚合Aggregation
    • 组合Composition
    • 对比总结

uml类图

在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。

类与类之间由弱到强关系是:
没关系 > 依赖 > 关联 > 聚合 > 组合。

基本概念

类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。
这里写图片描述
在UML类图中,类一般由三部分组成:

  1. 第一部分是类名:每个类都必须有一个名字,类名是一个字符串。

  2. 第二部分是类的属性(Attributes):属性是指类的性质,即类的成员变量。

    UML规定属性的表示方式为:

      可见性 名称:类型 [ = 缺省值 ]
    • “可见性”表示权限修饰符,包括public(+)、private(-)、protected(#)
    • “名称”表示属性名,字符串表示。
    • “类型”表示属性的数据类型,可以是基本数据类型,也可以是用户自定义类型。
    • “缺省值”是一个可选项,即属性的初始值。
  3. 第三部分是类的操作(Operations):是类的成员方法。

    UML规定操作的表示方式为:

    可见性 名称(参数列表) [ : 返回类型]
    • ”可见性”的定义与属性的可见性定义相同。
    • “名称”即方法名,用一个字符串表示。
    • “参数列表”表示方法的参数,其语法与属性的定义相似,参数个数是任意的,多个参数之间用逗号“,”隔开。
    • “返回类型”是一个可选项,表示方法的返回值类型,依赖于具体的编程语言,可以是基本数据类型,也可以是用户自定义类型,还可以是空类型(void),如果是构造方法,则无返回类型。

泛化(generalization)

表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节。直接使用语言中的继承表达。
方向:单向;子类继承父类;
图示:空心箭头 + 实线;箭头指向父类;
这里写图片描述

实现(Realization)

在类图中就是接口和实现的关系。
方向:单向;子类实现接口;
图示:空心箭头 + 虚线;箭头指接口向接口;
这里写图片描述

依赖(Dependency)

对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。一个类调用被依赖类中的某些方法而得以完成这个类的一些职责。仅仅描述了类与类之间的一种使用与被使用的关系;比如渔民和天气之间的关系。下图表示登录页和主页的关系,登录成功才能跳转主页
方向:单向;
图示:虚线 + 箭头;
这里写图片描述

关联(Association)

对象之间一种引用关系,比如客户类与订单类之间的关系。一般通过成员变量来实现。关联又分为一般关联、聚合关联与组合关联。
方向:双向或单向;
图示:实线 + 箭头;箭头指向被关联的类;
这里写图片描述

聚合(Aggregation)

表示has-a的关系,是一种不稳定的包含关系。较强于一般关联,有整体与局部的关系,并且没有了整体,局部也可单独存在。如公司和员工的关系,公司包含员工,但如果公司倒闭,员工依然可以换公司。
方向:单向;
图示:空心菱形 + 实线 + 箭头;箭头指向被聚合的类,也就是说,箭头指向个体/部分;
这里写图片描述

组合(Composition)

表示contains-a的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期。是一种更强的聚合关系。部分不能脱离整体存在。如公司和部门的关系,没有了公司,部门也不能存在了;一个人由头、四肢、等各种器官组成。
方向:单向;
图示:空心菱形 + 实线 + 箭头;箭头指向被聚合的类,也就是说,箭头指向个体/部分;
这里写图片描述

对比总结

1、依赖是一种弱关联,也可说是一种偶然的关系,而不是必然的关系。关联是类之间的一种必然关系。

2、聚合跟组合都属于关联, 它们只是两种特殊的关联

3、在网上介绍聚合的文章里面,lz见过下面两种不同图示。这两种应该都一样,推荐使用A图示。组合图示同理。
这里写图片描述

下面是processon上的类图模板
https://www.processon.com/
这里写图片描述

本文参考自:http://www.uml.org.cn/oobject/201104212.asp