É uma questão de esconder informações e abstração de dados. Se você fizer suas operações (mesmo se elas forem puras e referencialmente transparentes) separadas do objeto, então o objeto deve tornar sua representação pública para as operações. Uma vez que ocultar a representação é uma característica importante (ou, de acordo com algumas definições, mesmo a somente ) da POO, o objeto deixa de ser um objeto e se torna basicamente uma estrutura.
Considerando que, com métodos que pertencem ao objeto, o método tem acesso privilegiado à representação do objeto e pode, assim, fazer uso da representação em seu cálculo, sem que o objeto vaze seus internos para outras partes do sistema. / p>
Veja Sobre a compreensão da abstração de dados, revisitada por < a href="http://WCook.BlogSpot.Com/"> William R. Cook para a distinção entre abstração de dados com tipos de dados abstratos e abstração de dados orientada a objetos. O artigo também contém um exemplo de abstração de dados orientada a objeto em Java que usa apenas métodos puros e referencialmente transparentes. De fato, um ponto importante que o autor faz nesse artigo é que a OO e a mutabilidade são ortogonais.