[Duvida]Sistema de busca

Olá pessoal.

Bom , minha duvida é a seguinte: estou tentando desenvolver um sistema de vendas, gostaria de saber como será o metódo de buscar informações no sistema com relação a classes.
Exemplo: Um sistema de vendas possui as classes: produto, cliente, venda, etc.

Com relação a busca , ela será uma nova classe ou será um metodo dos objetos a serem pesquisados ?

Desculpem se a pergunta não esá muito clara.

[quote]Olá pessoal.
Bom , minha duvida é a seguinte: estou tentando desenvolver um sistema de vendas, gostaria de saber como será o metódo de buscar informações no sistema com relação a classes.
Exemplo: Um sistema de vendas possui as classes: produto, cliente, venda, etc.
Com relação a busca , ela será uma nova classe ou será um metodo dos objetos a serem pesquisados ?
Desculpem se a pergunta não esá muito clara.
[/quote]

gostaria de saber como será o metódo de buscar informações no sistema com relação a classes.
Vai depender basicamente de você.

Se sua dúvida é se é válido criar uma classe pra representar essa consulta, a minha resposta (pessoal) Sim! E pode até mesmo ser um intercambio entre seus diversos objetos.

Uma dica fundamental, que não poderia de ser dada é: dê uma olhada no Framework (muito bom) Lucene http://lucene.apache.org/java/docs/

Opa, vou dar uma olhada sim.

Porem mais uma duvida, com relação a essa modelagem: seria possivel e estaria correto definir como metodo da classe Produto, Buscar() ?

[quote=Bruno Ckc]Opa, vou dar uma olhada sim.
Porem mais uma duvida, com relação a essa modelagem: seria possivel e estaria correto definir como metodo da classe Produto, Buscar() ?

[/quote]
seria possivel e estaria correto
Possível é e correto depende … Bruno Ckc não pense tudo em termos de correto e errado (software ou os conceitos envolvidos para criação do mesmo não são estáticos), senão você acaba criando um modelo pra tudo ou repúdio a tudo.
Mas tentando responder sua pergunta…
Normalmente nós desenvolvedores gostamos de dividir tudo, ou quase…, em partes menores e mais gerenciavéis (flexiveis…)
E alguns (eu também) separam o que é relativo a operações em repositorios (banco de dados, xml, ram, file, rede…) e operações locais (métodos da classe em si, da responsabilidade dela…), logo muito desses comportamentos .Inserir() .Alterar() .Excluir() .Buscar() são movidos para outra classe…

Há vários padrões (não tome isso como o totalitarismo do desenvolvimento) para cuidar dessa divisão entre entidade e as operações realizadas em um banco de dados, indo desde o DAO até mesmo aos Repositorios… acho que deixei mais confuso.

Eu não colocaria o método buscar na classe produto, se você fosse seguir o jeitão DDD de fazer sistema provavelmente iria criar um serviço que faria essa pesquisa (aqui vale ressaltar que você pode deixar seu sistema mais inteligente, salvando o termo pesquisado, a hora… blá blá… pra depois analisar…) e por ai vai…
A verdade é que essa pergunta não tem uma resposta simples ou fácil.
ps: outra pergunta que deve ser respondida, a busca é necessariamente de produtos?
ps: nada acima é verdade absoluta ou aplicável a qualquer situação.
ps: o último ps, continuo pensando que desenvolver é mais arte do que engenharia, portanto dificilmente terá uma resposta correta, há sempre caminhos. (caminhos=leia sobre o assunto, opiniões contrárias, justificativas, entenda, tente não usar só por que está na moda… )

Vc tem razão , a busca não vai ser só de produtos , então é mais pratico e funcional fazer uma classe.

E pelo que entendi agora , o mesmo vale para outros metodos.

Vou repensar sobre isso e fazer um novo desenvolvimento.

Obrigado pelo esclarecemento.

Uma abordagem que acho interessante é a criação de um serviço de busca que receba um objeto Specification e retorne uma estrutura com os resultados da busca, não sendo estes necessariamente objetos de domínio visto que dependendo das busca você cruza diversos dados de diversos objetos e retornar isso numa estrutura de domínio pode prejudicar seriamente sua performance.

Link para o padrão Specification: