玩命加载中 . . .

UML结构图


UML,即统一建模语言,是软件行业主要的建模语言,用于分析、明确说明、设计软件系统。
UML12.0支持13种图,可以分为两类:结构图和行为图。

而UML结构图用于表示系统中元素的静态结构,结构图包括:包图、类图、构件图、部署图、对象图、组合结构图。

类图

类图用来描述系统的静态结构,用来描述不同的类以及它们之间的关系。
在UML类图中一共包含三种模型元素,分别是:

  • 接口
  • 类之间的关系

单个类的UML表示方法

通俗地讲,每一个类的UML分为三个由横线分隔的区域。

  1. 标出类名,类名就是一个字符串
  2. 标出类中的属性,即类的成员变量,格式大体如下:
    可见性 名称 :类型[= 默认值]
  3. 标出类中的操作,即类的成员方法,格式大体如下:
    可见性 名称(参数列表) :返回类型

属性与操作的可见性:
+表示public

表示protected

-表示private
~表示默认,或者包内可见

类之间的六种关系

类之间的关系大体可以分类如下:

  • 横向关系
    • 依赖
    • 关联
      • 聚合
      • 组合
  • 纵向关系
    • 泛化
    • 实现

泛化

表示类与类之间/接口与接口之间的一种继承关系,指定了子类如何特化父类的所有特征和行为。

  • 对于抽象方法和抽象类名,用斜体表示
  • 使用带空心的三角箭头的实线表示,箭头指向父类
  • 简记,箭头指向谁,就继承谁(宾语)

实现

实现也是一种继承,表示类是接口所有特征和行为的实现。

  • 使用带三角箭头的虚线表示,箭头指向接口类。
  • 简记,箭头指向谁,就实现谁(宾语)

依赖

对于两个相对独立的对象,当一个对象构造另一个对象的实例时,这两个对象之间主要体现为依赖关系。

依赖关系可以通过三种方式实现:
某一个类的方法使用另一个类的对象作为参数
在一个类的方法中将另一个类的对象作为其局部变量
在一个类的方法中调用另一个类的静态方法

  • 使用带箭头的虚线,指向被使用者或者被创建者
  • 可以将依赖关系理解为一种使用的关系,即“use-a”关系
  • 这种使用的关系是一种具有偶然性、临时性的弱关系
  • 简记,箭头指向谁,就依赖谁(宾语)

关联

两个相对独立的对象之间存在固定的对应关系时,它们之间为关联关系。
关联关系是两个类之间一种强的依赖关系,是长期性的,可以理解为“has-a”的关系。

  • 单向关联:类B作为了类A的成员变量
    • 使用带普通箭头的实心线表示,箭头指向被拥有者
    • 简记,箭头指向谁,就拥有谁(宾语)
  • 双向关联:B中有A,A中有B
    • 使用带有两个箭头或者没有箭头的实心线表示
  • 自关联:自己包含自己

每一种关联关系的连线表示,需要标注出关联名、关联端点名和关联重数

聚合

聚合属于关联,耦合度强于关联,仅仅在语义上有所区别。简单点说,聚合关系强调的是“整体”包含“部分”,但是“部分”可以脱离“整体”而单独存在。

  • 表示方式是带空心菱形的实线,菱形紧靠整体,另一端指向被拥有者。

组合

一种比聚合还强的关系,要求代表整体的对象负责代表部分的对象的生命周期。

  • 表示方式是带实心菱形的实线,菱形紧靠整体。

UML中的注释

UML中的限制

对象图

对象图用于呈现系统在特定时刻的对象(Object),以及对象之间的链接。

  • 对象图中仅仅声明类名也没有对象名,则称之为匿名对象;
  • 对象图不显示操作,因为所有对象都有着相同的操作。

包图

将相关的、欲放置在一起的东西打包成箱。
包的内部可以放置:包、用例图、类图、组件图等等。

  • 元素的导入:可以将包内的任意元素导入到另一个包中,需用到import关键字。

组件图

显示一组组件以及它们之间的相互关系。


文章作者: 鹿卿
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 鹿卿 !
评论
  目录