一张图彻底理解UML类图中的各种关系

就算学习了很久的UML类图,相信大家对于类图中的类与类之间的关系的理解可能多多少少还是会有些迷惑,下面我将用一幅图来帮助大家理解类图中的各种关系。 一张图彻底理解UML类图中的各种关系

如上图所示,我们先创建一个抽象类动物Animal,动物是需要喝水的,所以创建一个水类Water。动物喝水它肯定需要一个方法名字叫drink,那么这方法肯定需要一个的参数叫water,类型为Water。那么,动物是依赖于水的,这样动物和水之间就形成了一个依赖关系。 动物分很多种类,现在我们简单来讲有哺乳动物Mammal,也有鸟类bird,它们两类都继承(泛华Generalization)与动物。鸟类是需要有翅膀才能飞,所以就需要一个翅膀类Wing,鸟有翅膀,所以给鸟类增加一个成员变量wing,类型为Wing。翅膀是不能离开鸟类单独存在的,所以翅膀和鸟类之间就形成一种组合关系。鸭子也是鸟类的一种,所以鸭子类继承与鸭子类Duck,但是有一种特殊的鸭子唐老鸭他是会说话Talk也会演电影Act,所以唐老鸭类DonalDuck继承于Duck,将Talk和Act分别设计为两个接口,DonalDuck类对这两个接口进行了实现(Realization)。

对于哺乳动物来说也有很多,我们简单来举两个例子。一个是狼类Wolf,另一个是羊,他们都是继承于哺乳动物。狼吃羊,羊也会躲避狼,所以他们之间会有关联关系。一般狼不会单独存在的,他们会形成一个狼群,所以很多的狼在一起就聚合成了一个狼群类WolfPack。换言之,某一只狼离开了这个狼群,这个狼群依然存在。一匹狼离开了狼群成为了孤狼,但是它也是能够单独存在,所以它们之间是一种聚合关系而不是组合关系。