LINUX.ORG.RU

История изменений

Исправление www_linux_org_ru, (текущая версия) :

Я написал, что отделение деталей реализации от интерфейса это и есть инкапсуляция.

нет, это совершенно разные, хотя возможно и связанные вещи

инкапсуляция это невозможность нарушить инварианты объекта; например, у нас есть объект time_interval и для любого такого объекта всегда

time_interval.start() + time_interval.length() == time_interval.end()

то это инкапсуляция вместе с отделением деталей реализации от интерфейса; а если у нас

time_interval.start + time_interval.length() == time_interval.end

или

time_interval.start + time_interval.length == time_interval.end()

или

...

то это все равно будет инкапсуляция, но уже отделения деталей реализации от интерфейса нет (т.к. при желании сменить реализацию клиентский код придется переписывать, хотя бы и в части добавления-убирания пустых скобочек)

а если же можно так хитро вызвать какие-то методы, чтобы равенство

time_interval.start() + time_interval.length() == time_interval.end()

оказалось нарушено, то это отделение деталей реализации от интерфейса, но без инкапсуляции

Исходная версия www_linux_org_ru, :

Я написал, что отделение деталей реализации от интерфейса это и есть инкапсуляция.

нет, это совершенно разные, хотя возможно и связанные вещи

инкапсуляция это невозможность нарушить инварианты объекта; например, у нас есть объект time_interval и для любого такого объекта всегда

time_interval.start() + time_interval.length() == time_interval.end()

то это инкапсуляция вместе с отделением деталей реализации от интерфейса; а если у нас

time_interval.start + time_interval.length() == time_interval.end

или

time_interval.start + time_interval.length == time_interval.end()

или

...

то это все равно будет инкапсуляция, но уже отделения деталей реализации от интерфейса нет

а если же можно так хитро вызвать какие-то методы, чтобы равенство

time_interval.start() + time_interval.length() == time_interval.end()

оказалось нарушено, то это отделение деталей реализации от интерфейса, но без инкапсуляции