一、类和类之间的关系
1、依赖关系
2、关联关系
3、聚合关系
4、组合关系
5、泛化关系
6、实现关系
(1和2可看作一组、3和4可看作一组、5和6可看作一组)
二、类的表示方式
在UML类图中,它的基本单位是类。类主要由三部分组成:类名、属性、操作类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示。
属性/方法名称前加的符号表示了这个属性/方法的可见性。
1、public 公用的 :用+ 前缀表示 ,该属性对所有类可见
2、protected 受保护的:用 # 前缀表示,对该类的子孙可见
3、private 私有的:用- 前缀表示,只对该类本身可见
4、package 包的:用 ~ 前缀表示,只对同一包声明的其他类可见
二、类和类之间关系的表示方式
(一)、依赖关系(USE)
1、定义:依赖关系是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性关联。A类依赖B类,指的是B的对象作为A类的方法形式参数存在,称为“use”关系。还有包括局部变量、返回值类型和静态方法调用这三种场景。
2、表示方式
在UML类图设计中,依赖关系用带箭头虚线表示。 (eg:一个方法中创建另一个类的对象)
下面所示是人和食物的关系图,人吃食物:
(二)、关联关系(HAS)
1、定义
关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,分为单向关联、双向关联、自关联。A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关系。
2、表示方式
①、单向关联
在UML类图设计中,单向关联用带箭头实线表示。
下面所示是人和狗的关系图,人有一只狗:
②、双向关联
在UML类图设计中,双向关联用不带箭头直线表示。
下面所示是老师和课程的关系图,老师有很多课程,课程有对应的老师:
③、自关联(特殊、少用)
在UML类图设计中,自关联用一个带箭头且指向自身的线表示。
下面所示是节点的关系图,节点有自己的下一个节点:(LinkList、树都是自关联)
(三)、聚合关系
1、定义:聚合关系是强关联关系,是整体和部分之间的关系。聚合关系通过成员对象来实现的,其中成员对象是整体的一部分,但是成员对象可以脱离整体对象独立存在。
2、表示方式
在UML类图设计中,聚合关系用带空心菱形的实线表示,菱形指向整体。
下面所示是家庭和家庭成员的关系图,家庭包含了家庭成员,如果这个家庭没有了,但是这个成员仍然存在:
(四)、组合关系
1、定义:组合关系是整体和部分之间的关系,但是它是一种更强烈的聚合关系。组合关系的整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。
2、表示方式
在UML类图设计中,组合关系用带实心菱形的实线表示,菱形指向整体。
下面所示是人和大脑的关系图,人包含了大脑,如果这个人没有了,则大脑也没有了:
(五)、泛化关系
1、定义:泛化关系就是一般类和特殊类之间的继承关系。 特殊类完全拥有一般类的信息,并且还可以附加一些其他信息。 在UML中,一般类也称泛化类,特殊类也称持化类。
2、表示方式
在UML类图设计中,泛化关系用带空心三角箭头的实线表示,箭头从子类指向父类。
下面所示是动物和狗和猫的关系图,狗和猫是动物的子类:
(六)、实现关系
1、定义:实现关系是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作。
2、表示方式
在UML类图设计中,实现关系用带空心三角箭头的虚线表示,箭头从实现类指向接口。
下面所示是HashSet、TreeSet、Set的关系图,HashSet与TreeSet都是基于Set接口的实现类:
补充知识点:
1、UML图中加号(+)表示具有公共可见性;减号(-)表示私有可见性。
2、本来想在实现那边举map的例子,后面发现自己错了。从类的定义来看,HashMap和TreeMap都继承自AbstractMap,不同的是HashMap实现的是Map接口,而TreeMap实现的是NavigableMap接口
心得:一直觉得类与类之间的关系表示方式很难记得,刚好又在看黑马的java设计模式课程,就顺便总结下来,方便以后查看,也希望能给大家一点帮助。文章若有哪里不对,请各位读者及时指出,感谢!!!