> PAra que quero criar instancia de um objecto?
para programar em java
> ex:
> Cobra c = new Cobra();
> onde ta declarado Cobra? Cobra é um metodo ou objecto?
> Criou uma instancia do objecto Cobra? Para q? Para se poder usar?
1) para vc usar variaveis (ou atributos) vc precisa declarar a mesma antes do seu uso. isto se deve ao fato do java não criar variaveis dinâmicamente.
2) alem de um nome (uma sequencia de caracteres unica, que não pode ser nenhuma das palavras reservadas do java e seguir outras regras) vc deve informar o tipo da variavel. java é uma linguagem tipada.
3) java possui tipos primitivos, isto é, tipos de variaveis que não são objetos. quando vc declara uma variavel desse tipo, vc pode associar a ela um valor dentro permitido a ela.
char c = 'A';
int i = 90;
fload x = -4.6;
4) quando vc lida com objetos, uma instância é uma copia util do objeto. imagine que vc possui uma classe chamada Cobra. vc definiu ela como sendo uma classe simplezinha que só serve de exemplo. quando vc fizer
Cobra c = new Cobra();
a variavel 'c' passa a ser uma referencia à uma instancia da classe cobra.
Digamos que vc trabalha no butantã e tem que lidar com o cadastro de 7029875038945 tipos de cobra. Vc pode ter o seguinte codigo
public class Cobra{
// atributos
private String nome;
private String especie;
// construtor padrão
public Cobra(){
this.nome = "DESCONHECIDA";
this.especie = "INDEFINIDA"
}
// construtor com 2 argumentos
public Cobra(String nome, String especie){
this.nome=nome;
this.especie = especie;
}
// demais metodos que vc queira implementar....
}
Parece bom, não?
Ok, ai chegaram 478 cobras novas e vc precisa inserir uma a uma no sistema. Pra que vai servir uma instância de uma classe, ou melhor, pra que vai servir uma instância da classe Cobra ? Porque eu posso pensar em todo um sistema orientado a trabalhar com um objeto com as propriedades e métodos de uma cobra!
posso ter metodos assim:
Cobra c; // crio uma variavel
c = Cadastro.lerDados(); // leio as informacoes de algum lugar
ConexaoDataBase.save(c); // salvo em um banco de dados
em outro ponto:
Cobra c2; // crio uma variavel
c2 = Pesquisa.lerDados(); // pesquiso pela identificação de uma cobra
Tela.mostra(c2); // mostro na tela os seus dados
Bom, mas por que RAIOS eu tenho uma classe cobra? Por que eu analisei o meu problema e vi que podia encapsular os dados que lidam com a informação 'cobra' em uma classe.
Eu posso criar uma classe Animal, e fazer Cobra extender Animal (ou implementar)! Cobra pode ser uma especialização da classe Animal...
Nesse caso, se os meus metodos trabalharem com dados do tipo Animal, eu posso trabalhar com um programa mais 'generico', tipo, se um dia eu tiver que lidar com Aranhas, Escorpioes, etc, eu terei que criar classes extendendo estes bixos e alterar apenas alguns métodos.
Se vc lidar apenas com programação estruturada, vai ver que beleza que é fazer este tipo de alteração... vai reescrever muuuita coisa, senão todo o programa.
Os exemplos são cretinos mas temos que variar um pouco.
Pense numa classe Filme e uma VideoLocadora!
Vc pode ter filmes, depois cds de musica, cartuchos de video-game... muitas coisas ALUGAVEIS! Vc tem um programa que lida com coisas alugaveis, não apenas 'filmes'.
Liberte a sua mente, aglomere as coisas em grupos e veja como elas funcionam. Vc é uma instancia da classe Pessoa com os seus atributos, e eu sou uma instancia diferente. Estou usando o metodo setRespostaOnJavaForum() e vc o metodo lerRespostaFromForum()
e tem muita coisa debaixo desse angu!