Array e instancias

3 respostas
gugabarc

Minha duvida é a seguinte:

Existe uma classe Produto, onde tem as características básicas de um produto (codigo, nome, valor).

public class Produto{
   private double valor;
   private String nome;
   private int codigo;
....

Existe uma classe ListaProdutos, que cria uma ArrayList de Produto, e lá tem os métodos cadastra, remove, organiza, busca (que retorna um Produto através do código), toString.

public class ListaProdutos{
   ArrayList<Produto> lista;

   public ListaProdutos(){
      lista = new ArrayList<Produto>():
   }

   public Produto busca(int codigo){
      Produto prod;
      for(Produto p : lista){
           if (p.getCodigo() == codigo) return p;
      } else return null;
....

Existe uma classe InterfaceProduto, onde o usuário entra com os dados do produto, aperta em OK, é gerado um novo Produto. Até aí, tudo bem. Preciso armazenar esse Produto em algum lugar, então precisaria instânciar a classe ListaProdutos aqui para armazenar esse e os outros produtos cadastrados.

public class InterfaceProduto extends JFrame{
   
    ListaProdutos p;
    ....

    public InterfaceProduto(){
         super("");
         ListaProdutos lista = new ListaProdutos();
         ....
    }

    //método com evento onde é instanciado um Produto e armazenado
        ...
        Produto p = new Produto (nome, valor);
        lista.add(p);
     }

Daí tem a classe Locacao, onde é armazenado uma referencia de ListaProdutosLocados (essa é outra classe que criei para armazenar só os produtos que vão ser locados por algum cliente). A classe Locacao precisa armazenar um cliente (o que está fazendo a locação), e uma lista de produtos que ele irá locar. Só que é necessário primeiro pesquisar se os produtos existem, ou seja, preciso usar aquela instância de ListaProdutos feita na classe InterfaceProduto, que é onde estão os produtos cadastrados. Como faço isso? A mesma coisa ocorre com os Clientes, armazenados em InterfaceCliente.

3 Respostas

thundercas

Não entendi bem exatamente onde é sua dúvida, mas para saber se o produto existe ou não, não basta verificar se o método BUSCA retorna NULL ou não??

Andre_Brito

Você tem que bolar uma maneira de passar o ListaProdutos (com todos os produtos existentes) para a classe Locacao.
Eu faria isso passando o listaProdutos por parâmetro. Aí você pode comparar os códigos de cada um ou usar o método contains(), para ver se existe aquele produto.

Na verdade, não faz muito sentido: existe um produto que o cliente posso locar sem que esse produto exista? O correto seria fornecer a lista de produtos disponíveis e retirar dessa lista um produto que o cliente vai locar. Enfim… existem diversas maneiras de fazer isso, mas passar por parâmetro e usar o contains() é uma das respostas. Eu usaria refactoring e faria essa de disponibilizar a lista de produtos existentes (que é o que acontece na maioria das lojas, supermercados e videolocadoras: você disponibiliza os produtos e não o contrário). Se você quiser fazer consulta, ele pode digitar as coisas pra consultar… aí isso faria sentido, mas na hora de locar o produto, eu acredito que não.

gugabarc

dedejava:
Você tem que bolar uma maneira de passar o ListaProdutos (com todos os produtos existentes) para a classe Locacao.
Eu faria isso passando o listaProdutos por parâmetro. Aí você pode comparar os códigos de cada um ou usar o método contains(), para ver se existe aquele produto.

Na verdade, não faz muito sentido: existe um produto que o cliente posso locar sem que esse produto exista? O correto seria fornecer a lista de produtos disponíveis e retirar dessa lista um produto que o cliente vai locar. Enfim… existem diversas maneiras de fazer isso, mas passar por parâmetro e usar o contains() é uma das respostas. Eu usaria refactoring e faria essa de disponibilizar a lista de produtos existentes (que é o que acontece na maioria das lojas, supermercados e videolocadoras: você disponibiliza os produtos e não o contrário). Se você quiser fazer consulta, ele pode digitar as coisas pra consultar… aí isso faria sentido, mas na hora de locar o produto, eu acredito que não.

n entendi bem, to iniciando em java e mais ainda em GUI…

ao locar um produto, o programa precisa ver esse produto está disponível, validar aquela locação, entende? Eu sei que é improvavel alguem querer locar um produto ja locado, mas tb é improvável que alguem passe uma letra em um cpf, mas tm gente q faz isso, e temos q tratar esses eventuais problemas :smiley:

Criado 2 de maio de 2008
Ultima resposta 2 de mai. de 2008
Respostas 3
Participantes 3