2.28 组合
C++面向对象高效编程(第2版)
这是一种聚集形式,有很强的生存期,且部分和整体之间的所有权依赖关系也很强。聚集(容器)的多重性不能超过1个(无共享)。组合可以用三种不同的方式表示,其中一种熟悉的符号就是实心菱形。例如,AirPlane(飞机)对象有一个CockPit(驾驶舱)、 Engine(引擎)、Seats(座椅)等。CockPit对象与AirPlane对象一起被创建(见图2-25),一起被销毁(聚集是不可改变的)。
图2-28
当多重性(基数)大于1时,可以在创建聚集本身后再创建部分(part),除非在聚集被销毁前,显式移除部分,否则部分会和聚集一起被销毁。一架AirPlane有多个Engine和多个Seat等,而且在AirPlane类对象的生存期内,可以添加或移除Seat。当AirPlane类对象被销毁后,它所包含的所有对象都会被销毁,除非它们已经从AirPlane类对象中移除(例如,座椅可能被移除,复用于另一架飞机中)。在图2-26或图2-27中都表示了组合关系。
时间: 2024-10-22 17:34:56