Композиція у програмуванні або ж Об'єктна композиція, також Агрегація та включення — це створення об'єктів існуючих класів як елементів інших класів. Про композицію також часто говорять як про «відношення приналежності» за принципом у «у машини є корпус, колеса і двигун». Агрегація або включення організоване за принципом «у машини є модель».
Вкладені об'єкти нового класу зазвичай оголошуються закритими, що робить їх недоступними для прикладних програмістів, що працюють з класом. З іншого боку, творець класу може змінювати ці об'єкти, не порушуючи роботи існуючого клієнтського коду. Крім того, заміна вкладених об'єктів на стадії виконання програми дозволяє динамічно змінювати її поведінку. Механізм успадкування такої гнучкості не має, оскільки для похідних класів встановлюються обмеження, що перевіряються на стадії компіляції.
На відміну від успадкування, в композиції тип відносин є 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; };
Див. також
Ця стаття не містить . (березень 2017) |
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Kompoziciya u programuvanni abo zh Ob yektna kompoziciya takozh Agregaciya ta vklyuchennya ce stvorennya ob yektiv isnuyuchih klasiv yak elementiv inshih klasiv Pro kompoziciyu takozh chasto govoryat yak pro vidnoshennya prinalezhnosti za principom u u mashini ye korpus kolesa i dvigun Agregaciya abo vklyuchennya organizovane za principom u mashini ye model Vkladeni ob yekti novogo klasu zazvichaj ogoloshuyutsya zakritimi sho robit yih nedostupnimi dlya prikladnih programistiv sho pracyuyut z klasom Z inshogo boku tvorec klasu mozhe zminyuvati ci ob yekti ne porushuyuchi roboti isnuyuchogo kliyentskogo kodu Krim togo zamina vkladenih ob yektiv na stadiyi vikonannya programi dozvolyaye dinamichno zminyuvati yiyi povedinku Mehanizm uspadkuvannya takoyi gnuchkosti ne maye oskilki dlya pohidnih klasiv vstanovlyuyutsya obmezhennya sho pereviryayutsya na stadiyi kompilyaciyi Na vidminu vid uspadkuvannya v kompoziciyi tip vidnosin ye Has a tobto maye mashina maye dvigun V nasliduvanni zh tip vidnosin mizh porodzhenim ob yektom i batkivskim ye Is a zv yazkom tobto yaksho ob yekt kishka porodzheno vid tvarina to kishka ye tvarina cat is a pet UML poznachennyaV UML poznachayetsya yak zamalovanij romb i sucilna liniya Ce zavzhdi poznachayetsya 1 abo 0 1 yak ne bilshe nizh odin ob yekt za odin raz mozhe mati vidnoshennya do inshogo ob yekta Zagalnisha forma agregaciya zobrazhayetsya yak porozhnij romb i sucilna liniya Riznicya mizh agregaciyeyu i kompoziciyeyu polyagaye v tomu sho u zv yazku kompoziciya zhittya ob yekta kontrolyuyetsya jogo volodarem a pid chas agregaciyi ne kontrolyuyetsya Prikladi kodu Composition class Car private Carburetor itsCarb public Car itsCarb new Carburetor virtual Car delete itsCarb Aggregation class Pond private vector lt Duck gt itsDucks Div takozhDiagrama klasivCya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno berezen 2017 Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi