类的UML表示方法

UML介绍

类图,是UML(统一建模语言)中用于描述"类"以及"类与类"之间的示意图。它形象的描述出了系统的结构,帮助人们理解系统。

类图是在"所有的UML图"中,实用频率非常之高;掌握它对于我们软件设计,以及交流都很有帮助。

对于类图而言,它的基本单位是类。类主要由三部分组成:类名、属性、操作(函数)。UML类的表示大致如下:

类名

类的名称

属性

UML类图中,属性的基本格式: 可见性 名称: 类型 [=缺省值]

  • 可见性 -- 表示该属性对于类外的元素而言是否可见。

    主要包括公有(public)、私有(private)、受保护(protected)以及包内可见(package private)四种,在类图中分别用符号+、-、#和~表示。

    UML中可见性和符号的对应关系如下所示:

可见性 符号
public +
package private
protected #
private -

在PlantUML中的表示形式如下图所示:

  • 名称 -- 表示属性名。
  • 类型 -- 表示属性的数据类型。可以是基本数据类型,也可以是用户自定义类型。
  • 缺省值 -- 属性的初始值。它是一个可选项。

操作

UML类图中,属性的基本格式: 可见性 名称(参数类表) [:返回类型]

  • 可见性 -- 表示该属性对于类外的元素而言是否可见。它的表示方法与"属性的可见性"相同。
  • 名称 -- 表示方法名。
  • 参数列表 -- 表示方法的参数。参数个数是任意的,多个参数之间用逗号","隔开。
  • 返回类型 -- 表示方法的返回值类型。它是一个可选项;可以是具体的返回类型,可以是void,也可以无返回类型(构造方法)。

"实体类", "抽象类", "接口"的UML表示和在PlantUML中的表示

  • 实体类的UML表示

    实体类在UML用类名表示。在PlantUML中实体类用 “带圆圈的C + 类名” 表示。

  • 抽象类的UML表示

    抽象类和实体类的UML表示法类似。区别是: "抽象类的类名是斜体",而"实体类的类名不是斜体";在PlantUML中用 “带圆圈的A + 斜体类名” 表示。

  • 接口的UML表示

    在UML中,通过在"类名"位置添加“interface” 关键字来表示接口。在PlantUML中用 “带圆圈的I + 斜体类名” 表示。

"实体类", "抽象类", "接口"在PlantUML中的表示如下图:

UML类图的几种关系

在UML类图中,关系可以分为4种: 泛化, 实现, 关联 和 依赖。

  1. 泛化 -- 表示"类与类之间的继承关系"。
  2. 实现 -- 表示"类与接口之间的实现"。
  3. 关联 -- 表示"类与类之间的拥有关系"。即,一个类是另一个类的成员。关联又包括:自关联, 单向关联, 双向关联, 多重性关联, 组合, 聚合。
  4. 依赖 -- 表示"类与类之间的使用关系"。即,一个类是另一类的局部变量, 形式参数, 或者调用了静态方法/成员等。

这几种关系表示的"类与类之间关系的强弱顺序"是:泛化 = 实现 > 关联 > 依赖

泛化(Generalization)

【关系说明】: 泛化是一种继承关系。它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种。

【代码说明】: 父类与子类。

【UML图形】: 带三角箭头的实线,箭头指向父类。

【示例】: Fruit是"水果";Apple是"苹果",它继承了Fruit,是水果中的一种。

示例代码:

    public class Fruit {
protected int price;
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
} public class Apple extends Fruit {}

