А>>в чем собственно принципиальная разница?
A_G>Расширение — это прямое наследование. Такоим образом ты получаешь такие преимущества как полиморфизм, позднее связывание и наследование базовой функциональности.
A_G>Аггрегирование — это включение объектов в состав другого объекта.
A_G>Вообще говоря, время жизни аггрегированного объекта, равно времени жизни аггрегата (объекта-владельца)
Вообще говоря нет — различают два вида аггрегации: собственно аггрегацию и композицию.
Все начинается с ассоциации, которая говорит о том, что между объектами двух классов можно построить некоторое отношение.
Различают отношения 1->1 (один к одному), 1->N (один ко многим) и N->M (многие ко многим). Ассоциация как правило реализуется через ссылку на объект или через коллекцию.
Аггрегация является частным случаем ассоциации, при котором имеет место отношение "часть-целое" (то самое включение объектов в состав другого объекта), композиция — аггрегация, при которой композит несет отвественность за хранение и жизненный цикл аггрегированного объекта.
Пример ответственности за хранение: при хранении в памяти в аггрегате хранится только ссылка на аггрегированный объект, а в композите — собственно содержимое аггрегированного объекта. Пример синтетический, в том или ином виде реализуется для старых компиляторов С++.Отсюда, также, растет странное поведение Rational Rose, где для создания композиции нужно создать аггрегацию (здесь все верно) и установить вместо хранения по ссылке хранение по значению (что, собственно говоря, уже неверно, т.к. в той же Java не бывает хранения по значению).
Аггрегация допускает построение отношений N->M, когда как композиция — только 1->N (иначе нельзя соблюсти ограничение на время жизни аггрегированного объекта).
Данное описание изложено в спецификации OMG UML. Сообщение надо расценивать исключительно как терминологическое уточнение

.