Acerca do ArrayList()

8 respostas
P

void enrollStudent(Student newStudent)
este metodo recebe valores do objecto Student, certo!

private List students;



students = new ArrayList();

esta variavel students do tipo List guarda uma ArrayList(), a variavel students aponta para uma ArrayList criada né?ou n?

hours = new NumberDisplay(24)

minutes = new NumberDisplay(60);

A palavra new significa criar? Utilidade do new?

8 Respostas

peczenyj

new é usado para criar uma nova instancia de um objeto

Cobra c = new Cobra();

Jararaca j = new Jararaca();

Otorrinolaringologista x  = new Medico(Dr rodolfo);

a primeira parte da instrução

‘Cobra c’

diz "cria-se-a uma variavel cujo identificador será apenas a letra c, e é um objeto do tipo Cobra’. ponto.

O que tem em c ? Nada ainda, vc não carregou nada pra essa variavel.

Se c fosse um inteiro, vc faria algo assim:

int c = 1;

ou

int c;



c=1;

mas até que vc dê algum valor para c, ele não tem valor algum (dentro de um método, não estamos falando de atributos de uma classe, estes podem ter um valor default). mesma coisa com objetos;

se vc não fizer, não poderá usar nada da classe Cobra, por exemplo, pois ainda não há nada nesse objeto.

Digamos que cobra tem um método chamado BotaLinguaPraFora() , vc só pode chama-lo quando vc instanciar este método. Vc faz uso da palavra new.

Mas por que não chamar o construtor logo?

Ora, por que nem sempre é obvio que isso deve acontecer.

Cobra c;

try {

c = XXX.getCobraFromAmazonia();

} catch (BixoNojentoException e){

e.printStackTrace();

}

Veja que não queremos uma instancia de Cobra e sim uma que venha pelo metodo getCobraFromAmazonia() da classe XXX – se ocorrer uma exception do tipo BixoNojentoException vc tem que tratar.

P

PAra que quero criar instancia de um objecto?
ex:
Cobra c = new Cobra();
onde ta declarado Cobra? Cobra é um metodo ou objecto?
Criou uma instancia do objecto Corba? Para q? Para se poder usar?
?

J

O nosso amigo deu um bom exemplo, mas eu acho que não ficou bem claro para você. Bem, vou direto a sua pergunta, para que serve o new?

Veja, o exemplo que você mesmo deu.

hours = new NumberDisplay(24) 
minutes = new NumberDisplay(60);

Esse exemplo, eu já o encontrei no livro “Programação Orientada a objetos com Java”.

Esse é o código contido no livro

public class ClockDisplay
{

   private NumberDisplay hours;
   private NumberDisplay minutes;

       public ClockDisplay()
       {
           hours = new NumberDisplay(24);
           minutes = new NumberDisplay(60);
       }

Vou lhe explicar as duas funções da operação NEW:
1º Cria um novo objeto da classe nomeada, no caso NumberDisplay.
2º Executa o construtor dessa classe.

O que acontece no geral é o seguinte. Quando se cria um objeto ClockDisplay, automaticamente serão criados dois objetos NumberDisplay. Lembre-se NumberDisplay é uma classe…Esse é o ponto chave…

Quanto a ArrayList, o que ele está fazendo? Quando você criou o objeto ArrayList, ele será armazenado no campo students. Sendo assim, todo o conteúdo será armazenado em students. Lembre-se a classe ArrayList está disponível no java.util.

Para importá-la use

import java.util.ArrayList;

Espero ter ajudado. Mais dúvidas post !!!

peczenyj

> 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!

J

hehe
Calma peczenyj daqui a pouco você vai fazer um tutorial pro cara!!!

peczenyj

O bom de explicar é que algumas coisas ficam claras até pra nós mesmos.

P
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....
 }

Ok, ai chegaram 478 cobras novas e vc precisa inserir uma a uma no sistema! Logo com:
Cobra c = new Cobra(); Resolveria o problema certo??
O new cria uma instancia de um objecto!!
Obrigado pelas sugestoes.
Sim aprende-se bem por aqui neste forum.
abraço.

P

Pegando no codigo anterior...:

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;
     }
     
     public void newsCobra(String nome, String especie){
     Cobra c=new Cobra();
     System.out.println(c);
    }
    // demais metodos que vc queira implementar....
  }

Pus um metodo novo. a intenção é mostrar no ecra as novas cobras q meto. Está bem? aparece sempre o resultado: Cobra@18bbc5a
e outras vezes Cobra@192c8d9

Que será?

Criado 16 de outubro de 2006
Ultima resposta 17 de out. de 2006
Respostas 8
Participantes 3