UML示例图:(以下所有的示例均是用PlantUML绘制而成,PlantUML使用手册可参看考:PlantUML参考指南

实现(Realization)

【关系说明】: 实现是一种类与接口的关系,表示类是接口所有特征和行为的实现。

【代码说明】: 实现类与接口。

【UML图形】: 带三角箭头的虚线,箭头指向接口。

【示例】: Runnable接口表示"一个任务",TimeTask是"计时任务",它实现了Runnable接口。

示例代码:

    public interface Runnable {
abstract public void run();
}
public class TimeTask implements Runnable {
@Override
public void run() {
}
}

UML示例图:

关联(Association)

关联表示"类与类之间的拥有关系"。即,一个类是另一个类的成员。关联包括:自关联, 单向关联, 双向关联, 多重性关联, 聚合, 组合。

自关联

【关系说明】: 一个类包含自己。例如,单向链表中的节点,包含下一个节点的信息。

【代码说明】: 成员变量

【UML图形】: 带普通箭头的实心线,指向被自己。

【示例】: Node是单向链表中的节点,它包含下一个节点的指针。

示例代码:

    public class Node {
private Node node;
}

UML示例图:

单向关联

【关系说明】: "类A"中有"类B"成员变量,"类B"中没有"类A"成员变量。

【代码说明】: 成员变量

【UML图形】: 带普通单向箭头的实心线,指向被拥有者。

【示例】: Person表示"人",IdCard表示"身份证信息",身份证包括id和"身份证编号snum"。一个人拥有唯一的身份证信息。

示例代码:

    public class Person {
private IdCard idcard;
}
public class IdCard {
private int id;
private String snum;
}

UML示例图:

双向关联

【关系说明】: "类A"中有"类B"成员变量,"类B"也有"类A"成员变量。

【代码说明】: 成员变量

【UML图形】: 带普通双向箭头的实心线 或者 不带箭头的实心线。

【示例】: Cusomer表示"客户",Product表示"产品"。客户可以购买产品,产品也属于客户。

示例代码:

    public class Customer {
private Address address;
}
public class Address {
private Customer customer;
}

UML示例图:

聚合(Aggregation)

【关系说明]】: 聚合是整体与部分的关系。聚合关系是类与类之间关系比较密切的关联关系;要区分聚合和其它的关联关系,必须考察具体的逻辑关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。如车和轮胎是整体和部分的关系。

【代码说明】: 成员变量

【UML图形】: 带空心菱形的实心线,菱形指向整体

【示例】: Car表示"汽车",Tire表示"轮胎"。"轮胎"本身是个独立个体。

示例代码:

    public class Car {
private Tire tire;
} public class Tire {
private double radius;
private double perimeter;
}

UML示例图:

组合(Composition)

【关系说明】: 组合是整体与部分的关系。组合关系是比聚合关系还要强的关联关系。但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。例如,身体和鼻子,身体包括鼻子,鼻子不能脱离身体而独立存在。

【代码说明】: 成员变量

【UML图形】: 带实心菱形的实线,菱形指向整体

【示例】: Body表示"身体",Nose表示"鼻子"。身体包含鼻子,鼻子离不开身体。

示例代码:

    public class Body {
private Nose nose; private class Nose {
}
}

UML示例图:

依赖(Dependency)

【关系说明】: 依赖是一种使用的关系。在需要表示一个事物使用另一个事物时使用依赖关系,尽量不使用双向的互相依赖。

【代码说明】: 局部变量、方法的参数或者对静态方法的调用

【UML图形】: 带箭头的虚线,指向被使用者

【示例】: 人过河。人是"Person"类,它包括过河函数acrossRiver(),acrossRiver()的参数是过河工具,返回值是过河时间。此处的过河工具是船,船对应的类是Boat。

示例代码:

    public class Person {
public int acrossRiver(Boat boat);
}
public class Boat {
}

UML示例图:

参考资料

UML系列02之 UML类图(一)

UML系列03之 UML类图(二)

PlantUML参考指南

