60
исходному классу атрибуты целевого класса добавлены не будет, но в код будет
добавлен оператор типа «#include».
• агрегация (aggregation) – частный случай ассоциации, который выражает отношение
целое-часть (например, автомобиль-двигатель). Агрегация является транзитивной: если
А является частью В, а В – частью С, то А - часть С. Агрегация изображается с помощью
ромба, который ставится около полюса, являющегося агрегатом. Жизненный цикл
объекта–части совпадает с ЖЦ объекта-целого. Более сильная разновидность агрегации –
это связь типа «композиция» (объединение – composition), которая накладывает на
ассоциацию два дополнительных ограничения: (i) составляющая часть может
принадлежать не более чем одному агрегату; (ii) составляющая часть получает срок
жизни агрегата. Композиция обозначается закрашенным ромбом.
Таким образом, агрегация – это способ встраивания нескольких объектов в один объект-
контейнер и использование встраиваемых объектов для реализации методов контейнера.
>>> class Customer:
def __init__(self,name): # присваивание данных атрибутам через ссылку self
self.name=name # создает или изменяет данные именно экземпляра, а не
def state(self): # всего класса в целом
print "My name is ", self.name, " and I am very busy"
>>> student=Customer("Ivan")
>>> student.state()
My name is Ivan and I am very busy
>>> class Group_1161:
def __init__(self):
self.customer=Customer("Ivan") # обращение к классу-части при
self.customer.state() # инициализации класса-контейнера
def state(self,name):
customer=Customer(name) # обращение к методу класса-части
customer.state() # из метода класса-контейнера
>>> group=Group_1161()
My name is Ivan and I am very busy
>>> group.state("Anton") # устанавливается связь между двумя
My name is Anton and I am very busy # классами, т.к. вызов метода класса
# контейнера приводит к вызову одного или нескольких методов класса-части
• обобщение (generalization) – показывает связи наследования между двумя классами
(суперкласс-подкласс). При этом, подклассы наследуют все возможности своих
надклассов (атрибуты, операции, отношения, ограничения) – inheritance. Обобщение
часто используется совместно с абстрактными классами, которые могут иметь
абстрактные атрибуты и операции. Абстрактные классы не создают экземпляров.
Подкласс абстрактного класса реализует абстрактные операции, добавляя новые
возможности, или переопределяя их.
Рисунок 33 – Наследование на диаграмме классов