Duvidas ArrayList [RESOLVIDO]

Aih pessoal já pesquisei bastante… mas ainda permance minha duvida e nao consigo fazer minha classe compilar…
Bem tenho um diagrama simples com, cliente,venda,item venda e produto (classico xD).
Vou tentar representar a classe cliente ae, pularei partes por que me interessa o array ok?

CLIENTE


-nmCliente : String
-dtNascimento: String
-sxCliente : String
-vendas : ArrayList


+getNome …
+setNome…
+getNascimento…
+setNascimento…
+getSexo…
+setSexo…
+getVenda() : ArrayList
+setVenda(Cliente cliente) : void


Minha dificuldade é em usar o metodo add do ArrayList para adicionar uma variavel do tipo Cliente sendo a Array
Seria algo do tipo…

public ArrayList getVenda(){ return this.vendas; } public void setVenda(Cliente cliente){ this.vendas.add(????);//nao consigo incluir aqui a variavel cliente }

Alguem pode direcionar este perdido aqui?!
Obrigado

NOTA: a variavel cliente existe na classe Venda… xD

Não entendi… vc tem um array de vendas e quer incluir um cliente nele?

Não é interessante misturar tipos de objetos no list, a não ser que sejam filhos da mesma superClasse.

ArrayList<Venda> -> Tipo genérico é Venda

Você está tentando incluir um tipo Cliente.

Como amigo ai disse, não é interessante incluir objetos de tipos diferentes em uma coleção…

Usando generics você só conseguirá fazer isso se Cliente for um subtipo de Venda… :evil:

Entao galera já tentando responder a todos de uma vez… xD

Esta é um exercicio que recebi via e-mail para desenvolver.Recebi um diagrama com a representação das classes Cliente, Venda, ItemVenda e Produto, e descrevi no topico tal como esta no exercicio, logo nao tenho opçao de escolha entre misturar ou nao os tipos. Ou talves eu simplesmente nao consegui interpretar a representação da classe que recebi…

Quando se tem… +setVenda(Cliente cliente) : void… isso quer mesmo dizer que devo setar um cliente do tipo Cliente na Array, esta correto?!

Isso tambem acontece em outra classe… nao postei porque resolvendo este os outros sao semelhantes… exemplo na classe venda tenho uma Array com o set assim: +setItemVenda(Venda venda, Produto produto)

Entao pessoal a partir disso… sobre o que eu devo saber para poder desenvolver estas classes loucas… =/

Desde já Obrigado pessoal.

Um pouco de bom senso ajuda.

Acho que o diagrama está mal feito.
Eu mudaria tudo.
Se item venda é uma venda de um produto, então oque é uma venda?

Eu mudaria isso para venda ser uma coleção de item venda, e item venda seria o usuário que comproou o produto e o produto comprado.

Realmente tem exercicios que tem modelagem errada. Geralemente quando eu achava uma forma de melhorar a modelagem eu mudava.

Parece que você vai ter que instanciar os objetos dos tipos adequados antes de fazer os “sets” então… tipo assim:

public void setVenda(Cliente cliente) {
    Venda venda = new Venda();
    venda.setCliente(cliente);

    this.vendas.add(venda);
}

No outro caso seria mais ou menos assim:

public void setItemVenda(Venda venda, Produto produto) {
    ItemVenda itemVenda = new ItemVenda();
    itemVenda.setVenda(venda);
    itemVenda.setProduto(produto);

    this.itensVenda.add(itemVenda);
}

Claro que estou deduzindo… Talvez não tenha nada a ver!

É bem por ai mesmo pessoal.
Concordo que este diagrama é insano… ¬¬" rsrsrs…

Recebi a resposta por msn aqui e gostaria da ajuda para entender se nao for abusar de voces.
somente para o caso do Cliente que serve para tudo:

na classe venda como eu havia dito já foi pedido e declarado o cliente do tipo Cliente.
no construtor da classe venda instanciei o cliente:

public Venda(Cliente cliente){ this.cliente = cliente; }
ai que na classe Cliente pude adicionar assim:

public void setVenda(Cliente cliente){ this.vendas.add(new Venda(cliente)); }

Porque foi necessario instanciar na classe Venda?!
Agora onde posso saber mais sobre isso??? /\

Aí Obrigado walacy e luciano@@.

Pelo que eu entendi você tem uma lista de vendas, seu objeto Venda tem um construtor que recebe um cliente.
O metódo setVenda recebe um cliente e adciona uma nova Venda no list. Não tem muito mais oque entender essa parece ser a modelagem que foi proposta. Apesar de não ser a melhor.

Entao tá… Obrigado a todos… xD