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

Bebida

Fiz algumas classes relacionadas a Bebida e queria saber se esta certo, pois preciso entender o conceito de polimorfismo bem para prosseguir com Java.

package bebida;

public class Pepsi extends Bebida{

}
package bebida;

public class Bebida {

    private String tipo;
    private String marca;
    private String sabor;
    private float preco;
    private float quantidade;
    private float quantidadeBebida;

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public String getMarca() {
        return marca;
    }

    public void setMarca(String marca) {
        this.marca = marca;
    }

    public String getSabor() {
        return sabor;
    }

    public void setSabor(String sabor) {
        this.sabor = sabor;
    }

    public float getPreco() {
        return preco;
    }

    public void setPreco(float preco) {
        this.preco = preco;
    }

    public float getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(float quantidade) {
        this.quantidade = quantidade;
    }

    public float getQuantidadeBebida() {
        return quantidadeBebida;
    }

    public void setQuantidadeBebida(float quantidadeBebida) {
        this.quantidadeBebida = quantidadeBebida;
    }
}
package bebida;

public class ControleBebida {

    public void beber(Bebida bebida) {
        if (bebida.getQuantidadeBebida() >= bebida.getQuantidade()) {
            System.out.println("Sua bebida acabou");
        } else {
            for (float beber = bebida.getQuantidadeBebida(); beber <= bebida.getQuantidade(); beber+= 20) {
                System.out.println("Você deu uma golada e bebeu " + beber + " ml");
            }
            System.out.println("Sua bebida acabou!");
        }
    }
}
package bebida;

public class ControleReferencias {

    public static void main(String[] args) {

        Bebida bebida =  new Pepsi();
        bebida.setMarca("Pepsi");
        bebida.setSabor("Limão");
        bebida.setQuantidade(300);
        bebida.setQuantidadeBebida(100);
        bebida.setTipo("Gasosa");
        bebida.setPreco(4.00f);

        ControleBebida controle = new ControleBebida();
        controle.beber(bebida);

    }
}

Foi mal tantas dúvidas e que preciso entender bem isso.

3 respostas
solução!

Olá Lucas, tudo bem?

Bom, de certa forma está correto o uso, porem acredito que faltou alguns atributos e métodos na classe "Pepsi", para deixar mais útil o uso do polimorfismo, mas creio que isso seja apenas um exemplo.

Outra coisa são os nomes dos atributos da classe "Bebida", dois deles são bem complicados de entenderem, que são os atributos quantidadeBebida e quantidade. Não dá para saber se você está falando da quantidade de bebida que ainda tem na garrafa ou qual é o limite dela. Vou acreditar que a quantidadeBebida seja oque tem na garrafa, enquanto o quantidade seja o limite dela. Tente deixar mais claro os nomes das variáveis, pois lembre-se que outra pessoa terá que dar a manutenção no seu código, ou até mesmo você . Então eu faria dessa forma, por exemplo:

public class Bebida {

    private String tipo;
    private String marca;
    private String sabor;
    private float preco;
    private float quantidadeLimiteDaGarrafa;
    private float quantidadeRestanteDaGarrafa;

}

Mesma coisa o seu método beber da classe ControleBebida, ele é muito confuso, demorei um tempo para entender. Eu o faria dessa forma:

package bebida;

public class ControleBebida {

    public void beber(Bebida bebida) {
        float bebidaRestante = bebida.getQuantidadeRestanteDaGarrafa();
        if (bebidaRestante = 0) {
            System.out.println("Sua bebida acabou");
        } else {
            while (bebidaRestante > 0) {
                System.out.println("Você deu uma golada e bebeu 20 ml");
                bebidaRestante -= 20;
            }
            System.out.println("Sua bebida acabou!");
        }
    }
}

Dessa forma o código fica bem mais legível.

Espero ter te ajudado :)

Desde já agradeço a ajuda. E sim, os atributos de quantidade e quantidadeBebida dizem respeito ao restante de refrigerante na lata e o quanto alguém bebeu. Fora esses erros, o polimorfismo esta sendo bem aplicado? É que você disse que de certa forma sim, mas isso significa que eu entendi bem?

Eu disse que de certa forma sim, pois a classe Pepsi está crua, então ela não tem muita utilidade. E com isso eu não tenho como ter certeza.

Mas pelo que eu vi eu acho que você entendeu bem, se quiser uma ajuda extra de vez enquanto me mande um e-mail, que assim eu te mando meu Whatsapp por lá.

Meu e-mail: fabiohenrique.7670br@gmail.com

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software