Dúvida quanto a onde colocar um método

Olá gus.ehr,

E é isso mesmo, segundo o livro que tô lendo: Object Oriented Software Construction do Bertrand Meyer. Um trecho traduzido pra provar: “Em programação orientada a objetos, nós modelamos os objetos em termos do que eles fazem e não do que eles são.”

Levando em conta também que uma classe deve possuir a lógica de negócio, a qual opera sobre os atributos, eu não posso ter um método em uma classe que não aja sobre os atributos dela, e sim de outra. DDD trata também disso, basta ler este texto: http://www.codeproject.com/Articles/339725/Domain-Driven-Design-Clear-Your-Concepts-Before-Yo

Da forma como eu estava fazendo, estava totalmente procedural, e não guiada pelo domínio - já que estava separando os módulos por funções.

O correto seria eu ter a classe Usuario apenas para casos de autenticação e uma classe Relatorio ou Movimentacao a qual faz a movimentação do relatório - como vocês já apontaram anteriormente.

Pelo que andei lendo, DDD parece ser mais fácil do que parece, única coisa que parece um pouco complicada é a persistência - pelo conceito de repository, que ainda é muito controverso o modo de implementação, ainda.

Vou continuar lendo e postando aqui, ou criar outro tópico se necessário.

Muito obrigado a todos, grande abraço!

Sei que a discussão já esfriou, mas tenho um ponto de vista bem simples sobre sua conclusão $erver. Bem, o que busco modelar é quem detêm o domínio do comportamento sobre o objeto. Aplicando em seu caso, o processo de enviar o relatório apenas começa e termina com o usuário, porém quem detêm o conhecimento sobre todo o ciclo é objeto em questão, no caso o Relatório. Por si só ele não movimenta-se, contudo quem pode saber mais da movimentação (onde está, quem começou, para onde vai) que o próprio. Se houvessem diversos tipos de movimentações, claro, poderíamos ter algum objeto encapsulando todo esse comportamento.

É a minha opinião, se estiver furada, fiquem a vontade.