История изменений
Исправление asaw, (текущая версия) :
Это просто все привыкли что в C++/Java инкапсуляция реализована в виде классов, потому не могут понять языки Rust и Go в которых классов нет, и никакой инкапсуляции на уровне ниже модулей тоже нет.
... «не могут понять Си, где нет никакой инкапсуляции». И на уровне модулей это тоже не инкапсуляция.
Если тебе очень нужно инкапсулировать свой обьект, то для этого используют вложенные модули
Да хоть сто вложенных модулей. Мне ничего не помешает, например, приделать к этому же самом объекту новое поведение в другом месте. То есть все думали, что объект типа «улитка» умеет только ползать, а она вдруг раз - и полетела, потому что какой-то шутник прилепил к ней трейт Wings. С другой стороны, поскольку инкапсуляции нет, то нет и наследования поведения когда это нужно. Потому что невозможно сделать наследование сферического поведения в вакууме. Поведение в общем случае связано с состоянием, то есть с данными.
Исходная версия asaw, :
Это просто все привыкли что в C++/Java инкапсуляция реализована в виде классов, потому не могут понять языки Rust и Go в которых классов нет, и никакой инкапсуляции на уровне ниже модулей тоже нет.
... «не могут понять Си, где нет никакой инкапсуляции». И на уровне модулей это тоже не инкапсуляция.
Если тебе очень нужно инкапсулировать свой обьект, то для этого используют вложенные модули
Да хоть сто вложенных модулей. Мне ничего не помешает, например, приделать к этому же самом объекту новое поведение в другом месте. То есть все думали, что объект «улитка» умеет только ползать, а она вдруг раз - и полетела, потому что какой-то шутник прилепил к ней трейт Wings. С другой стороны, поскольку инкапсуляции нет, то нет и наследования поведения когда это нужно. Потому что невозможно сделать наследование сферического поведения в вакууме. Поведение в общем случае связано с состоянием, то есть с данными.