Duvida de casting

5 respostas
F

Ola amigos! Seguinte, tenho 2 classes: AdmEntregas e Entregas

import java.util.*; 

public class AdmEntregas
{

   private ArrayList<Entrega> listaEntregas; 


   public AdmEntregas()
   { 
      listaEntregas = new ArrayList<Entrega>();     
   } 


	//adiciona entregas na lista	
   public void novaEntrega (Entrega ent)
   {      
      listaEntregas.add(ent);       
   } 


	//remove entrega da lista apos entrega 
   public void darBaixaEntrega (int id)
   {  
      int posicao = busca(id);
      if(posicao >= 0)
      {
         listaEntregas.remove(id);
      }  
   }
	
	//retorna posicao de uma entrega por seu identificador;
	//se eu nao encontrar retorno -1
   public int busca(int idEntrega)
   {
      int i = 0;
      int posicao = -1;
      Entrega entrega;
      int id;
   	
      for(i = 0; i < listaEntregas.size(); i++)
      {
         entrega = listaEntregas.get(i);
         id = entrega.getIdentificador();
      	
         if(id == idEntrega)
         {
            posicao = i;
            break;//sai do loop se achar;
         }
      }
      return posicao;
   }
	
	//caucula o preco de quem nao tem preco,ou seja;
	//o preco vale -1, para caucular use a formula
	//10*peso*prioridade; 
   public void calcularPreços ()
   { 
      for(Entrega entrega: listaEntregas)
      {
         if(entrega.getPreco() == -1)
         {
            entrega.setPreco(10*entrega.getPeso()*entrega.getPrioridade());
         }
      }
   
   }
	
	//imprimir todas as entregas com valor maior que R$ 1000;
   public void listarEntregasCaras ()
   { 
      Iterator<Entrega> lista = listaEntregas.iterator();
      Entrega entrega;
   	
      while(lista.hasNext())
      {
         entrega = lista.next();
      }      
   
   } 
   
}
import java.util.*; 

   public class Entrega{ 
   
      private int identificador; 
   
      private String origem; 
   
      private String destino; 
   
      private String conteudo; 
   
      private int prioridade; // 1 =  a mais baixa 
   
      private double peso;    //em kg 
   
      private double preco; 
   
                         
   
   //construtor da classe Entrega 
   
      public Entrega(int identificador, String origem, String destino, String 
      
      conteudo, int prioridade, double peso){ 
      
         this.identificador = identificador; 
      
         this.origem        = origem; 
      
         this.destino       = destino; 
      
         this.conteudo      = conteudo; 
      
         this.prioridade    = prioridade; 
      
         this.peso          = peso; 
      
         this.preco         = -1; //o valor -1 indica que o preco nao foi calculado
      
      } 
   
      public int getIdentificador(){ 
      
         return identificador; 
      
      } 
   
      public String getOrigem(){ 
      
         return origem; 
      
      } 
   
      public String getDestino(){ 
      
         return destino; 
      
      } 
   
      public String getConteudo(){ 
      
         return conteudo; 
      
      } 
   
      public int getPrioridade(){ 
      
         return prioridade; 
      
      } 
   
      public double getPeso(){ 
      
         return peso; 
      
      } 
   
      public double getPreco(){ 
      
         return preco; 
      
      } 
   
      public void setPreco(double p){ 
      
         this.preco = p; 
      
      } 
   
   }

main para testar tudo

