Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Orientação objetos

Boa noite galera! Eu estou tentando aplicar os conhecimentos adquiridos no curso Primeiros passos com Java, então crie um novo projeto como se fosse uma Loja gostaria da opinião de vocês, da forma que eu fiz na classe TestaCompra esta correto?

public class Cliente {

    private int codigo;
    private String nome;
    private static int incrementaCodigo = 1;

    Endereco endereco;


    Cliente(){
        this.codigo = Cliente.incrementaCodigo;
        incrementaCodigo++;
    }

    public int getCodigo(){
        return this.codigo;
    }
    public void setCodigo(int codigo){
        this.codigo = codigo;
    }    
    public String getNome(){
        return this.nome;
    }
    public void setNome(String nome){
        this.nome = nome;
    }

    public void mostraDadosCliente(){
        System.out.println("Codigo: " + this.getCodigo());
        System.out.println("Nome: " + this.getNome());
        this.endereco.mostraEndereco();
    }
###############
public class Endereco {

    private int numeroCasa;
    private String nomeRua;
    private String bairro;
    private int cep;

    public int getNumeroCasa(){
        return this.numeroCasa;
    }
    public void setNumeroCasa(int numeroCasa){
        this.numeroCasa = numeroCasa;
    }
    public String getNomeRua(){
        return this.nomeRua;
    }
    public void setNomeRua(String nomeRua){
        this.nomeRua = nomeRua;
    }
    public String getBairro(){
        return this.bairro;
    }
    public void setBairro(String bairro){
        this.bairro = bairro;
    }
    public int getCep(){
        return this.cep;
    }
    public void setCep(int cep){
        this.cep = cep;
    }

    public void mostraEndereco(){
        System.out.println("Nº Casa : " + this.getNumeroCasa());
        System.out.println("Rua: " + this.getNomeRua());
        System.out.println("Bairro: " + this.getBairro());
        System.out.println("Cep: " + this.getCep());
    }
}

###########################

public class Produtos {

    private int codigoProduto;
    private String nome;

        public int getCodigoProduto(){
        return this.codigoProduto;
    }
    public void setCodigoProduto(int codigoProduto){
        this.codigoProduto = codigoProduto;
    }
    public String getNome(){
        return this.nome;
    }
    public void setNome(String nome){
        this.nome = nome;
    }

}
##########################
public class Compra {

    private int numeroCompra;
    private double valor;
    private static int contadorCompra = 1;    
    Cliente cliente;
    private Produtos [] produto;
    int posicao = 0;

    Compra(int posicao){
        produto = new Produtos[posicao];

        this.numeroCompra = Compra.contadorCompra;
        contadorCompra++;

    }

    public int getNumeroCompra(){
        return this.numeroCompra;
    }
    public void setNumeroCompra(int numeroCompra){
        this.numeroCompra = numeroCompra;
    }
    public double getValor(){
        return this.valor;
    }
    public void setValor(double valor){
        this.valor = valor;
    }    


################################
public class TestaCompra {

    public static void main(String[] args){

        Compra compra = new Compra(5);        
        compra.cliente = new Cliente();
        compra.cliente.endereco = new Endereco();

        compra.cliente.getCodigo();
        compra.cliente.setNome("Muriel");
        compra.cliente.setRg("89090890");
        compra.cliente.endereco.setNumeroCasa(34);
        compra.cliente.endereco.setNomeRua("Lourenço Bortolato");
        compra.cliente.endereco.setBairro("Derminio");
        compra.cliente.endereco.setCep(646456456);

        Produtos prod = new Produtos();
        prod.setCodigoProduto(1);
        prod.setNome("Calça Jeans");
        prod.setCor("Azul");
        prod.setValor(230);
        prod.setQuantidade(1);

        compra.validaCompra(compra.cliente, prod);
        compra.cliente.mostraDadosCliente();
        System.out.println("Compra : " + compra.getNumeroCompra());

    }
5 respostas

Tiago, tudo bem? Achei seu código um pouco confuso, por exemplo, não consegui encontrar o método validaCompra da Classe compra.

Oi Mihael!

Este é o método valida compra esta abaixo, na classe TestaCompra a forma que eu fiz esta correta tipo ' compra.cliente.endereco.setNumeroCasa(34);'?

public void validaCompra(Cliente cliente, Produtos produto){

if(numeroCompra >= this.produto.length){

System.out.println("Numero de compras esgotadas para hoje"); } else{

System.out.println("Obrigado pela preferencia"); }

}

Oi tiago vc poderia colocar o construtor da classe cliente como public e o endereço como private

solução!

Oi Thiago, tranquilo? Desculpe a demora para responder. Estou vendo que você está aprendendo java e isso é muito bom, eu também sou um aprendiz no mundo do java. Gostei da sua lógica e gostaria de deixar as minhas sugestões. Primeiro: Lá na Classe Cliente não precisava do setCodigo, pois o construtor utiliza o incrementaCodigo e seta no atributo codigo. Segundo: a Classe Produto deveria ter um construtor para setar um codigo do produto em uma variável codigo - mesma ideia que você teve com Cliente. Terceiro: O trecho compra.cliente.endereco.setNumeroCasa(34) está correto, mas não é fácil de entender na primeira leitura seria mais fácil desta forma: Endereco compra.cliente.endereco = new Endereco(); Endereco enderecoDoCliente = compra.cliente.endereco; Você terá mais linhas para acrescentar, mas seria muito mais fácil de entender na primeira leitura. Essas são minhas ideias. Gostou?

Entendi Mihael! Principalmente a parte do:

Endereco compra.cliente.endereco = new Endereco(); Endereco enderecoDoCliente = compra.cliente.endereco;

com certeza fica mais claro o entendimento, ate para mim fica mais claro de entender, vou utilizar essas dicas nas proximas implementações. Valeu muito obrigado.