类之间的关系

来源:互联网 发布:文档防泄密软件 编辑:程序博客网 时间:2024/04/23 15:20

在类之间,最常见的关系有 
依赖(“uses-a”) 
聚合(“has-a”) 
继承(“is-a”) 
    依赖(dopendence),即“uses-a”关系,是一种最明显的、最常见的关系。例如,Order 类使用Account类是因为Order对象需要访问Account对象查看信用状态。但是Item类不依赖于Account类,这是因为Item对象与客户账户无关。因此,如果一个类的方法操纵另一个类的对象,我们就说一个类依赖于另一个类。 
    应该尽可能地将相互依赖的类减至最少。如果类A不知道B的存在,它就不会关心B的任何改变(这意味着B的改变不会导致A产生任何bug)。用软件工程的术语来说,就是让类之间的耦合度最小。 
    聚合(aggregation),即“has-a”关系,是一种具体且易于理解的关系。例如,一个Order对象包含一些Item对象。聚合关系意味着类A的对象包含类B的对象。 
    注释:有些方法学家不喜欢聚合这个概念,而更加喜欢使用“关联”。从建模的角度看,这是可以理解的。但对于程序员来说,“has-a”显得更加形象。喜欢使用聚合的另一个理由是关联的标准符号不易区分。 
    继承(inheritance),即“is-a”关系,是一种用于表示特殊与一般关系的。例如,Rush Order类由Order类继承而来。在具有特殊性的RushOrder类中包含了一些用于优先处理的特殊方法,以及一个计算运费的不同方法;而其他的方法,如添加条目、生成账单等等都是从Order类继承来的。一般而言,如果类A扩展类B,类A不但包含从类B继承的方法,还会拥有一些额外的功能(下一章将详细讨论继承,其中会用较多的篇幅讲述这个重要的概念)。