类图

描述的类和类之间的静态关系,是逻辑层面的模型

包含元素


  • 类里面有类名,属性,和方法,可以更具需要不写属性和方法的类型,也可以属性和方法都不写,方法和属性前面的+-号表示访问权限
  • + 公有
  • - 私有
  • # 受保护的
  • ~ 是包权限
  • 关系
  • 依赖:没有直接关系
    虚线+箭头
  • 关联:有直接关系,但是没有整体和部分关系,是平级关系而不是整体和部分关系,多对多一般是关联关系
    实线+双向箭头
  • 组合:一般是一对多,整体和部分的关系,整体和部分不可分离,生命周期相同
    实线+实心菱(部分指向整体)
  • 聚合:一般是一对多,整体和部分的关系,整体和部分可以分离,生命周期不同
    实线+空心菱
  • 泛化:泛化是子类
    实线+空心三角箭头(子指向父)
  • 实现:实现是接口
    虚线+空心三角箭头

类图之间关系还有多重度的标注,也就是1对1,一对多,和多对多,出了泛化和实现都可以用几对几来指明多重度

判断类之间关系步骤

  • 应该先考虑他们是否有父子关系(实现和泛化)
    接口和实现类之间是实现关系,父类和子类之间是泛化(继承)关系
举例子:正常设计支付程序,支付和微信支付就是实现关系

举例子2:如果之前没有为支付设计接口,只有现金支付的实现,后来并且没有提取高层接口,只是实现的微信支付继承了现金支付,这就是泛化
  • 1.
  • 2.
  • 3.
  • 然后判断他们是否整体和部分中间的关系(组合和聚合)
    整体和部分生命周期一样就是组合,生命周期可以不一样就是聚合
举例子1:人和心脏,一般来说他们生命周期是一样的不可分隔,是组合

举例子2:电脑和内存条,内存可以拔下来插到别的电脑上,是聚合

备注:组合和聚合按照主观常识判断即可,不用吹毛求疵,毕竟心脏也是可换的,内存取了运行的电脑也回死机。
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 然后判断他们是有有直接关系(关联和依赖)
    有直接关系就是关联,没有直接关系但有间接依赖关系就是依赖(有依赖关系的前提是相互有影响,没有影响他们之间不存在关系)
举例子1:冰箱和冰箱里面放的东西,他们是关联关系(不存在整体和部分,冰箱里面可以不放东西也是一个完整的冰箱)
举例子2:冰箱和入户开关是依赖关系,他们没有直接的连续,冰箱和供电插座有关联关系,插座和开关有有关联关系,但是冰箱和开关没有直接关系,但是关了开关,冰箱就停了,存在依赖。
  • 1.
  • 2.

获取IP变化的程序的类图

UML_类图_生命周期