一、依赖关系(Dependence

  只要是在 类中用到了对方,那么它们之间就存在依赖关系。如果没有对象,连编译都通过不了。

  Demo:

 1 public class PersonServiceBean {
 2     //
 3     private PersonDao personDao;
 4 
 5     public void save(Person person) {
 6     }
 7 
 8     public IDCard getIDCard(Integer personid) {
 9         return new IDCard();
10     }
11 
12     public void modify() {
13         Department department = new Department();
14     }
15 }
16 
17 public class PersonDao {}
18 public class Person {}
19 public class IDCard {}
20 public class Department {}

 

  对应的类图:

   

 

   小结:

    1)类中用到了对方;

    2)如果是 类的成员属性;

    3)如果是方法的返回类型;

    4)是方法接收的参数类型;

    5)方法中使用到

二、泛化关系(Generalization

  泛化关系实际上就是继承关系,它是依赖关系的特例

  Demo:

1 public class DaoSupport {
2     public void save(Object entity){}
3     public void delete(Object id){}
4 }
5 
6 public class PersonServiceBean extends DaoSupport{
7 
8 }

 

  对应的类图:

                                                

  小结:

    1)泛化关系实际上就是继承关系

    2)如果 A 类继承了 B类,我们就说 A 和 B 存在泛化关系

 

三、实现关系(Implementation

  实现关系实际上就是 A 类实现 B 接口,它是依赖关系的特例

  Demo:

 1 public interface PersonService {
 2 
 3     public void delete(Integer id);
 4 }
 5 
 6 public class PersonServiceBean implements PersonService {
 7     @Override
 8     public void delete(Integer id) {
 9         System.out.println("delete..");
10     }
11 }

 

  对应的类图:

           

 

 

四、关联关系(Association

    关联关系实际上就是 类与类之间的联系,它是依赖关系的特例

    关联具有导航性:即双向关系或单向关系。

    关系具有多重性:如“1”(表示有且仅有一个),“0” (表示0个或者多个),“0,1”(表示0个或者一个),“n...m”(表示 n 到m个都可以),“m...*” (表示至少m个)。

    Demo:

 1 public class Person {
 2     private IDCard card;   //单向关系
 3     private Home home;  //双向关系
 4 }
 5 
 6 public class IDCard {}
 7 
 8 public class Home {
 9     private Person person;
10 }

 

   对应的类图:

    

 

 

 

五、聚合关系(Aggregation

  聚合关系表示的是 整体和部分的关系整体与部分可以分开

  聚合关系是关联关系的特例,所以它具有关联的导航性和多重性。

  如:一台电脑由键盘(keyboard)、显示器(monitor),鼠标等组成,组成电脑的各个配件是可以从电脑上分离出来的,使用带空心菱形的实线来表示。

  Demo:

 1 public class Computer {
 2     private Mouse mouse; //鼠标可以和computer分离
 3     private Moniter moniter;//显示器可以和Computer分离
 4     public void setMouse(Mouse mouse) {
 5         this.mouse = mouse;
 6     }
 7     public void setMoniter(Moniter moniter) {
 8         this.moniter = moniter;
 9     }
10 }
11 
12 public class Moniter {}
13 
14 public class Mouse {}

 

  对应的类图:

          

六、组合关系(Composition

  如果像人和头部,心脏不可分离的,则升级为组合关系。

  组合关系:也是整体与部分的关系,但是整体与部分不可以分开。

  案例:在程序中我们定义实体: PersonIDCardHead, 那么 Head Person 就是 组合, IDCard Person 就是聚合。

  但是如果在程序中Person实体中定义了对IDCard进行级联删除,即删除Person时连同IDCard一起删除, 那么IDCard Person 就是组合了。

  Demo:

1 public class Person {
2     private IDCard card; //聚合关系
3     private Head head = new Head(); //组合关系
4 }
5 
6 public class IDCard {}
7 
8 public class Head {}

 

  对应的类图:

         

  Demo2:

 1 public class Computer {
 2     /**鼠标可以和computer不能分离**/
 3     private Mouse mouse = new Mouse();
 4     /**显示器可以和Computer不能分离**/
 5     private Moniter moniter = new Moniter();
 6     public void setMouse(Mouse mouse) {
 7         this.mouse = mouse;
 8     }
 9     public void setMoniter(Moniter moniter) {
10         this.moniter = moniter;
11     }
12 }
13 
14 public class Mouse {}
15 
16 public class Moniter {}

 

 

   对应的类图:

      

 

posted on 2021-01-01 00:06  格物致知_Tony  阅读(275)  评论(0编辑  收藏  举报