Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leonardo Silva_109261

Modificando atributos da classe

Recommended Posts

E aí galera, na paz com vocês?

 

Seguinte meus amigos, estou começando a entrar para o mundo do Java Peguei um exercicío bem simples porém estou com alguns problemas e acredito que não consigo enxerga-lo por falta de conhecimento da linguagem.

 

Bom o Java não reclama de erro, porém...

 

Eu tenho três classes Produto, Venda e Aplicação.

 

A Classe produto é responsável por conter as informações do produto é obvio hahah'

 

A Classe venda é responsável por iniciar um novo produto e é aqui que está meu problema.

 

A Classe aplicação inicia venda e imprimi produto.

 

O problema é que não consigo alterar os atributos da classe Produto atráves da classe venda, código das três abaixo:

 

 

 

Classe Produto:

 

 

package com.targettrust.java;

/**
 * Classe para representar um produto da loja, todo produto deve conter:
 *  - Código
 *  - Descrição
 *  - Preço
 *  - Status de Venda S/N
 *  - Desconto S/N
 *  
 *  Data de Criação: 28/10/2014
 * @author Leonardo Silva
 */
public class Produto {

    private String codigo = "02";
    private String descricao;
    private float preco;
    private boolean emVenda;
    private float desconto;
    
    /**
     * Método setCódigo()s
     * @param nvCodigo = Valor do novo código de referência ao produto     *
     */
    
    public void setCodigo(String nvCodigo){
        
        codigo = nvCodigo;
        
    }
    
    /**
     * Método getCodigo()
     * @return = Retorno o valor do código de referência ao produto.
     */
    
    public String getCodigo(){
        
        return codigo;
        
    }
    
    /**
     * Metódo setDescricao()
     * @param nvDescricao = Valor da nova descrição do produto
     */
    
    public void setDescricao(String nvDescricao){
        
        descricao = nvDescricao;
        
    }
    
    /**
     * Método getDescricao()
     * @return = Retorna o valor da descrição do Produto
     */
    
    public String getDescricao(){
        
        return descricao;
        
    }
    
    /**
     * Método setPreco()
     * @param nvPreco = Valor do produto
     */
    
    public void setPreco(float nvPreco){
        
        preco = nvPreco;
        
    }
    
    /**
     * Método getPreco()
     * @return = Retorna o valor do Produto
     */
    
    public Float getPreco(){
        
        return preco;
        
    }
    
    /**
     * Método setVenda()
     * @param stVenda = Retorna se o produto vai está ou não disponivél para venda
     */
    
    public void setVenda(Boolean stVenda){
        
        emVenda = stVenda;
        
    }
    
    /**
     * Método getVenda()
     * @return = Retorna se o Produto está disponivél ou não para compra.
     */
    
    public Boolean getVenda(){
        
        return emVenda;
        
    }
    
    /**
     * Método vlDesconto
     * @param vlDesconto = Recuperar o valor do desconto a ser aplicado no Produto.
     */
    
    public void setDesconto(Float vlDesconto){
        
        desconto = vlDesconto;
        
    }
    
    /**
     * Método getDesconto()
     * @return = Retorna o valor do desconto em cima do preço desse Produto.
     */
    
    public float getDesconto(){
    
        return desconto;
        
    }
    
}
 

 

Classe Venda:

 

 

package com.targettrust.venda;

import com.targettrust.java.Produto;

/**
 * Classe criada para inserir novo Produto
 * Data de Criação: 28/10/2014
 * @author Leonardo Silva
 *
 */
public class Venda{

    private int quantidade;
    private Produto prodd = new Produto();
    
    /**
     * Método setQuantidade()
     * @param nvQuantidade = Recebe o número de produtos.
     */
    
    public void setQuantidade(int nvQuantidade){
        
        quantidade = nvQuantidade;
        
    }
    
    /**
     * Método getQuantidade()
     * @return = Retorna a quantidade de Produtos.
     */
    
    public int getQuantidade(){
        
        return quantidade;
        
    }
    
    /**
     * Método setProduto()
     * @param nvCod  = Novo código do Produto
     * @param nvDesc = Nova descrição do Produto
     * @param nvPrec = Novo preço para o Produto
     * @param nvStat = Novo status do Produto
     * @param nvDest = Novo valor para desconto do produto
     */
    
     public void setProduto(String nvCod, String nvDesc, Float nvPrec, Boolean nvStat, Float nvDest){
        
         prodd.setCodigo(nvCod);
         prodd.setDescricao(nvDesc);
         prodd.setPreco(nvPrec);
         prodd.setVenda(nvStat);
         prodd.setDesconto(nvDest);
        
     }
    
}

 

Classe aplicação:

 

package com.targettrust.java;

import com.targettrust.venda.*;

/**
 * Classe aplicação responsável por linkar as classes Venda() e Produto.
 * Data de Criação: 28/10/2014
 * @author Leonardo Silva
 *
 */
public class Aplicacao {

