Спадщина проти складу
Спадщина та Склад - це дві важливі концепції, знайдені в ООП (Об'єктно-орієнтоване програмування). Простіше кажучи, і Композиція, і Спадщина мають справу з наданням додаткових властивостей або поведінки класу. Спадкування - це здатність класу успадковувати властивості та поведінку від батьківського класу шляхом його розширення. З іншого боку, Композиція - це здатність класу містити об’єкти різних класів як дані членів.
Що таке спадщина?
Як було сказано вище, Спадщина - це здатність класу успадковувати властивості та поведінку від батьківського класу шляхом його розширення. Спадкування по суті забезпечує повторне використання коду, дозволяючи розширювати властивості та поведінку існуючого класу заново визначеним класом. Якщо клас A поширюється на B, то клас B називається батьківським класом (або суперкласом), а клас A називається дочірнім класом (або похідним класом / підкласом). У цьому прикладі сценарію клас A успадкує всі відкриті та захищені атрибути та методи суперкласу (B). Підклас може необов'язково змінювати (надавати нову або розширену функціональність методам) поведінку, успадковану від батьківського класу.
Спадкування являє собою "є-а" відносини в ООП. Це по суті означає, що A також є B. Іншими словами, B може бути класом із загальним описом певної сутності реального світу, але A визначає певну спеціалізацію. У реальній проблемі програмування клас Person може бути розширений, щоб створити клас Employee. Це називається спеціалізацією. Але ви також можете спершу створити клас Employee, а потім також узагальнити його до класу Person (тобто узагальнення). У цьому прикладі Працівник матиме всі властивості та поведінку Особи (тобто працівник також є Особою) і може містити деяку додаткову функціональність (так, Особа не є працівником) також.
Що таке склад?
Композиція - це здатність класу містити об’єкти різних класів як дані членів. Наприклад, клас A міг би містити об'єкт класу B як член. Тут усі публічні методи (або функції), визначені в B, можуть бути виконані в межах класу A. Клас A стає контейнером, а клас B стає класом, що міститься. Склад також називають контейнером. У цьому прикладі можна сказати, що клас A складається з класу B. У OOP склад має відношення "має-а". Важливо зазначити, що, хоча контейнер має доступ до виконання всіх відкритих методів класу, що міститься, він не в змозі змінити або надати додаткову функціональність. Якщо мова йде про реальну проблему програмування, об'єкт класу TextBox може міститися у формі Form, і, таким чином, можна сказати, що форма містить TextBox (або, як альтернатива, форма складається з TextBox).
Яка різниця між Спадщиною та Складом?
Хоча Спадщина та Склад є двома концепціями OOP, вони сильно відрізняються тим, що дозволяють програмісту досягти. Спадкування - це здатність класу успадковувати властивості та поведінку від батьківського класу шляхом його розширення, тоді як Композиція - це здатність класу містити об’єкти різних класів як дані членів. Якщо клас розширений, він успадковує всі публічні та захищені властивості / поведінку, і ця поведінка може бути замінена підкласом. Але якщо клас міститься в іншому, контейнер не отримує можливості змінювати або додавати поведінку до міститься. Спадкування являє собою "є-є" відносини в ООП, тоді як Склад являє собою "має-а" відносини.