??xml version="1.0" encoding="utf-8" standalone="yes"?>国产亚洲欧洲Aⅴ综合一区,亚洲免费日韩无码系列,亚洲欧美不卡高清在线http://www.tkk7.com/tinysun/category/45147.htmlzh-cnFri, 28 May 2010 07:07:14 GMTFri, 28 May 2010 07:07:14 GMT60依赖、关联、聚合、组合还有泛化的关系 http://www.tkk7.com/tinysun/archive/2010/05/28/322141.html何克?/dc:creator>何克?/author>Fri, 28 May 2010 06:16:00 GMThttp://www.tkk7.com/tinysun/archive/2010/05/28/322141.htmlhttp://www.tkk7.com/tinysun/comments/322141.htmlhttp://www.tkk7.com/tinysun/archive/2010/05/28/322141.html#Feedback0http://www.tkk7.com/tinysun/comments/commentRss/322141.htmlhttp://www.tkk7.com/tinysun/services/trackbacks/322141.html此文{载文?http://zjzkiss.cnblogs.com/
世界是普遍联pȝQ因此程序世界中的类Q也不可能是孤立的。UML为我们定义了(jin)它们之间的关p,是Q依赖、关联、聚合、组合还有泛化?

       泛化关系比较好理解,是表示cM间的l承关系。容易؜淆的是依赖、关联、聚合和l合的关pR这里做一些甄别:(x)

       1?nbsp;依赖和关联的颠倒颠

       在网上查找了(jin)一下依赖和兌的区别,有说“兌本nx(chng)一U依?#8221;Q亦有说“依赖是一U弱兌”Q其实说来说L一子事。依赖和兌都是说一个类用到?jin)另一个类。其区别在于一个是使用Q一个是拥有?/p>

      依赖Q具有某U偶然性。比如说我要q河Q没有桥怎么办,我就d来一条小Ҏ(gu)q去。我与小船的关系仅仅是用(借用Q的关系。表现在代码上,Z赖的cȝ某个Ҏ(gu)以被依赖的类作ؓ(f)其参数。或者是class A 的某个方法创造了(jin) class B 的实例抑或对class B的静(rn)态方法的调用。如果A依赖于BQ那意味着B的变化可能要求A也发生变化;

       q是uml图表C的依赖关系Q?br />        
代码表现Q?br />

 

1public class Person{    
2    /** 划船 */   
3    public void oarage (Boat boat){    
4        boat.oarage();    
5 }
    
6}
 
7


 

兌Q有名的客户和订单的关系以及(qing)公司和员工的关系Q都是关联关pR还有就是我和我的单车的例子Q他们都是一U?#8220;拥有”的关pR表现在代码上,是一个类包含另一个类的实例,通常表现兌cMcd性的形式出现在关联类的类定义中,也可以表Cؓ(f)兌cd用了(jin)一个类型ؓ(f)被关联类的全局变量。关联可以单向的,也可以双向的?/p>

从网上找到的公司和员工的UML囑֒代码 Q?/p>


公司和员工的兌关系

 1public class Company{    
 2    private Employee employee;    
 3    public Employee getEmployee(){    
 4        return employee;    
 5    }
    
 6    public void setEmployee(Employee employee){    
 7        this.employee=employee;    
 8    }
    
 9    //公司q作    
10    public void run(){    
11        employee.startWorking();    
12    }
    
13}
  
14


 

可见依赖于与兌亦有动静(rn)之别Q关联的c?#8220;?rn)?#8221;地引用了(jin)被关联类的实例变量,而依赖的偶然性也正说明了(jin)它的动态性?/p>

      2?nbsp;聚合与组合同?gu)异?/p>

      聚合与组合其实都是关联的特例Q都是整体和部分的关pR他们的区别在于聚合的两个对象之间是可分ȝQ他们具有各自的生命周期。而组合往往表现ZU唇齿相依的关系?/p>

聚合Q一U容Ux(chng)曰包含的关系Q如同机场和飞机Q汽车和轮胎的关pR其实仔l想惻I前面的公司和员工的关pM有聚合的味道在里面?/p>

l合Q也可称之ؓ(f)合,整体和部分是不可分的Q整体的生命周期l束时也是部分的生命周期到头时。很有名的就是桌子和桌子腿的关系?/p>

      聚合的UML图:(x)

l合?/span>UML图:(x)




 

然而,聚合与组合的代码表现形式是一L(fng)Q都可以表现Z下的形式Q它们仅仅具有语义上的区别?/p>

|上扑ֈ的电(sh)脑和CPU的关pȝ代码表现Q?/p>

 

 1public class Computer{    
 2    private CPU cpu;    
 3    public CPU getCPU(){    
 4        return cpu;    
 5    }
    
 6    public void setCPU(CPU cpu){    
 7        this.cpu=cpu;    
 8    }
    
 9    //开启电(sh)?nbsp;   
10    public void start(){    
11        //cpuq作    
12        cpu.run();    
13    }
    
14}
  
15


]]>
վ֩ģ壺 ˬAëƬѿ| ѹۿĻƷ| ޹| պƷӰһ| ޾Ʒ| þƬѹۿ| ձ㽶ƵۿƵ| ڵƷƵ| mv߹ۿ| ޾Ʒ˳߲| ƬAVƬѹۿ| aƬձþ| ޵һ˵| ձѲ| þùƷ2020m3u8| AVӰԺ| þþþ޾ƷӰ| СƵ| ҹѸƵ| պһƵ| AvƷþ| **ʵëƬѹۿ | av2019| ѿ13| Դ߹ۿѰ| 2020þþƷۺһ| պȫƵۿѹۿ| 97޸ѹƵ| ۺ϶ŷ| ޳avƬ߹ۿ| aëƬѧѹۿ| 99þۺϾƷ| ˿Ƶ| ҹ޹Ƭ̨| ޳avƬ߹ۿ| Ļ߾ƷӰ| ëƬa߹ۿ67194| þþþƷƵ| ëƬڵ| ˾ҹƵ| ŷպƷһ|