Dúvida com projeto usando a orientação a objetos

Bom dia pessoal, tudo bem?

Seguinte, eu tenho algumas dúvidas em um projeto minúsculo que estou fazendo para treinar. É basicamente um sistema de cadastro de clientes, que você acessa com um usuário e senha, que se conecta com um banco de dados. Ok, até ai tudo bem, tenho no banco a tabela usuários e a tabela clientes, tenho no meu projeto três tipos de pacotes “APRESENTAÇÃO(telas do sistema)”, "NEGÓCIO(classes, como a dos clientes) e “PERSISTÊNCIA(arquivos e classes DAO do Banco de Dados.)”.

Pois bem, a primeira tela do Sistema é a de Login que tem a opção de criar o usuário, que quando é feito, um novo objeto do tipo usuário é constituído e inserido no banco de dados. A segunda tela, que é um menu principal do programa, recebe como parâmetro em seu construtor um objeto do tipo “usuario”, para registrar o usuário que fez alterações no programa.

Mas a minha dúvida é a seguinte, tenho formulários para cadastro, exclusão e edição de clientes no banco de dados, e gostaria de saber se as funções que excluem, mostram informações ou editam os clientes, precisam necessariamente receber um objeto do tipo cliente? Já que essa manipulação é feita via sql?

Se minha explicação ficou confusa, posso tentar explicar de uma maneira melhor. Mas o que basicamente gostaria de saber é se as funções dentro da classe “ClientesDao” que está no pacote “Persistência”, precisam necessariamente receber como parâmetro objetos do tipo “cliente”. No momento somente a função de inserir cliente está recebendo.

Agradeço desde já! Abraços.

É melhor, se não for assim você passará todos os fields por parâmetro no seu método DAO?

É muito melhor

public void save(final Cliente cliente);

do que

public void save(final String nome, final String endereco, final String telefone…)

e por aí vai não acha?
Se vc adicionar um novo campo na classe endereco, seu método vai ter que ser alterado, quebrando todas as classes que utiliza ela.

PS:Repare no “final”. Teoricamente no DAO já deveria chegar os dados finais populados, ou seja, não vai alterar nada lá dentro. É uma boa prática 'deixar os objetos imutáveis o máximo possível.

igor_ks, realmente eu não havia pensado neste lado de poder adicionar campos depois, assim acho melhor utilizar objetos mesmo. Obrigado por clarear minha mente! Abraços!