软件方法(下)分析和设计第8章分析 之 分析类图——知识篇(20211227更新)软件方法(下)分析和设计第9章分析 之 分析类图——案例篇(20211228更新)从图8-108可以看到,泛化、关联和依赖在一个抽象级别,普通关联、聚合和组合在一个抽象级别。我们表述的时候要注意,说“泛化和关联”可以,但说“泛化和聚合”、“泛化和组合”或“继承和组合”是不合适的。因《设计模式》产生的误解GoF《设计模式》第1章中有一句被广为流传的话:Favor object composition over class inheritance.优先使用对象组合而不是类继承。这句话常让人误解组合和继承是一个级别的,其实,根据GoF《设计模式》的用词,这句话中的“组合”应该近似于UML中的“关联”。如图8-109,在GoF《设计模式》中,给出这句话之后,作者接下来讨论了aggregation(聚合)和acquaintance(认识)的区别,并且说acquaintance有时也被称为association(关联)或using(使用)。然而,在后面的内容中,作者把这几个词全部抛弃,一律使用composition。
图8-109 摘自Design Patterns: Elements of Reusable Object-Oriented Software, GammaE , et al. , 1995 根据GoF《设计模式》书中内容猜测,其中用词和UML以及本书的用词的对应关系可能如图8-110。左右对应为:①继承=泛化;②组合≈关联;③认识≈普通关联;④聚合≈聚合+组合。