    public static void main(String[] args){
        
        Venda prod = new Venda();
        
        prod.setProduto("01", "Produto 01", 3.99f, true, 0.00f);
        
        
        // Imprimindo valores
        
        Produto imprimir = new Produto();
        
        System.out.println("Código: "+ imprimir.getCodigo());
        System.out.println("Descrição: "+ imprimir.getDescricao());
        System.out.println("Preço: R$ "+ imprimir.getPreco()+" reais.");
        
        if(imprimir.getVenda() == true){
            
            System.out.println("Disponibilidade para Venda: Em estoque.");
            
        } else {
            
            System.out.println("Disponibilidade para Venda: Ítem egostado!");
            
        }
        
        System.out.println("Desconto de R$ "+imprimir.getDesconto()+" reais.");
        
    }
    
}

 

Quando na classe aplicação eu faço um extends de Produto e altero diretamente na classe Produto funciona:

 

Lembrando que imprimir é a variável que está referenciando Produto:

 

 

 
Produto imprimir = new Produto();
 

 

 

imprimir.setCodigo("01");
imprimir.setDescricao("Produto 01");
imprimir.setPreco(3.99f);
imprimir.setVenda(true);
imprimir.setDesconto(00.00f);

 

Mas se eu chamo vendas e passos os parâmetros não vai:

 

 

 
Venda prod = new Venda();
 
prod.setProduto("01", "Produto 01", 3.99f, true, 0.00f);
 

 

Alguém poderia me dar uma "helpzinha" aí, agradecido.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que você deveria ter feito assim:

Produto imprimir = prod.getProduto();
System.out.println("Código: "+ imprimir.getCodigo());
.... 

E na classe Venda fazer:

public Produto getProduto(){
    return prodd;
}


Compartilhar este post


Link para o post
Compartilhar em outros sites

ExtremsX, tranquilo?

 

Po mas dessa forma já funciona, o que não funciona é usar as três classes.

 

Produto - Responsável por conter as informações.

Vendas - Classe aonde deve ser iniciado a passagem de informações para a classe Produto.

Imprimir - Classe aonde eu imprimo as informações setadas pela classe Venda em Produto.

 

Eu consigo fazer usando Produto e Imprimir, já usando as três não vai e o Java também não da erro.

 

Vida de iniciante é uma m*** kkkkkkkk'

 

Mas valeu pela ajuda meu amigo, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, to vendo uma variavel imprimir aqui:

Produto imprimir = new Produto();

Estou vendo você passar parâmetro para ele em lugar nenhum, como você quer da um getCodigo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá vamos lá:

 

 

 
Produto imprimir = new Produto() ;
 

 

Se eu fizer dessa forma, funciona tanto dando set quanto o get, porém eu quero através da classe Venda:

 

 

Venda prod = new Venda();

 

Fazer o set, entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

em que parte do codigo você ta fazendo pela classe Produto? você só está dando um get ali:

Produto imprimir = new Produto();
System.out.println("Código: "+ imprimir.getCodigo());

Aqui você instancia o Produto e já da um get, não tem como isso ta funcionando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Classe venda:

 

package com.targettrust.java;

import com.targettrust.venda.*;

/**
 * Classe aplicação responsável por linkar as classes Venda() e Produto.
 * Data de Criação: 28/10/2014
 * @author Leonardo Silva
 *
 */
public class Aplicacao {

    public static void main(String[] args){
        
        Venda prod = new Venda();
        
        prod.setProduto("01", "Produto 01", 3.99f, true, 0.00f);
        
        
        // Imprimindo valores
        
        Produto imprimir = new Produto();
        
        System.out.println("Código: "+ imprimir.getCodigo());
        System.out.println("Descrição: "+ imprimir.getDescricao());
        System.out.println("Preço: R$ "+ imprimir.getPreco()+" reais.");
        
        if(imprimir.getVenda() == true){
            
            System.out.println("Disponibilidade para Venda: Em estoque.");
            
        } else {
            
            System.out.println("Disponibilidade para Venda: Ítem egostado!");
            
        }
        
        System.out.println("Desconto de R$ "+imprimir.getDesconto()+" reais.");
        
    }
    
}

 

Chamada da classe para setar valores não funciona:

 

 

Venda prod = new Venda();
prod.setProduto("01", "Produto 01", 3.99f, true, 0.00f);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, se você fizer como eu disse aqui:

Acredito que você deveria ter feito assim:

Produto imprimir = prod.getProduto();
System.out.println("Código: "+ imprimir.getCodigo());
.... 

E na classe Venda fazer:

public Produto getProduto(){
    return prodd;
}


 

 

Você vai poder fazer isso:

Venda prod = new Venda();
prod.getProduto().setNome("Produto 01");

Ou você pode fazer:

Venda prod = new Venda();
prod.setProduto("01", "Produto 01", 3.99f, true, 0.00f);

Se você fizer isso:

public class Venda{
    public void setProduto(String cod, String nome, ...) {        this.prodd.setCodigo(cod);        this.prodd.setNome(nome);
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.