UML详解(1):类的关系与如何绘制类图 您所在的位置:网站首页 中国图画怎么画出来的视频 UML详解(1):类的关系与如何绘制类图

UML详解(1):类的关系与如何绘制类图

2024-06-26 23:39| 来源: 网络整理| 查看: 265

        作为一个程序员,我们经常会使用UML来绘制各种图,类图就是其中常用之一。对于初学者来讲,如何读懂类图可能是一件有些困惑的事情,这里通过逐步梳理,帮助你详细了解类的关系,以及以后如何绘制类图。

 

1.0 定义

        类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。

        这里要注意四个关键字:类、接口、静态结构、关系,接下来我们来逐一讲解。

 

1.1 如何表示一个类

通过UML工具拖动一个表示“类”的图形,你发现有很多种,常用的是这一种:

类图模型

第一行,表示类的名字,如 Person;

第二行,表示类的属性,如 name:string = "",格式为属性名:类型 = 默认值,其中可以不包含默认值;

第三行,表示类的方法,如 sayHello(name),格式为方法名(参数列表):返回值,其中可以不含参数,无返回值。

注意,+、-表示属性是公开的还是私有的(public 或 private),此外还有#表示保护(protect),static静态方法。

 

1.2 如何表示一个接口

当然,你可能发现还有一个只有两行的图形,什么时候拖它呢?当你要表达一个接口的时候,就可以用它了。

接口类

第一行,明确写上的标识,然后换行写下接口名;

第二行,表示接口需要实现的类方法。

 

1.3 类的其他表达

        除了以上两种之外,我们可能会在UML绘制里还能找到以下几种:简单类、多例类、活动类等,这些在类图中并不常用,一般如何一个类只有方法没有属性,则第二行空着即可。

注释的表示

此外,常见的还有一种对象,那就是上图表示的注释。

 

2.0 关系

        表示类的关系总共有6种,这6种又可以分为3类。

        第一类,泛化。泛化表达了is a的关系模型,当A以某种形式是一个B的时候,就是这种关系,包含了有2种关系:继承、实现。

        第二类,关联。关联表达了has a的关系模型,当A拥有一个B的时候,就是这种关系,包含了有3种关系:聚合、组合、关联。

        第三类,依赖。依赖表达了use a的关系模型,当A使用了一个B的时候,就是这种关系,包含了1种关系:依赖。

 

2.1 继承关系

继承关系

继承使用一个实线+空心三角箭头,从子类指向父类即表示一个继承,如:

继承关系示例

鸟类继承自动物类。

 

2.2 实现关系

实现关系的表达

实现使用一个虚线+空心三角箭头,从实例指向接口即表示一个实现,这里可以看到,泛化关系(继承、实现都是空心三角箭头,指向实体是实线、指向虚有的接口则是虚线),实现的一个实例如:

实现的实例

大雁实现了飞翔接口。

 

2.3 聚合关系

聚合关系的表达

聚合使用一个实线+空心菱形箭头,从整体指向局部即表示一个聚合,注意,聚合关系只是将一些对象聚集在一起,但他们的关联是相对较弱的,也就是说,局部对象是可以脱离整体对象而单独存在的,如:

聚合的实例

这里大雁聚集在一起形成了雁群,但是离开了雁群的大雁依然可以存在。

 

2.4 组合关系

组合关系的表达

组合使用一个实线+实心菱形箭头,从整体指向局部即表示一个组合,组合又叫合成,顾名思义是有局部合起来才成为了一个整体,他们是密不可分的,他们是强关联关系,局部脱离了整体就不存在了,如:

组合的实例

这里翅膀是组成鸟的局部,翅膀不能脱离一个整体(鸟)而单独存活(超市里单独卖的鸡翅膀可不是这里的概念哦)。

 

2.5 关联关系

关联关系的表达

当一个关系明显是has a的拥有关系,但不是聚合也不是组合那样来描述整体与局部的时候,就应该考虑使用关联关系来描述,事实上,前两者都是(更加准确的)关联关系,关联使用一个实线箭头,从拥有者指向被拥有者。其实,你会发现,所有的关联关系都是实线箭头,只是聚合(弱)用了一个空心菱形,而组合(强)用了一个实心菱形。这里的关联是可以双向的,关联关系的一个实例,如:

关联的实例

这里你可能会困惑,企鹅与气候为啥是拥有关系,但他们确实有关系,气候的变更影响了企鹅的生存,他们息息相关,所以,每个企鹅都关心一个气候(如果合适我就在这里生活)。你也可以这么理解,他们俩的关系,不能用其他的关系来描述,企鹅不是气候的实例,企鹅不能使用一个气候(依赖),反之亦然。

 

2.6 依赖关系

依赖关系的表达

依赖关系不同于关联关系,使用一个虚线箭头,从使用者指向被使用者,这里要注意“使用”的概念,表达了一个物体需要通过另一个物体来完成工作,但他们之间没有包含的关系,如:

依赖的实例

这里的动物,有一个新陈代谢的功能,要工作则必须有空气和水,因此构成了他们之间的依赖关系。特别的,这里的依赖不同于我们上面关联的概念,在企鹅与气候的关系中,企鹅的生存方式依赖于气候的变化,但他们不是依赖关系,因为企鹅不需要气候作为参数进行某项工作,如果企鹅有一个功能是迁徙,需要传入一个气候,此时就是依赖关系了。

 

2.7 总结

        这里通过不同的符号可以表达出不同的关系来,可以按照这种方式来记忆:继承实现用三角,二者皆实是实线。关联关系实箭头,依赖关系虚箭头。聚合组合有菱形,强弱判断实空心。

        最后,附加上一个完整的类图实例,有助于理解各种关系。

类图实例

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有