UML类图介绍以及PlantUML使用方法的更多相关文章

  1. 北风设计模式课程---20、UML类图介绍

    北风设计模式课程---20.UML类图介绍 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 设计模式都是对生活的抽象,比如用户获得装备,我可以先装备工厂先生 ...

  2. UML 类图介绍

    UML 类图介绍 一. UML 简介 UML ( Unified Modeling Language )即统一建模语言,是 OMG ( Object Management Group )发表的图标式软 ...

  3. UML类图介绍&类的六大关系

    UML类图介绍&类的六大关系 官方定义 UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,用于帮助软件开发人员进行思考和记录思路的方式 UML 图形化的语言 基本介绍 UML图: ...

  4. UML类图介绍(转载)

    UML类图详细介绍   类图主要描述程序对象以及他们之间的关系.一般来说,类.接口.抽象类这些程序对象的区别很容易,但是他们之间六种关系以前总是理解不够深刻,这次进行了一次复习,顺便写成博文以便加深理 ...

  5. UML类图介绍及简单用法

    原文链接 一.类的属性的表示方式 在UML类图中,类使用包含类名.属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和em ...

  6. UML类图介绍

    一.概述 UML类图用来定义系统中的类,包括描述类的结构和类之间的关系.类图的主要作用于描述系统的静态结构. 类图的基本模型元素如下:

  7. UML 类图快速入门

    UML 图形 官方定义 UML 类图(Class Diagram) UML 时序图(Sequence Diagram) 领域 UML 类图和实现 UML 类图 领域 UML 类图 实现 UML 类图 ...

  8. UML类图新手入门级介绍

    UML类图新手入门级介绍 举一个简单的例子,来看这样一副图,其中就包括了UML类图中的基本图示法. 首先,看动物矩形框,它代表一个类(Class).类图分三层,第一层显示类的名称,如果是抽象类,则就用 ...

  9. UML类图中的关系和表示方法

    类图是用来描述程序中的类以及它们之间的关系的,使用类图可以帮助我们简化对系统的理解.在UML类图中比较常见的关系有六种,它们分别是:依赖.关联.聚合.组合.泛化.实现,这六种关系中类之间的紧密程度是依 ...

随机推荐

  1. JDBC事务和数据库事务嵌套的讨论 .

    首先必须执行con.setAutoCommit(false)方法,将JDBC事务设置为手动提交,否则手动提交con.commit()无效,手动回滚con.rollback()引发SQLExceptio ...

  2. SQL Server 有序GUID,SequentialGuid,

    问题描述 有序的GUID性能对比,堪比自增ID integer 一个大神告诉我NEWSEQUENTIALID() 在数据迁移的时候会有问题(感谢大神指点),所以我就深挖一下这个函数. 关于NEWSEQ ...

  3. SSH框架里的iHiberBaseDAO类与iHiberDAOImpl写法

    一.iHiberBaseDAO类 package basic; import java.util.*; /** * 基于hibernate技术实现的BaseDAO基类 * @author ZHANGY ...

  4. mysql实现‘主从复制’

    mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 首先准备多台服务器,其中一台作为主服务器,从服务器数量自定. 1.主从服务器分别作以下操作: 主服务器 ...

  5. linux误删文件导致系统无法启动

    因虚拟机RedHat误删了/etc/inittab文件导致系统无法启动启动系统提示enter runlevel尝试输入0-5都不好使.因为实验环境直接忽略了错误,重新搭建了虚拟机. 如果想尝试修复,可 ...

  6. jave web 监听器。

    https://www.imooc.com/video/5664 Web监听器由Servlet规范提供的,可以监听客户端的请求以及服务端的操作,即监听ServletContext.HttpSessio ...

  7. WSGI、flup、fastcgi、web.py、uwsgi

    ==================        网上别人的理解 =================== http://www.douban.com/note/13508388/ 1.Apache/ ...

  8. IBM MQ介绍

    转自:http://hi.baidu.com/lubezhang/blog/item/bd308b3b7ecce3ec14cecb4f.html IBM MQ(IBM Message Queue)是I ...

  9. Kali-linux应用更新和配置额外安全工具

    本节将介绍更新Kali的过程和配置一些额外的工具.这些工具在后面的章节中将是有用的.Kali软件包不断地更新和发布之间,用户很快发现一套新的工具比最初在DVD ROM上下载的软件包更有用.本节将通过更 ...

  10. 常用的css选择器

    1.最基本的 * * 选择所有元素. #id #firstname 选择 id="firstname" 的元素. .class .intro 选择 class="intr ...