Агрегація - це композиція простих елементів в більш складний без указування власника, тобто, якщо знищується об'єкт власник, то його частини можуть і не бути знищенними, оскільки не є його частинами напряму - звичайно вони задаються вказівниками. Делегування - спосіб визначення поведінки віртуальних методів при наслідуванні, при чому під час виконання. В ідеалі, делегування може бути визначене і знищене в процесі виконання. От тільки лише декілька мов підтримують це, як стандарт мови... Щодо модулів, то в С/С++ це просто трохи тупа справа, бо всі модулі просто підставляються в код за допомогою макросів ще препроцесором, от і виникають ситуації, коли один і той самий модуль може бути включений двічі, чи в неправильному порядку - для того, щоб цього уникнути робляться макросні обв'язки, що забороняють включати код, якщо вже визначена відповідна мітка і т.п. В Паскалі цей механізм більш розумний і дозволяє уникати подібних ситуацій.