DÊVIDA SIMPLES SOBRE ORIENTA?ÃO A OBJETO
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.
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.
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.
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:
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:
O código acima, faria exatamente o que o outro faria. Você pode inclusive ter as duas coisas coexistindo se problema algum:
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!
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!
é 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
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á.
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á.
Minha dúvida,foi esclarecida.
Obrigado a todos.
Obrigado a todos.
Tópico encerrado , respostas não são mais permitidas