UML类图及类与类之间的关系总结(详解)

1.类图各部分构成

属性名和方法名前的 -,+,#,~代表其可访问性

1>"-" 代表"private" 表示私有权限,仅允许本类访问,任何其他类或子类都无法访问

2>"+" 代表"pubic" 表示公有权限,允许任意类访问该属性或方法

3>"#" 代表"protected" 意味着属性和方法收到保护,只能由同一个类或子类访问

4>"~" 代表"package/default" 意味着只要在同一个包下,任何类都可以访问

2.类与类之间的关系

1>继承(泛化):空心三角,实线。继承父类由"+,#"修饰的属性和方法,同时自己本身可以新增特有的属性和方法

说明:Cat继承了Animal,Cat为子类,Animal即为父类

2>依赖:虚线箭头。 A的属性变化可能影响到B,此时可存在B依赖A的关系

3>关联:实线。

i. 双向关联,无箭头实线

ii.单向关联,有箭头实线

4>聚合: 空心菱形实线。部分聚合为整体,部分可随时离开整体独立出来。

说明:引擎(Engine)聚合为汽车(Car),但是引擎可单独脱离汽车

5>组合:实心菱形实线。部分组合为整体,不可脱离整体。

说明:卧室和厨房组合为房间,卧室和厨房不能脱离房间单独存在,并且房屋被拆,卧室和厨房都会将无法存在

6>实现:空心三角虚线指向接口。

3.对比总结
实线 vs 虚线

  • 实线:结构性关系(关联、聚合、组合、泛化)
  • 虚线:临时性关系(依赖、实现)

箭头含义

  • 有箭头:表示方向性(知道的方向)
  • 无箭头:表示双向知道

关联的特殊形式

  • 聚合:空心菱形,表示"has-a"关系,部分可独立存在
  • 组合:实心菱形,表示"contains-a"关系,部分依赖整体