Композиція (програмування)Композиція (або ж об'єктна композиція, також агрегація та включення) в програмуванні — це створення об'єктів наявних класів як елементів інших класів. Про композицію також часто говорять як про «відношення належності» за принципом «машина має корпус, колеса та двигун». Агрегація або включення організоване за принципом «машина має модель». Вкладені об'єкти нового класу зазвичай оголошуються закритими, що робить їх недоступними для прикладних програмістів, що працюють з класом. З іншого боку, творець класу може змінювати ці об'єкти, не порушуючи роботи наявного клієнтського коду. Крім того, заміна вкладених об'єктів на стадії виконання програми дає змогу динамічно змінювати її поведінку. Механізм успадкування такої гнучкості не має, оскільки для похідних класів установлюються обмеження, що перевіряються на стадії компіляції. На відміну від успадкування, у композиції тип відносин є Has-a тобто має (машина має двигун). В успадкуванні ж тип відносин між породженим об'єктом і батьківським є Is-a зв'язком, тобто якщо об'єкт кішка породжено від тварина, то кішка є тварина (cat is a pet). UML позначенняУ UML позначається як замальований ромб і суцільна лінія. Це завжди позначається 1 або 0..1, як не більше ніж один об'єкт за один раз може мати відношення до іншого об'єкта. Загальніша форма, агрегація, зображається як порожній ромб і суцільна лінія. Різниця між агрегацією і композицією полягає в тому, що у зв'язку композиція життя об'єкта контролюється його «володарем», а під час агрегації — не контролюється. Приклади коду// Composition
class Car
{
private:
Carburetor* itsCarb;
public:
Car() {itsCarb=new Carburetor();}
virtual ~Car() {delete itsCarb;}
};
// Aggregation
class Pond
{
private:
vector<Duck*> itsDucks;
};
Див. також
|
Portal di Ensiklopedia Dunia