UML中的类图
在UML中,描述两个类之间的关系,按照关系的强弱分为,实现=泛化>组合>聚合>关联>依赖。
这六种关系,是存在于UML中的概念,请不要和Java中的混淆。例如,UML中的组合,与Java中的组合,含义是不一样的。
类图是依赖于语言的,不同语言可能存在差别。
1、实现
实现:描述java中的implements。UML中用虚线和空三角表示。
在Java中表示:
class Fruit {} class Apple implements Fruit {}
在UML中表示:
2、泛化
泛化:泛化描述的是Java中,继承的关系。UML中,用实线和空三角表示。
在Java中表示
class Fruit {} class Apple extends Fruit {}
在UML中表示
3、组合、聚合、关联
这三种关系描述的都是,Java中的组合关系,即一类的定义中有另一类的引用。
但是,这三种组合关系是有区别的。
组合:关系最强,代表整体和部分的关系,且要求代表整体的类的对象,对代表部分的类的对象的生命周期负责,整体对象被垃圾回收期清理, 部分对象就不能够单独存在。
Java中表示:代表人的对象被清理,代表身高信息的对象就不可以存在了。(例子不是很恰当,但是这个道理)
class Hight {} class Person { Hight h; }
UML表示:软件不同可能有不同的表示,总之有个实心菱形。
聚合:关系较弱,代表整体和部分的关系,没有生命周期的要求,代表整体的对象被清理,代表部分的对象仍然可以存在。
Java表示:部门被撤销了被,人员还在啊,还可以分配到别的部门
class Person {} class Department { Person p; }
UML表示:软件不同可能有不同的表示,总之有个空心菱形。
关联:关系最弱,不要求整体和部分的关系。
Java中表示:
//单向关联 class A {} class B { A a; } //双向关联 class A { B b; } class B { List<A> l; }
UML表示:
3、依赖
依赖:描述Java中,类中的方法参数、局部变量的引用类型与本类关系。
Java表示:
class A {} class B { void f() { A a; } }
UML表示:
附上参考的两篇博客
[2]解析UML类图符号意义