объект в ООП это сущность имеющая состояние. с объектом общение происходит путем пересылки сообщений. данные внутри объекта максимально сокрыты от окружающего мира. если у тебя поля иммутабельные с публичным геттером, у тебя от понятия объекта остается только возможность вызова на нем методов (посылка сообщений), что фактически является сахарком над вызовом чистой функции над рекордом.
я такое мутабельное "оопэ" могу в сишке сделать, там тоже будет пересылка сообщений, рекорды в *vtable, будет оопэ?