UML类图

一、基本介绍

  • UML(Unified modeling language) 统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果。
  • UML本身是一套符号的规定,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等

二、UML的分类

  • 用例视图:用例图
  • 设计视图:
    • 类图(核心)
    • 对象图
  • 进程视图:
    • 时序图
    • 协作图
    • 状态图
    • 活动图
  • 实现视图
    • 构件图
  • 拓扑图
    • 部署图

三、UML类图

1、定义

用于描述系统中类(对象)本身的组成和类(对象)之间的各种静态关系

2、类图实例

QP0GxH.png

3、关系分类

  • 依赖
  • 泛化(继承)
  • 实现
  • 关联
  • 聚合
  • 组合
    QP05JU.png

4、关系详解

1、依赖关系

  • 在类中如果用到了其他类,那么这个类和当前类就存在依赖关系,包括参数的依赖、变量的依赖、返回值的依赖等等

  • 总结

    • 类中用到
    • 类的成员属性
    • 方法的返回类型
    • 方法的接受参数类型
    • 方法是使用到

Driver 类中使用到了Car类,所以Driver和Car是依赖的关系
MklQpQ.md.png

2、泛化关系

  • 是一种继承关系,表示一般与特殊的关系,它指定了子类如何继承父类的所有特征和行为。
  • 总结
    • 泛化关系就是继承关系
    • 如果A类继承了B类,那么A和B存在泛化关系

Student 和Teacher是Person的一种,Person是它们的父类,所以学生和老师也有Person的共性
Mkl3Xn.md.png

3、实现关系

  • 是一种类与接口的关系,表示类是接口所有特征和行为的实现。
  • 总结
    • 实现关系就是类和接口的实现关系
    • 如果A类继承了B类,那么A和B存在实现关系

Car是汽车的接口,宝马和比亚迪都实现了Car的接口,所以他们存在泛化的关系
MklY7V.md.png

4、关联关系

  • 实际上就是类和类之间的联系,是特殊的依赖关系
  • 导航性:
    • 双向关系
    • 单向关系
  • 多重性
    • 1 表示有且只有一个
    • 0... 表示0个或者多个
    • 0,1 表示0个或者1个
    • n...m 表示n个到m个
    • m...* 表示至少m个

Person 和身份证是一对一的关联关系,不属于整体和部分的关系
MklgAK.md.png

5、聚合关系

  • 表示整体和部分的关系,整体和部分可以分开,特殊的依赖关系
  • 导航性:
    • 双向关系
    • 单向关系
  • 多重性
    • 1 表示有且只有一个
    • 0... 表示0个或者多个
    • 0,1 表示0个或者1个
    • n...m 表示n个到m个
    • m...* 表示至少m个

电脑由鼠标和显示器组成,它们之间是可以分开的,分开以后可以独立存在
Mkl7HP.md.png

6、组合关系

  • 表示整体和部分的关系,整体和部分不可以分开,特殊的依赖关系
  • 导航性:
    • 双向关系
    • 单向关系
  • 多重性
    • 1 表示有且只有一个
    • 0... 表示0个或者多个
    • 0,1 表示0个或者1个
    • n...m 表示n个到m个
    • m...* 表示至少m个

头由嘴组成,俩者不可分开,不可以独立存在
MklX9g.md.png

四、类图实例

image

四、其他

1、聚合和组合关系的区别

  聚合其实是关联的一个特例,表示了两个对象之间“part of(部分-整体)”的关系,是一种弱关联,部分的生命周期可以超越整体。在UML中,用整体端有空心菱形箭头的双向关联修饰聚合。聚合的示例如下图:
image

组合其实是一种强形式的聚合,它具有强的拥有关系,整体与部分的生命周期是一致的。“部分”生存在整体中,它们与“整体”一起消亡。

“部分”对象依赖于“整体”对象,这种依赖性表现在两个方面:

  • “部分”对象一次只能属于一个组合对象;
  • 当组合对象销毁时,它的所有从属部分必须同时销毁。
  • 整体的重数必须是0或1。“部分”不能在整体间进行共享。在UML中,用整体端有实心菱形箭头的双向关联修饰组合。

image

上图中,邮件和它的标题及正文之间的关系作为组合关系建模可能是合理的,因为一旦邮件被删除,就既不存在标题,也不存在正文体了,而它们存在时属于唯一的一个邮件。而邮件与附件之间的关系不太可能是用组合恰当的建模,因为在同一时间,同一个附件可以属于多个邮件,其次,很有可能附件可以保存,因此它们的生命周期将超过所附属的邮件的生命周期。

原文地址:https://www.cnblogs.com/jakaBlog/p/11812728.html