August 2021
Intermediate to advanced
450 pages
4h 46m
Chinese
我们来通过一个简单的例子来把继承、接口、组合、联合和聚合概念糅合到一个简单、短小的系统中。
我们使用第8章中的例子,并做了以下扩展:我们添加一个Owner类用来遛狗。
Dog类直接从Mammal类继承。图9.9中的实体箭头表示了Dog类和Mammal类之间的关系。Nameable类是Dog实现的接口,通过Dog类和Nameable接口之间的虚线箭头表示这种关系。
图9.9 Dog例子中的UML类图
在本章中,我们一直在讨论联合和聚合。Dog类和Head类之间是聚合关系,因为头实际上是狗的一部分。连接这两个类图的线上的基数表示了一条狗只能有一个头。
Dog类和Owner之间是联合的关系。主人当然不是狗的一部分,反过来也一样,所以肯定不是聚合关系。然而狗需要主人的服务(遛狗)。Dog和Owner类之间的线基数指定狗可以拥有一个或多个主人(例如,妻子和丈夫都可以认为是狗的主人,都有遛狗的责任)。
当设计面向对象的系统时,主要就是使用继承、接口、组合、联合和聚合等手段组织对象之间的关系。
Head类在哪里?
你可能认为将Head类附加到Mammal类上而不是Dog类上更合理,因为所有的哺乳动物一般都只有一个头。在该模型中我只是想突出Dog类,所以才会把Head类附加到Dog类上。
Read now
Unlock full access