смысл именно в этом, и объекты предоставляют "границу" одной логики от другой логики. Проблема обычно в том что "сущности" в общепринятом понимании это просто проекции табличек вашей реляционной БД, просто потому что так делают 90% разработчиков. Не потому что "так ооп задумывалось" (читаем про Object/Relational Impedance Mismatch) а потому что кастыли.
При этом есть вот набросы что мол "а в ФП у тебя логика отделена от данных, че это плохо что-ли" - но это уже больше вопросы восприятия синтаксиса.
условно говоря
def foo()
{
bar # points to internal state
}
можно раскрутить в
def foo(this)
{
this.bar
}
Это уже разница в том как мы в коде выражаем отношения логики и данных. В Джаве это делается типами за счет классов и модификаторов доступов всяких, в каком-нибудь хаскеле типами. Смысл тот же и это вторично.
А вот первично - мол процедурная часть джавы - это возможность напрямую или косвенно в обход "логики" засетить стэйт. Через сеттеры и прочее. Когда мы "стэйт системы" достаем для принятия решений во вне какого-то модуля. Когда отсутствует ownership данных