UML类图
一、UML类图基本介绍
1,UML介绍
- UML — Unified modeling language(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用户帮助软件开发人员进行思考和记录思路的结果
- UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用户描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛华、依赖、组合、聚合等。
2,UML图
画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,UML图分类:
- 用例图(use case)
- 静态结构图:类图、对象图、包图、组件图、部署图
- 动态行为图:交互图(时序图与协作图)、状态图、活动图
说明:类图是描述类与类之间的关系的,是UML图中最核心的。
3,UML类图
- 用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。
- 类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合。
二、类图——依赖(Dependence)
1,基本介绍
- 依赖关系:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。
- 代码表现:局部变量、方法的参数护着对静态方法的调用
- 标识符:带箭头的虚线,指向被使用者
2,示例图
代码示例
//另外4个类与当前类都是依赖关系 public class PersonService { private PersonDao personDao; public void save(Person person) { } public IDCard getIDCard(Integer personid) { return new IDCard(); } public void modify() { Department department = new Department(); } } class PersonDao {} class Person {} class IDCard {} class Department {}
3,总结
- 类中用到了对方
- 类的成员属性
- 方法的返回类型
- 方法接收的参数类型
- 方法中使用到
三、类图——泛化(Generalization)
1,基本介绍
- 泛化关系:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
- 标识符:带三角箭头的实线,箭头指向父类
2,示例图
代码示例
public abstract class Father { public void eat() { } } public class Son extends Father {}
3,总结
- 泛化关系实际上就是继承关系
- 如果A类继承了B类,我们就说A和B存在泛化关系
四、类图——实现(Implementation)
1,基本介绍
- 实现关系:指的是一个class类实现Interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在java中此类关系通过关键字implements明确标识
- 标识符:带三角箭头的虚线,箭头指向接口
2,示例图
代码示例
public interface PersonService { public void delete(int id); } public class PersonServiceImpl implements PersonService { @Override public void delete(int id) {} }
五、类图——关联(Association)
1,基本介绍
- 关联关系:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生、丈夫与妻子关联等。关联可以是双向关联,也可以是单向关联。双向关联可以有两个箭头或没有箭头,单向关联有一个箭头。它是依赖关系的特例。
- 0..1:表示可以有0个或者1个实例;0..*: 表示对实例的数目没有限制;1 :表示只能有一个实例;1..* :表示至少有一个实例
- 标识符:带普通箭头的实心线,指向被拥有者
2,示例图
代码
public class Teacher { } public class Student { Teacher teacher; }
六、类图——聚合(Aggregation)
1,基本介绍
- 聚合关系:是整体与部分的关系,且部分可以离开整体而单独存在。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
- 标识符:使用带空心菱形的实现表示
2,示例图
代码示例,与关联代码一致
public class Computer { Mouse mouse; public void setMouse(Mouse mouse) { this.mouse = mouse; } } public class Mouse { }
七、类图——组合(Composition)
1,基本介绍
- 组合关系:是整体与部分的关系,但部分不能离开整体而单独存在。组合关系也是关联关系的一种,是比聚合关系还要强的关系。
- 标识符:带实心菱形的实线,菱形指向整体
2,示例图
代码示例,与关联代码一致
public class Computer { Mouse mouse = new Mouse(); } public class Mouse { }
八、总结
组合、聚合、关联和依赖这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系。关系所表现的强弱程度依次为:组合>聚合>关联>依赖。