DÊVIDA SIMPLES SOBRE ORIENTA?ÃO A OBJETO

MARCOS 16/01/2016 20:29:22
#456198
Bom dia,Colegas!
Tenho acompanhado os vídeos que o colega Kerplunk,tem disponibilizado na Internet.
sobre Orientação a Objetos.Os vídeos são excelentes,mas como tenho pouco conhecimento
de OO,estou sempre tendo algumas dúvidas simples:

O caso:

Em um dos vídeos,o colega mostra como criar uma classe e usar os métodos
para fazer o CRUD .Quando vai criar o método ,para pesquisar dados do cliente
ele cria um construtor para classe,onde passa o parâmetro de código para o mesmo.
Neste construtor,ele colocou o código para fazer a consulta,tendo o código como parâmetro.

A dúvida:

Qual o motivo,de se usar o próprio construtor da classe para colocar o código que irá fazer
a consulta ???
Eu não poderia criar um método na classe separado,como os demais (Create,Update,delete) ???
Ou será,que do ponto de vista da OO,existe um motivo para o colega ter optado por usar o construtor
para fazer a consulta???

Agradeço qualquer orientação.
JABA 16/01/2016 20:36:25
#456199
Marcos, quando for assim, dê um exemplo com código (como foi utilizado no video?), senão muitas pessoas ficarão sem saber do que se trata realmente.
KERPLUNK 16/01/2016 22:09:15
#456203
Resposta escolhida
O construtor de classe é o método que é chamado ao instanciar a classe. Tecnicamente, é um método como outro qualquer, podendo então ter diversas assinaturas, mas essa prática não é obrigatória. Nada impede de se criar um método, estático ou não, que faça a consulta no banco de dados e preencha as propriedades com os valores encontrados, mas como esse é um procedimento muito comum, o uso do próprio construtor para isso é vantajoso pela praticidade. Você pode fazer assim:

Cliente cli = new Cliente().Buscar(99);

O método acima, iria buscar no banco de dados o cliente de código [Ô]99[Ô] e preencher as propriedades da instância de [Ô]cli[Ô] com os valores respectivos. A orientação à objeto é justamente ver tudo como objeto mesmo. Portanto um cliente, contém dados de cliente e ao instanciar um cliente é muito comum a necessidade de se buscar um cliente já existente, por isso usar o construtor de classe é uma boa idéia, pois ao instanciar a classe, já trazemos os dados:

Cliente cli = new Cliente(99);

O código acima, faria exatamente o que o outro faria. Você pode inclusive ter as duas coisas coexistindo se problema algum:

Cliente cli = new Cliente(99);
cli = cli.Buscar(45);

No código acima, instanciamos a classe Cliente já buscando o cliente respectivo ao código 99. Mas em seguida, preenchemos novamente a instância com os dados do cliente 45 e à partir dali, tudo se refere ao cliente 45 e não mais ao 99.

Espero ter ajudado a entender. E obrigado por assistir aos vídeos! Não esqueça de deixar seu joinha se gostou e compartilhar com os amigos!
ACCIOLLY 17/01/2016 01:04:01
#456205
é como o KERPLUNK disse. Não é obrigatório. Depende o que você quer fazer. Eu por exemplo gosto de utilizar métodos construtores para definir o comportamento de um Form, quando essa classe pertencer ao Form é claro! rsrsrsr.
Um exemplo básico é um cadastro de clientes. Muitos criam um formulário pra cadastrar, e outro formulário para editar, sendo que podem simplesmente definir esse comportamento no método construtor

public class suaClasse
{
private boolean novoCadastro;

public suaClasse(boolean _novoCadastro)
{
this.novoCadastro = _novoCadastro;
initComponents();
if(this.novoCadastro == false)
{
//isso significa que você quer editar o cadastro então aqui tecnicamente irá realizar uma busca
}
}

}


Acredito que a intenção do KERPLUNK era ensinar as formas de se usar os métodos construtores e não que era uma obrigatoriedade.
Outra coisa interessante é que é possível criar sobrecarga de construtores, ou seja você pode ter mais de um método construtor com comportamentos diferentes. Creio que se o KERPLUNK já não tenha abordado sobre o assunto com certeza ele abordará.
MARCOS 17/01/2016 16:14:13
#456216
Minha dúvida,foi esclarecida.
Obrigado a todos.
Tópico encerrado , respostas não são mais permitidas