Ajuda nesse projeto bem simples

Boa noite.

Estou aqui fazendo uns exercícios de UML e implementando os mesmos, e estou com uma dúvida que é a seguinte.

Basicamente o problema é o seguinte:

Meu projeto tem 3 classes: “Produto”, “ItemComanda” e “ComandaEletronica”

A classe Produto tem os seguintes atributos:

  • nome
  • descrição
  • preço

Obs: os métodos são os getters e setters dos atributos acima (atributos são todos private)

A classe ItemComanda tem como atributos (todos private):

  • referência para Produto
  • quantidade

Portanto eu defini como uma composição a relação entre essas duas classes.

Minha dúvida é a seguinte, quanto implemento o ItemComanda e quero imprimir os atributos de Produto, gostaria de saber se é a prática correta a que eu estou fazendo:

Como a referência ao Produto é privado (private Produto produto), eu tenho que criar novos getters and setter como uma interface pública para acessar métodos que eu já escrevi na classe produto ? Exemplo no ItemComanda:

public String getDescricao() { // getter na classe ItemComanda
        return produto.getDescricao(); // chamando o getter da classe Produto
    }

Isso está correto, é assim mesmo ? Fiz isso uma vez que a classe ComandaEletrônica tem um ArrayList de ItemComanda que precisa acessar alguns atributos de Produto.

Edit: Outra dúvida.

A minha classe ComandaEletronica tem um ArrayList dos itens da comanda (classe Item Comanda), e tenho um método para fazer o cálculo do total:

Dúvida na hora de percorrer o ArrayList:

Estou com problema na parte iterator.next().getPreco(), ou seja, como faço para pegar atributos de um objeto que faz parte de um ArrayList ? Porque na instrução acima ele pega um atributo mais pula para o próximo elemento.

Queria fazer: getPreço() * getQuantidade()

public double calculaTotal(){
        double valorTotal = 0;
        Iterator<ItemComanda> iterator = itens.iterator();
        while(iterator.hasNext()){
          valorTotal += iterator.next().getPreco()  
        }
        return valorTotal;
    }

Dica: use o comando de texto pré-formatado (Ctrl + Shift + C) para formatar seu código-fonte, assim seu texto fica mais legível.

Dúvida 1:

  • o ideal é que sua classe ItemComanda retorne uma referência para o Produto, daí você teria o seguinte código:

ItemComanda item = new ItemComanda(new Produto("Cerveja", 6.50)); System.out.println("Descrição: " + item.getProduto().getDescricao());

Dúvida 2:

  • utilize o loop for-enhanced:

`
List items = new ArrayList();

double total = 0.0.
for(ItemComanda item : items){
    total += item.getQuantidade() * item.getProduto().getPreco()
}

`

Vou tentar fazer o que você falou, e vou editar o código para ficar melhor

Obrigado pela atenção !