UML类图符号简介

澳门新葡亰娱乐官网 7

UML
是一种表现软件形态结构的图示方式,原则上来讲他允许我们可以用画图的方式设计自己的程序,如果选择了正确的工具,还可以根据图生成代码,本文中我们可以看到PHP代码通过使用
UML 类图在 UML 的表现形式,我们直接跳过关于 UML
的知识,集中介绍一些准确的代码在 UML
中的表现形式。这表示本文内容并非一篇完全的类图分析。

UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别

  1. 类(Class):使用三层矩形框表示。
    第一层显示类的名称,如果是抽象类,则就用斜体显示。
    第二层是字段和属性。
    第三层是类的方法。
    注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。

在文末还有一些作者收集的资源,如果你之前尚未使用过UML,可以从那些资源中开始起步。

软件开发过程中经常会遇到UML建模,那么你对UML符号是否熟悉,这里向大家简单介绍一下UML类图符号,每种符号都有不同的意义,希望通过本节的学习你对UML类图符号会有一定的了解,下面就让我们一起来看一下UML类图符号的详细介绍吧。
UML类图符号
在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)
1、泛化(继承)

2.
接口:使用两层矩形框表示,与类图的区别主要是顶端有<<interface>>显示。
第一行是接口名称。
第二行是接口方法。

继承 Inheritance

澳门新葡亰娱乐官网 1

  1. 继承类(extends):用空心三角形+实线来表示。

  2. 实现接口(implements):用空心三角形+虚线来表示

  3. 关联(Association):用实线箭头来表示,例如:燕子与气候

  4. 聚合(Aggregation):用空心的菱形+实线箭头来表示
    聚合:表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分,例如:公司和员工

PHP 关键字:extends 允许你一个类继承自另一个类。

【箭头指向】:带三角箭头的实线,表示继承一个基类,B类继承A类。
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
【泛化例子】:老虎是动物的一种,既有老虎的特性也有动物的共性。
2、实现

组合(Composition):用实心的菱形+实线箭头来表示
组合:部分和整体的关系,并且生命周期是相同的。例如:人与手

?phpclass Senior {}class Junior extends Senior {}? 

澳门新葡亰娱乐官网 2

  1. 依赖(Dependency):用虚线箭头来表示,例如:动物与氧气

在 UML 范畴,表现如下:

【箭头指向】:带三角箭头的虚线,箭头指向接口,表示C类实现接口的定义。
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
3、关联

8.
基数:连线两端的数字表明这一端的类可以有几个实例,比如:一个鸟应该有两只翅膀。如果一个类可能有无数个实例,则就用‘n’来表示。关联、聚合、组合是有基数的

Inheritance

澳门新葡亰娱乐官网 3

澳门新葡亰娱乐官网,类之间的关系

注意三角形是指向父类的。

澳门新葡亰娱乐官网 4

   UML把类之间的关系分为以下5种.

聚合 Associations

【箭头指向】:带普通箭头的实线,指向被拥有者。
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的特征和行为,关联分为单项关联和双向关联两种;双向关联可以用俩头带箭头的实现表示,也可以不要箭头。
【3.1】、单向关联:仅能从一个类访问到另一个类(前者的属性中有后者),B类单项关联A类(B中有属性a为类A的对象);如:学生与课程的单向关联。
【3.2】、双向关联:两个类之间能相互访问(两个类的属性中都有对方),B类关联A类(B中有属性a为类A的对象),A类关联B类(A中有属性bs为Set,Set包含B的对象),A和B是1对n(n>0)的关联;如老师与学生的双向关联。
【3.3】、自身关联:… …
【代码体现】:成员变量
4、聚合

   ● 关联:类A与类B的实例之间存在特定的对应关系

联合发生在类之间不存在关系,但是可能需要互相访问对方,像一个模型(Model)和一个视图(View),视图需要模型提供数数据来显示。这里有两个不同的联合类型

澳门新葡亰娱乐官网 5

   ● 依赖:类A访问类B提供的服务

