processon:https://processon.com/
亿图:https://www.edrawmax.cn/
draw.io:http://draw.io
把泛化与实现归为一类是因为他们都属于纵向相关的关系,都是父子类继承的关系
类图中的-号表示私有成员,+号表示公有成员
泛化:是一种继承关系, 表示一般与特殊的关系, 它指定了子类如何特化父类的所有特征和行为。(其实就是继承关系中无虚函数的情况)
箭头指向:如图实现,实现,空心三角形,指向父类
实现:是一种类与接口的关系,表示类是接口所有特征和行为的实现。(其实就是父子类继承关系中含有虚函数或者纯虚函数的情况)
箭头指向:如图实现,虚线,空心三角形,指向父类
关联分为下面四种:
强弱程度依次为组合>聚合>关联>依赖。
四种关系有时较难区分,且UML类图中大部分不会很认真的使用下面的UML类图格式,关联都是一条线一个箭头罢了。
组合也是关联关系的一种特例,他体现的是一种 contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,它要 求代表整体的对象负责代表部分的对象的生命周期整体的生命周期结束也就意味着部分的生命周期结束。比如你和你的大脑。
箭头指向:带实心菱形的实线,菱形指向整体。
聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即 has-a 的关系, 此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如公司与员工的关系等。
箭头指向:带空心菱形的实心线,菱形指向整体。
是一种拥有的关系, 它使一个类知道另一个类的属性和方法,强调的是一种A-A的关系;关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关 联有一个箭头。
箭头指向:带普通箭头的实心线,指向被拥有者。
是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。
比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面, 为类B作为参数被类A在某个method方法中使用。
箭头指向:带箭头的虚线,指向被使用者