" писал(а): Инкапсуляцию - это сокрытие данных.
Согласен с определением.
" писал(а):Никакого переиспользования кода это понятие не включает.
Не "не включает", а не упомянуто за не надобностью. Но если не исспользовать для каждого объекта один и тот же код, то как вообще можно инкапсулировать (скрыть данные)? Следовательно сокрытие и возможность повторного исспользования кода - неотъемлемое свойсов (свойство, а не определение) инкапсуляции. А если говорить об английском слове Incapsulation, то там вообще не сказано, что именно упаковывается.
" писал(а):Вот только в среди трёх китов ООП: наследования, инкапсуляции и полиморфизма, к сожалению нет переиспользования кода.
А зачем? При инкапсуляции код уже упакован вместе с данными, а при полиморфизме ещё и выбирается в зависимости от фактического типа, кроме того
" писал(а):Переиспользование кода можно реализовать и без ООП
.
Согласен, можно includeом. И если ставить перед собой только цель повторного использования кода - тогда include и никаких гвоздёв. В книгах по c++у, по-моему, прямо написано, что классы придуманы для того, чтобы собрать в одно место
данные и
код и что
данные индивидульны для каждого объекта, а
код создаётся в одном экземпляре для всего класса, и
используется всеми обектами. Разве это не повторность? А упаковка в одну запись
только разнородных данных никогда инкапсуляцией не считалась, да и сокрытие данных места не имело. Именно
объединение данных с кодом суть инкапсуляции. А определения надо ещё интерпретировать.
" писал(а):Например "сипулировать" (как в дневниках Иона Тихого) и дай определение, что сипулировать, это инкапсулировать или переиспользовать.
Зачем? термин "инкапсуляция" уже есть. Он означает "сокрытие". Но как он реализуется? В процедурном программировании были понятия локальных/глобальных данных и области их видимости. Однако локализация инкапсуляцией не называется. Сокрытие же данных в ООП реализуется
путем объединением с кодом. А код объединяется с данными
в любом классе. Следоватьено, если ты объявил класс, а от него объект, то основа для инкапсуляции (сокрытия данны)
уже есть. Объяви класс с одним конструктором и десять его экземпляров. А потом сосчитай, сколько раз
вызывается конструктор и сколько он
имеет экземпляров кода. Сразу увидишь повторное исспользование. Я же не претендовал, на
точное знание определения. Но где у меня
явная ошибка? Я никогда не утверждал (и не считал), что инкапсуляция предназначена для повторного исспользования кода. Я лишь считаю что она, сама будучи основана на многократном обращении к коду, позволяет повторно его исспользовать. Не более того.