一、聚合关系(Aggregation)
1.1 什么是聚合关系?
聚合关系是一种弱关联关系,表示一个类(整体)包含另一个类(部分)作为其一部分。在聚合关系中,部分对象可以独立存在,与整体对象的生命周期没有强制关联。如果整体对象被销毁,部分对象仍然可以存在。
1.2 聚合关系示例
假设我们有一个图书馆(Library)类和书(Book)类。图书馆包含多本书,但如果图书馆关闭,书籍仍然存在,可能被移动到其他地方或者借给其他人。
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
class Library:
def __init__(self):
self.books = []
def add_book(self, book):
self.books.append(book)
# 创建书籍和图书馆对象
book1 = Book("Python Programming", "John Doe")
book2 = Book("Machine Learning Basics", "Jane Smith")
library = Library()
library.add_book(book1)
library.add_book(book2)
在这个示例中,图书馆和书籍之间存在聚合关系。
二、组合关系(Composition)
2.1 什么是组合关系?
组合关系是一种强关联关系,表示一个类(整体)包含另一个类(部分)作为其一部分,但部分对象与整体对象的生命周期有强制关联。如果整体对象被销毁,部分对象也将被销毁。
2.2 组合关系示例
考虑一个汽车(Car)类,其中包含引擎(Engine)作为其组成部分。如果汽车被废弃,引擎也将被废弃,因为它们的生命周期是紧密相连的。
class Engine:
def __init__(self, model):
self.model = model
class Car:
def __init__(self, make, model):
self.make = make
self.model = model
self.engine = Engine("V6")
def start(self):
print("Car is starting with engine:", self.engine.model)
# 创建汽车对象
my_car = Car("Toyota", "Camry")
my_car.start()
在这个示例中,汽车和引擎之间存在组合关系。
总结
聚合关系表示整体包含部分,但部分对象可以独立存在。组合关系表示整体包含部分,但部分对象与整体对象的生命周期有强制关联。