UML中的类图及常见类图关系

UML(统一建模语言,Unified Modeling Language),是用来设计软件蓝图的可视化建模语言。从目标系统的不同角色出发,分为用例图,类图,对象图,状态图,活动图,时序图,协作图,构件图,部署图等9种图
最近重新研究了设计模式,在整理总结时,用到了类图,发现经常混淆类图的关系,所以特意做下整理。

文章目录

    • 类、接口、类图
      • 接口
      • 类图
    • 类之间的关系
      • 依赖关系
      • 关联关系
      • 聚合关系
      • 组合关系
      • 泛化关系
      • 实现关系

类、接口、类图

类(class)是指具有相同属性,方法,和关系的对象的抽象,封装了数据和行为,具有封装、继承、多态等三大特性.在UML中,类使用包含类名、属性和操作且带有分隔符的矩形来表示。

  • 类名(name)是一个字符串,例如User
  • 属性(attribute)是指类的特性,即类的成员变量.UML按照以下格式表示 [可见性]属性名:类型 例如: -name:String

    可见性表示该属性对类外的元素是否可见,也就是我们常说的作用范围,分为public(+),private(-),protected,(#)friendly(~)

  • 操作(operations)是指类的任意一个势力对象都可以使用的行为,简单点就是方法.UML格式为: [可见性]名称(参数列表)[:返回类型],例如 +getName():String

下图为person类的UML:
UML中的类图及常见类图关系_第1张图片

接口

接口(interface)是一种特殊的类,包含抽象抽象,但不包含属性.在UML中,接口通常用带有名称的小圆圈表示(目前有些软件并不是这样来表示)

类图

用来显示系统中的类、接口、协作以及他们之间的静态结构和关系的一种静态模型.

类之间的关系

根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系、实现关系.其中泛化和实现的耦合度相等,是最强的.

依赖关系

  • 描述

依赖(dependency),在代码中,某个类的方法通过局部变量,方法参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些任务.
通俗的讲,一个类A使用到了另一个类B,但是这种使用关系是具有偶然性的、临时性、非常弱的,但是B类的变化会影响到A,是一种使用关系

  • 代码:方法的参数,局部变量
  • UML:一条虚线,箭头从使用类指向被依赖的类
    UML中的类图及常见类图关系_第2张图片

关联关系

  • 描述

关联(association)关系,用于表示一类对象与另一类对象之间的联系,使一个类知道另一个类的属性和行为.关联关系有单向关联,双向关联,自关联

  • 举例:比如老师和学生,老师知道班里的学生信息,学生不知道老师的信息,老师和学生就是一种单向的关联关系.老师知道学生信息,学生知道老师信息,两者之间就是双向关联关系.老师知道同行老师的信息,老师和老师就是自关联关系.
  • 代码:通常是将一个类的对象作为另一个类的成员变量来实现.
  • UML:双向关联可以用带两个箭头或者没有箭头的实现来表示.单向关系用带一个箭头的实现从实用类指向被关联类
    UML中的类图及常见类图关系_第3张图片
    UML中的类图及常见类图关系_第4张图片
    自关联

聚合关系

  • 描述

聚合(aggregation)关系是关联关系的一种,是强关联关系,是整合和部分的关系,是has-a的关系.
聚合关系也是通过成员对象来实现,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象单独存在.

  • 举例:学校与老师关系,学校中包含老师,如果学校停办了,老师依然存在.
  • UML:聚合关系通常用带空心的菱形实线来表示,菱形指向整体.UML中的类图及常见类图关系_第5张图片

组合关系

  • 描述

组合(composition)关系也是关联关系的一种,也是表示整体和部分的关系,整体对象控制部分对象的生命周期,一旦整理对象不存在,部分对象也将不存在.部分对象不能脱离整理对象单独存在.

  • 举例:头和嘴的关系,没了头,嘴也就不存在了.
  • UML:组合关系用带实心的菱形实线来表示,菱形指向整体.
    UML中的类图及常见类图关系_第6张图片

泛化关系

  • 描述

泛化(generalization)关系是对象之间耦合度最大的关系,是父类与子类的继承关系,是is-a的关系

  • 举例:学生类和老师类都是person类的子类.
  • UML:泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类
    UML中的类图及常见类图关系_第7张图片

实现关系

  • 描述

实现(realization)关系是接口与实现类之间的关系.

  • UML:实现关系使用带空心的三角箭头虚线来表示,箭头从实现类指向接口
    UML中的类图及常见类图关系_第8张图片

你可能感兴趣的:(设计模式)