叶公之家

导航

类的关系2 转帖

共四种:

(1)关联(Association)

               两个独立实例存在对应关系,如客户和订单,公司和员工。

               具体表现:使用实例变量来实现。

 

               

                代码:  

                public class Company{   

                private Employee employee;   

                public Employee getEmployee(){   

                        return employee;   

                 }   

                 public void setEmployee(Employee employee){   

                        this.employee=employee;   

                 }   

                 //公司运作   

                 public void run(){   

                         employee.startWorking();

                  }

          }

    

(2)聚合(Aggregation)

                较强的关联关系,强调的是整体和部分

               具体表现:与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。

 

              

 

            聚合和组合(composition)的区别             

           举一个简单的例子:
            一个图书馆可以有十万本书,也可以一本也没有。但空的图书馆还是图书馆。这是聚合
            一个车(我们平常能看到的普通的交通工具车)有轮子,有的车是四轮子的,有的车是三轮的,自行车是二轮的,还有独轮车,但车至少要有一个轮子,不然就不是车。这是组合关系。

           代码:

           public class Computer{   

                   private CPU cpu;   

                   public CPU getCPU(){   

                             return cpu;   

                    }   

                   public void setCPU(CPU cpu){   

                             this.cpu=cpu;   

                    }   

                    //开启电脑   

                    public void start(){   

                    //cpu运作   

                        cpu.run();   

              }

  (3)泛化(Generalization)

              表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系

               具体表现:父类 父类实例=new 子类()

 

               

             代码:

             class Animal{}   

             class Tiger extends Animal{}   

             public class Test {   

                 public void test()   

                 {   

                       Animal a=new Tiger();   

                 }  

            }

(4) 依赖(Dependency)

             对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时.

            具体表现:在局部变量方法的参数,以及对静态方法的调用。

 

            

             代码:

             public class Person{   

             /** 拧螺丝 */  

                     public void screw(Screwdriver screwdriver){   

                               screwdriver.screw();   

                       }   

              } 

posted on 2011-10-04 11:46  oldsnow  阅读(100)  评论(0编辑  收藏  举报