UML类图基本介绍

Martin Fowler在他的著作中说,“如果有人在黑暗的小巷中向你走来并对你说:‘嘿,想不想看一张UML图?’那么这张图很有可能就是一张类图,我所见过的大部分的UML图都是类图”。由此可见类图的使用频率。so今天就要简单的说说他。

一、类在uml中的表示
UML中一个类一般包括三各部分,从上到下分别是:类名,属性,方法。 从上图我们可以看到,属性和方法名称前都有加号或者减号。它们表示的是这个属性或方法的作用域,UML类图中表示作用域的符号有三种:

· + :表示public

· - :表示private

· #:表示protected(friendly也归入这类)

因此,上图中的Employee类具有3个私有属性和一个公有方法。

关于属性

UML规定属性的表示方式为: 作用域 名称:类型 [ = 缺省值(就是初始值) ]
如:上图中name属性在uml类中的表示 - name:String

关于方法

UML规定操作的表示方式为: 作用域 名称(参数列表) [ : 返回类型]
如:上图中modifyInfo()方法在uml类中的表示 +modifyInfo():void

由于在Java语言中允许出现内部类,因此可能会出现包含四个部分的类图,如下图所示:
二、类与类之间关系的表示方式

类与类的关系表示方式有六种:关联关系、聚合关系、组合关系、依赖关系、继承关系和接口实现关系。

1、关联(Association)关系

它用于表示一类对象与另一类对象之间有联系,如汽车和轮胎、班级和学生等等。在UML类图中,用实线连接有关联关系的对象所对应的类,在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量。在使用类图表示关联关系时可以在关联线上标注角色名,一般使用一个表示两者之间关系的动词或者名词表示。

关联关系可进一步分为单向关联、双向关联和自关联。

(1)单向关联

我们可以看到,在UML类图中单向关联用一个带箭头的直线表示。上图表示每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量类实现。

(2)双向关联

从上图中我们很容易看出,所谓的双向关联就是双方各自持有对方类型的成员变量。在UML类图中,双向关联用一个不带箭头的直线表示。上图中在Customer类中维护一个Product[]数组,表示一个顾客购买了那些产品;在Product类中维护一个Customer类型的成员变量表示这个产品被哪个顾客所购买。

(3)自关联

自关联在UML类图中用一个带有箭头且指向自身的直线表示。上图的意思就是Node类包含类型为Node的成员变量,也就是“自己包含自己”。

2、聚合(Aggregation)关系

聚合关系表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。例如:汽车发动机(Engine)是汽车(Car)的组成部分,但是汽车发动机可以独立存在,因此,汽车和发动机是聚合关系

3、组合(Composition)关系

组合关系,与聚合关系基本相同,唯一区别就是:成员对象是整体对象的一部分,且成员对象不可以脱离整体对象独立存在。比如下图:

显然,嘴是头的一部分且不能脱离了头而单独存在。在UML类图中,组合关系用一个带实心菱形和箭头的直线表示。

4、依赖(Dependency)关系

依赖关系是一种使用关系。从上图我们可以看到,Driver的drive方法只有传入了一个Car对象才能发挥作用,因此我们说Driver类依赖于Car类。在UML类图中,依赖关系用一条带有箭头的虚线表示。

5、泛化(Generalization)关系(继承关系)

泛化关系也就是继承关系,用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。对应的是extend关键字,在UML类图中用带空心三角形的直线表示,如下图所示中,Student类与Teacher类继承了Person类。

6、接口实现关系

在说接口关系时先说下接口的概念。在接口中,通常没有属性,而且所有的操作都是抽象的,只有操作的声明,没有操作的实现。UML中用与类的表示法类似的方式表示接口,如图下图所示:

现在我们说接口实现关系。这种关系对应implement关键字,在UML类图中用带空心三角形的虚线表示。如下图中,Car类与Ship类都实现了Vehicle接口。

说到这关于UML类图的介绍基本就完成,剩下的就是各位同学在工作,学习中去积累了学习了。
三、参考文章

http://www.uml.org.cn/oobject/201211231.asp
https://www.cnblogs.com/shindo/p/5579191.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值