вот примерно так альтернатива наследованию выглядит (код из репозитория всеми любимого Егора Бугаенко), называется композицией в англоязычной литературе
по сравнению с наследованием преимущества в том, что можно скомпозировать что угодно и как угодно, при необходимости в тестах замокать какой-нибудь микрокомпонент, ну и чз декораторы вообще что угодно и как угодно можно расширять
Если мы храним ссылки на чужой двигатель автомобиля который каруселит по дорогам, это нарушение инкапсуляции, хотя с двигателем плохой пример так как это композиция а не агрегация. А вот если у нас будет удаленный доступ к прибору который считывает данные двигателя, то все пучком.
в чём разница между композицией и агрегацией в вашей интепретации?
в чём разница между композицией и агрегацией в вашей интепретации?
Композиция должна быть скрыта, и обьект без части какой то части существовать не может, пример сердце человека. А агрегация это что то, что может включать в себя обьект, и легко заменять, или отсутствовать без проблем к существованию, и функционала обьекта. думаю так
Композиция должна быть скрыта, и обьект без части какой то части существовать не может, пример сердце человека. А агрегация это что то, что может включать в себя обьект, и легко заменять, или отсутствовать без проблем к существованию, и функционала обьекта. думаю так
Композиция должна быть скрыта, и обьект без части какой то части существовать не может, пример сердце человека. А агрегация это что то, что может включать в себя обьект, и легко заменять, или отсутствовать без проблем к существованию, и функционала обьекта. думаю так
в их контексте composition == агрегации в данной итерпретации, и противопоставляется наследованию соответственно
в более широком смысле композиция есть объединение составных частей в единое целое (при этом бывает и композиция функций, и композиция объектов), в более узком смысле в контексте ООП композиция бьётся на композицию в другом смысле и агрегацию
Композиция должна быть скрыта, и обьект без части какой то части существовать не может, пример сердце человека. А агрегация это что то, что может включать в себя обьект, и легко заменять, или отсутствовать без проблем к существованию, и функционала обьекта. думаю так
т.е. фактически class A : C { A() : base(new B()) { ... } } — композиция class A : C { A(B b) : base(b) { ... } } — аггрегация но при этом оба случая можно обозвать композицией объектов в широком смысле, сославшись на composition over inheritance