目录
在开发中,类图可以反映类与类之间的关系,是面向对象(oo)开发最重要的工具,下面我们来看看类图的基础知识
- 类
- 第一行,表示的是类名,如果为斜线则类为抽象类
- 第二行,表示的是类的属性,Person类有两个属性
- 第三行,表示的是类的方法和行为
+表示Public,-表示private,#表示protected
- 接口
- 第一行,表示的是接口名
- 第二行,表示的是接口的属性
- 第三行,表示的是接口中的的方法和行为
+表示Public,-表示private,#表示protected
类与接口之间的关系@[toc]
1.依赖关系(Dependence)
A类在使用时用到了B类,则A依赖于B
例如:
- IDCard
public class IDCard {
}
- Person
public class Person {
}
- PersonDao
public class PersonDao {
}
- Department
public class Department {
}
- PersonServiceBean
public class PersonServiceBean {
private PersonDao personDao;//类
public void save(Person person){}
public IDCard getIDCard(Integer personid){
return null;
}
public void modify(){
Department department = new Department();
}
}
- 用类图表示为
小结:
- 依赖是指在类中用到了某个类时,用到的关系为依赖
- 如果是类的成员属性
- 如果是方法的返回类型
- 是方法接收的参数类型
- 方法中使用到
2.泛化关系(generalization)
- 泛化也就是extends,是依赖的特例
例如: - DaoSupport
public class DaoSupport {
public void save(Object entity){
}
public void delete(Object id){
}
}
- PersonServiceBean
public class PersonServiceBean extends DaoSupport{
}
- 用类图表示
小结:
- 泛化关系实现上就是继承关系
- 如果A类继承了B类,那么A与B存在泛化关系
3.实现关系(Implementation)
- 就是实现了某个类的接口,重写了接口的方法。
例如: - PersonService【interface】
public interface PersonService {
public void delete(Integer id);
}
- PersonServiceBean
public class PersonServiceBean implements PersonService{
public void delete(Integer id) {
}
}
- 类图表示
4.关联关系(Association)
- 实际上就是类与类之间的联系:如一对一,一对多
4.1 单向一对一关系
- IDCard
public class IDCard {
}
- Person
public class Person {
private IDCard card;
}
- 类图表示
4.2 双向一对一关系 - Person
public class Person {
private IDCard card;
}
- IDCard
public class IDCard {
private Person person;
}
- 类图表示
5.聚合关系(Aggregation)
- 聚合表示的也就是整体和局部,整体和部分是可以分开的,它是关联关系的特例,具有关联的导航性和多重性。
- 应用场景:一台电脑是由键盘(keyboard),显示器(monitor),鼠标组成的。
- Monitor
public class Monitor {
}
- Mouse
public class Mouse{
}
- Computer
public class Computer {
private Mouse mouse;
private Monitor monitor;
public void setMouse(Mouse mouse){
this.mouse = mouse;
}
public void setMonitor(Monitor monitor){
this.monitor = monitor;
}
}
- 类图表示
6.组合关系(Composition)
- 整体与部分的关系,但是整体与部分是不可分开的。
应用场景①:
Person与IDCard、Head,Head与Person是组合,IDCard与Person为聚合。
- Head
public class Head{
}
- IDCard
public class IDCard {
}
- Person
public class Person {
private IDCard card;
private Head head = new Head();
}
- 用类图表示
应用场景②:
鼠标、显示器与计算机都不能分离
- Mouse
public class Mouse{
}
- Moniter
public class Moniter {
}
- Computer
public class Computer {
private Mouse mouse = new Mouse();//鼠标 与computer不可分离
private Moniter moniter = new Moniter();//显示器和computer不可分离
public void setMouse(Mouse mouse) {
this.mouse = mouse;
}
public void setMoniter(Moniter moniter) {
this.moniter = moniter;
}
}
- 类图形式