来源 深入浅出UML类图
类图描述类,以及类与类之间的关系。
类最好有单一职责.类的属性是类的数据职责,类的操作是类的行为职责。
类有三种:
设计中,先画 实体类,及他们之间的关系
可见性 + (public), - (private), # (protected)
static 函数下面加横线
符号 : 用实线连接,在连线上两端用动词 或名字表示角色关系 对应代码:一个类的对象作为另一个类的成员变量
association 的具体形式 :
* 双向关联
* 单向关联
例如:一个界面(Form)可以拥有零个或多个按钮(Button)
成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在. 例如,汽车发动机(Engine)是汽车(Car)的组成部分,但是汽车发动机可以独立存在.
对应代码: 成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。
public class Car {
private Engine engine;
//构造注入
public Car(Engine engine) {
this.engine = engine;
}
//设值注入
public void setEngine(Engine engine) {
this.engine = engine;
}
……
}
public class Engine {
……
}
组合关系 composition
也表示类之间整体和部分的关系, 但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。
对应代码: 整体类的构造方法中直接实例化成员类 public class Head { private Mouth mouth;
public Head() {
mouth = new Mouth(); //实例化成员类
}
……
}
public class Mouth {
……
}
表示一个事物使用另一个事物.
对应代码: 有三种形式:
例如:驾驶员开车,在Driver类的drive()方法中将Car类型的对象car作为一个参数传递,以便在drive()方法中能够调用car的move()方法,且驾驶员的drive()方法依赖车的move()方法,因此类Driver依赖类Car,如图1所示:
就是继承关系
UML中用与类的表示法类似的方式表示接口.
接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现(Realization)关系.