首页 > 技术文章 > uml类图

zenan 2019-02-25 16:19 原文

参考自graphic design patterns,讲的确实很透彻,静下心来看完就掌握了。

示例图:

 

 

上图示例中的六种关系:

  • 车的类图结构为<<abstract>>,表示车是一个抽象类(或接口);
  • 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;
  • 小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;
  • 小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;
  • 学生与班级之间是聚合关系,使用带空心箭头的实线表示;
  • 学生与身份证之间为关联关系,使用一根实线表示;
  • 学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;

 泛化关系:

 

suv 是继承自小汽车,最终代码中,泛化关系表现为继承非抽象类。

 

实现关系:

最终代码中,实现关系表现为继承抽象类(或实现接口)

 

聚合关系:

班级由学生组成,与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在。

 

组合关系:

公司由部门组成,与聚合关系不同的是,如果整体不存在了,则部分也不存在了。

 

关联关系:

关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A;

在最终代码中,关联对象通常是以成员变量的形式实现的;

 

依赖关系:

依赖也有方向,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生;

在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系除了临时知道对方外,还是“使用”对方的方法和属性

推荐阅读