共享聚合 Aggregation

【箭头方向】:带空心菱形的实线,菱形指向整体;Wheel类扮演wheels角色,聚合4个到Car对象里面去。
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如Car和Wheel是整体与部分的关系,Wheel离开Car仍然可以存在,并不随Car的创建而创建,销毁而销毁。
【代码体现】:成员变量
【聚合PK关联】:聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
5、组合
[图片上传中。。。(6)]
【箭头方向】:带实心菱形的实线,菱形指向整体;Company对象完全由Department对象组成。
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如Company和Department是整体与部分的关系,没有Company就没有Department,Department随Company的创建而创建,销毁而销毁。
【代码体现】:成员变量
【组合PK关联】:组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
6、依赖

   ● 聚集:类A为整体类,类B为局部类,类A的对象由类B的对象组合而成

共享聚合发生的情况如下:

澳门新葡亰娱乐官网 6

   ● 泛化:类A继承类B

当一个类(A)访问其他类(B),第二个类(B)也许已经先在外部被实例化。如果第一个对象死去,第二个对象会持续活着。这种情况在数据访问对象(data
access
objects)很常见,他们中有些已经传递通过了多个对象,这些对象可能已经死去但是数据访问对象还存在。

【箭头指向】:带箭头的虚线,指向被使用者,
【依赖关系】:是一种使用关系,表示类之间的调用关系,即一个类的实现需要另一个类的协助,所以尽量不使用互相依赖。
【代码体现】:如果类A访问类B的属性或者方法,或者类A负责实例化类B,那么可以说类A依赖类B(局部变量、方法的参数或者对静态方法的调用)。

   ● 实现:类A实现了B接口  

这里已经正常地解释了第一个类(A)控制第二个类(B)的部分。

【依赖PK关联】:和关联关系不同,无须再类A中定义类B类型的属性。
各种关系的强弱顺序
泛化 == 实现 > 组合 > 聚合 > 关联 > 依赖
下面这张UML图,比较形象地展示了各种类图关系 :

关联(Association)

例子如下:

澳门新葡亰娱乐官网 7

  
关联指的是类之间的特定对应关系,在UML中用带实线的箭头表示。按照类之间的数量对比,关联

?phpclass Dao { function getSomething() { }}class Model { var $dao; function Model ( $dao) { $this-dao= $dao; } function doSomething () { $this-dao-getSomething(); }}$dao=new Dao;$model=new Model($dao);$model-doSomething();? 

可以分为以下三种:

在 UML 中表现如下:

   ● 一对一关联

Aggregation

   ● 一对多关联

空心的菱形指向控制者类。

   ● 多对多关联

组合聚合 Composition

注意:关联还要以分为单向关联和双向关联

组合聚合发生在如下情况:

依赖(Dependency)

第一个类(A)实例化了第二个类(B),第一个类(A)死去的时候,第二个类(B)同时死去。

  
依赖指的是类之间的调用关系,在UML中用带虚线的箭头表示。如果类A访问类B的属性或者方法,

换而言之,第一个类(A)控制了第二个类(B)的全部。

或者类A负责实例化类B,那么可以说类A依赖类B。和关联关系不同,无须在类A中定义类B类型的属性。

PHP 例子:

聚集(Aggregation)

?phpclass LinkWidget {}class View { var $linkWidget; var $page; function View () { $this-linkWidget=new LinkWidget; } function renderPage () { $this-page=$this-linkWidget-display(); }}? 

   聚集指的是整体与部分之间的关系,在UML中用带实线的菱形箭头表示。

UML 表现为:

聚集关系还可以分为两种类型:

Aggregation

   ● 被聚集的子系统允许被拆卸和替换,这是普通聚集关系。

实心的菱形指向控制者类。

   ●
被聚集的子系统不允许被拆卸和替换,这种聚集称为强聚集关系,或者组成关系。

消息 Messages

    注:强聚集(组成)可用带实线的实心菱形箭头表示。   

消息发生情形如下:

