欢迎光临散文网 会员登陆 & 注册

java 核心技术-12版 卷Ⅰ- 4.1.4 类之间的关系

2023-02-16 20:09 作者:CC挑灯夜读_谷  | 我要投稿

类之间最常见的关系有:

  • 依赖(uses-a)

  • 聚合(has-a)

  • 继承(is-a)

    依赖(dependence),即 uses-a 关系,是一种最明显的也最一般的关系。例如,Order 类使用了Account 类,因为Order对象需要访问 Account 对象来查看信用状态。但是 Item 类不依赖于 Account类,因为Item 对象不需要考虑客户账户。因此,如果一个类的方法要使用或操作另一个类的对象,我们就说前一个类依赖于后一个类。

    应该尽可能减少相互依赖的类。这里的关键是,如果类A 不知道类B 的存在,它就不会关心B的任何变化(这意味着B的改变不会在A中引入bug)。用软件工程的术语来说,就是要尽可能减少类之间的耦合(coupling)。

    聚合(aggregation)即has-a 关系,很容易理解,因为这种关系很具体。例如,一个Order 对象包含一些Item对象。包含关系意味着类A 的对象包含类B的对象。

    注释:有点方法学家不喜欢聚合这个概念,而更喜欢使用更一般的“关联”关系。从建模的角度看,这是可以理解的。但对于程序员来说,“has-a”关系更加形象。我喜欢使用聚合还有另一个原因:关联的标准记法不是很清楚,请参见4-1:


4-1 表达类关系的UML记法

    继承(inheritance),即 is-a 关系,表示一个更特殊的类与一个更一般的类之间的关系。例如,RushOrder 类继承了Order 类。在特殊化的RushOrder 类中包含一些用于优先处理的特殊方法,还提供了一个计算运费的不同方法;而其他的方法,如添加商品、生成账单等都是从Order类继承来的。一般而言,如果类D 扩展了类C,类D会继承类C 的方法,另外还会有一些额外的功能(下一章将详细讨论这个重要的概念)。

    很多程序员采用UML(Unified Modeling Language,统一建模语言)绘制类图,来描述类之间的关系。图4-2 就是这样一个例子。类用矩形表示,类之间的关系用带有各种修饰的箭头表示。表4-1给出了UML 中最常用的箭头样式。

4-2 类图


java 核心技术-12版 卷Ⅰ- 4.1.4 类之间的关系的评论 (共 条)

分享到微博请遵守国家法律