import javax.swing.*;

   public class TestaEntrega
   {
      public static void main (String[] args)
      {
      
         
         int id = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o identificador do objeto"));
         String orig = JOptionPane.showInputDialog(null, "Digite a origem do objeto");
         String dest = JOptionPane.showInputDialog(null, "Digite o destino do objeto");
         String cont = JOptionPane.showInputDialog(null, "Digite o conteudo do objeto");
         int prior = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a prioridade do objeto"));
         double peso = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o peso do objeto"));
      
         Entrega e1 = new Entrega(id, orig, dest, cont, prior, peso);
         
         AdmEntregas a1 = new AdmEntregas();
         
       int identEnt = JOptionPane.showInputDialog(null, "Digite o N.o do identificador do objeto para adiciona-lo");
       a1.novaEntrega(Entrega //variavel);

                 
        //JOptionPane.showMessageDialog(null, ""+e1.getIdentificador());
         
         
                
      
      
      }
   
   
   }

A duvida eh a seguinte...quero testar o metodo novaEntrega da classe AdmEntrega, porem na hora de passar a variavel a qual eu armazenei o numero da entrega, da erro, pois o parametro deste metodo so aceita dados do tipo Entrega...
Tambem tentei passar em vez de so o numero da entrega por parametro, passar todo o objeto entrega que criei, mas deu erro tambem...como posso fazer isso pessoal?

5 Respostas

gpd38

O que vc fez está certo e não precisa fazer confusão.

A sua classe ENTREGA cria somente um objeto que deverá ser passado para sua outra classe ADMENTREGAS.

Para testar sua classe ENTREGA, basta você inserir os dados que ela pede e enviar pelo construtor. Mostre os dados na tela com o System.out.println(""); para você verificar o funcionamento correto.

Para testar a sua classe ADMENTREGAS, basta você no main criar uma estrutura de repetição a seu gosto, (do{}while(); ou while(){} ou for(){}) e inserir varias entregas. Depois chame o metodo listentregas para verificar se tudo o que vc digitou esta dentro do vetor.

Acredito que seja somente isso.

Qualquer outra dúvida é so perguntar.

F

Obrigado amigo. Mas no caso, e se eu criar o objeto na mao igual foi criado e quiser adicionar ele na mao para o metodo novaEntrega, como posso fazer? Um amigo meu falou para usar esses 2 comandos

objEntrega.setId( identEnt );
AdmEntregas.add( objEntrega );

mas nao saquei muito bem ainda

gpd38

A ideia do seu amigo está correta, porém na sua classe ENTREGA não irá funcionar, porque vc so possui metodos GET. O seu metodo SET meio que esta imbutido nos parametros de seu contrutor

Normalmente as classes basicas de dados contem algumas informações uteis dos objetos, neste caso sua classe ENTREGA. Ela manipula um único objeto, por isso a sua classe admEntrega precisou ser criada, para pode manipular TODOS os objetos que vc precisa.

Você pode criar o objeto da classe ENTREGA atraves de um for ou na mão como vc mesmo disse.

// Criar as variaveis STRING e INTEIRAS que vc precisar
Entrega e;
AdmEntregas adm = new AdmEntregas();
for(int i=0; i< 10; i++){
// variavel 1 = .....;
// variavel 2 = .....;
// variavel 2 = .....;
// . . . . . . . 
e = new Entrega(variavel1, variavel2, variavel3, . . . .);
adm.add(e);
}

Seria algo parecido com isso

F
gpd38:
A ideia do seu amigo está correta, porém na sua classe ENTREGA não irá funcionar, porque vc so possui metodos GET. O seu metodo SET meio que esta imbutido nos parametros de seu contrutor

Normalmente as classes basicas de dados contem algumas informações uteis dos objetos, neste caso sua classe ENTREGA. Ela manipula um único objeto, por isso a sua classe admEntrega precisou ser criada, para pode manipular TODOS os objetos que vc precisa.

Você pode criar o objeto da classe ENTREGA atraves de um for ou na mão como vc mesmo disse.

// Criar as variaveis STRING e INTEIRAS que vc precisar
Entrega e;
AdmEntregas adm = new AdmEntregas();
for(int i=0; i< 10; i++){
// variavel 1 = .....;
// variavel 2 = .....;
// variavel 2 = .....;
// . . . . . . . 
e = new Entrega(variavel1, variavel2, variavel3, . . . .);
adm.add(e);
}
Seria algo parecido com isso

Em vez de adm.add(e) que a proposito nao funcinou, eu deixei assim:

int id = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o identificador do objeto"));
      String orig = JOptionPane.showInputDialog(null, "Digite a origem do objeto");
      String dest = JOptionPane.showInputDialog(null, "Digite o destino do objeto");
      String cont = JOptionPane.showInputDialog(null, "Digite o conteudo do objeto");
      int prior = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a prioridade do objeto"));
      double peso = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o peso do objeto"));
   
   //    Entrega e1 = new Entrega(id, orig, dest, cont, prior, peso);
      
      
     // Criar as variaveis STRING e INTEIRAS que vc precisar  
      Entrega e1;  
      AdmEntregas adm = new AdmEntregas();  
      e1 = new Entrega(id, orig, dest, cont, prior, peso);  
      adm.novaEntrega(e1);
gpd38
package test;

import javax.swing.*;

public class TestaEntrega {

    public static void main(String[] args) {

        int parada = 0;
        do {
            int id = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o identificador do objeto"));
            String orig = JOptionPane.showInputDialog(null, "Digite a origem do objeto");
            String dest = JOptionPane.showInputDialog(null, "Digite o destino do objeto");
            String cont = JOptionPane.showInputDialog(null, "Digite o conteudo do objeto");
            int prior = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a prioridade do objeto"));
            double peso = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o peso do objeto"));


            Entrega e1 = new Entrega(id, orig, dest, cont, prior, peso);

            AdmEntregas a1 = new AdmEntregas();

            int identEnt = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o N.o do identificador do objeto para adiciona-lo"));
            a1.novaEntrega(e1);

            parada++;
        } while (parada < 3);
    }
}

Algo assim para reptir que eu disse.

Criado 18 de setembro de 2013
Ultima resposta 19 de set. de 2013
Respostas 5
Participantes 2