泛化(Generalization)

一个类通过控制另一个类的实例来交流数据
。他们之间的关系也是聚合。在PHP中通常出现在使用::操作符号时。如下例:

   泛化指的是类之间的继承关系,在UML中用带实线的三角形箭头表示。  

?phpclass HtmlUtils { function unHtmlEntities ($str) { $trans_tbl = get_html_translation_table (HTML_ENTITIES); $trans_tbl = array_flip ($trans_tbl); return strtr ($str, $trans_tbl); }}class View { function renderPage () { $text=HtmlUtils::unHtmlEntities($text); }}?

实现(Realization)

表现如下:

   实现指的是类与接口之间的关系,在UML中用带虚线的三角形箭头表示。

One Way Message

以下是GOF设计模式中的描述:

消息从View发往 HtmlUtils。

       箭头和三角表示子类关系。

当然也可以发送两种不同方式消息,如下:

          
虚箭头线表示一个类实例化另一个类的对象,箭头指向被实例化的对象的类。

?phpclass Debug { function display () { echo ($this-errorMsg); }}class SomeClass { var $errorMsg=This is an error message; function someFunction () { if ( DEBUG == 1 ) { Debug::display(); } }}define (DEBUG,1);$someClass= new SomeClass;$someClass-someFunction();? 

          
普通的箭头线表示相识(acquaintance也叫关联或者引用),意味着一个对象仅仅知道另一个对象。相识的对象可能请求彼此的操作,但他们不为对方负责,它只标示了对象间较松散的耦合关系。

[ 输出: This is an error message ]

         
尾部带有菱形的箭头线表示聚合(aggregation),意味着一个对象拥有另一个对象或者对另一个对象负责。一般我们称一个对象包含另一个对象,或者是另一个对象的一部分。聚合意味着聚合对象和其所有者具有相同的生命周期。   
         
抽象类名以斜体表示,抽象操作也以斜体表示。图中可以包括实现操作的伪代码,代码将出现在带有褶角的框中,并用虚线将该褶角框与代码所实现的操作相连。

Two Way Messages

澳门新葡亰娱乐官网 8

这里 SomeClass 发送一个消息到 Debug,Debug 访问 SomeClasss 的 $errorMsg
属性。

图一:

澳门新葡亰娱乐官网 9

此实线箭头表示, 继承, 从一个非接口类的继承.

图二:

澳门新葡亰娱乐官网 10

那条连线表示双向关联:
看左边, Flight扮演assignedFights角色,
有0到1个Plane跟他关联(一个航班要么取消了没有飞机,要么只能对应一架飞机)
看右边, Plane扮演着assignedPlane角色,
有0到多个Flight跟他关联(一个飞机可以参与多个航班,
也可以停在仓库里面烂掉)

图三:

澳门新葡亰娱乐官网 11

那条连线表示单向关联:
基本的意义跟上面的是一样的, 唯一不同的是,
右边的类对左边的类是一无所知的.

图四:

澳门新葡亰娱乐官网 12

那个大的包围的框叫软件包, 名字为Account, 就一些可以归类的类包装起来.

图五:

澳门新葡亰娱乐官网 13

如此虚线的箭头表示实现一个接口.

图六:

澳门新葡亰娱乐官网 14

水平的连线还是表示上面所说的关联, 但从关联连线中引伸出来的虚线,
这意味当Flight类的一个实例关联到 FrequentFlyer 类的一个实例时,将会产生
MileageCredit 类的一个实例.

图七:
澳门新葡亰娱乐官网 15

带菱形的箭头表示基本聚合, 由上图知道, Wheel类扮演wheels角色,
聚合4个到Car对象里面去,
空心的菱形表示Wheel对象并不随Car的创建而创建,销毁而销毁.

图八:

澳门新葡亰娱乐官网 16

意义和上面类似, 唯一不同的是,
实心菱形表示Department对象随Company对象的创建而创建,销毁而销毁.

图九:

澳门新葡亰娱乐官网 17

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图