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

[Minha Solução] Desafio Criar Interface Vendavel

Desafio6: Crie uma interface Vendavel com métodos para calcular o preço total de um produto com base na quantidade comprada e aplicar descontos. Implemente essa interface nas classes Produto e Servico, cada uma fornecendo a sua própria lógica de cálculo de preço.


public interface Vendavel {

    public void precoTotal();

    public void aplicarDesconto();
}

import java.util.Scanner;

public class Produto implements Vendavel {
    private String produto;
    private int quantidadeProduto;
    private double precoProduto;
    private double precoTotal;
    private double desconto;
    private double valorAposDesconto;

    Scanner sc = new Scanner(System.in);

    @Override
    public void precoTotal() {
        System.out.println("===== SAÍDA DADOS - PRODUTO =====\n");
        this.setPrecoTotal(this.getPrecoProduto() * this.getQuantidadeProduto());
        System.out.println("Preço total: " + this.getPrecoTotal() + " para quantidade de: "
                + this.getQuantidadeProduto() + " peças.");
    }

    @Override
    public void aplicarDesconto() {
        this.setDesconto(this.getPrecoTotal() * 0.1);
        this.setValorAposDesconto(this.getPrecoTotal() - this.getDesconto());
        System.out.println("Você teve desconto de: R$ " + this.getDesconto());
        System.out.println("O valor da compra após desconto é de: R$ " + this.getValorAposDesconto());
    }

    public void entrarDados() {
        System.out.println("\nInsira o nome do produto: ");
        this.setProduto(sc.next());
        System.out.println("Insira o preço do produto: ");
        this.setPrecoProduto(sc.nextDouble());
        System.out.println("Insira a quantidade do produto: ");
        this.setQuantidadeProduto(sc.nextInt());
        this.precoTotal();
        this.aplicarDesconto();
    }

    public String getProduto() {
        return produto;
    }

    public void setProduto(String produto) {
        this.produto = produto;
    }

    public int getQuantidadeProduto() {
        return quantidadeProduto;
    }

    public void setQuantidadeProduto(int quantidadeProduto) {
        this.quantidadeProduto = quantidadeProduto;
    }

    public double getPrecoProduto() {
        return precoProduto;
    }

    public void setPrecoProduto(double precoProduto) {
        this.precoProduto = precoProduto;
    }

    public double getPrecoTotal() {
        return precoTotal;
    }

    public void setPrecoTotal(double precoTotal) {
        this.precoTotal = precoTotal;
    }

    public double getDesconto() {
        return desconto;
    }

    public void setDesconto(double desconto) {
        this.desconto = desconto;
    }

    public double getValorAposDesconto() {
        return valorAposDesconto;
    }

    public void setValorAposDesconto(double valorAposDesconto) {
        this.valorAposDesconto = valorAposDesconto;
    }
}

2 respostas

Continuação:


import java.util.Scanner;

public class Servico implements Vendavel {
    private String tipoServico;
    private int tempoServico;
    private double valorHora;
    private double precoTotal;
    private double desconto;
    private double valorAposDesconto;

    Scanner sc = new Scanner(System.in);

    @Override
    public void precoTotal() {
        System.out.println("===== SAÍDA DADOS - SERVIÇO =====\n");
        this.setPrecoTotal(this.getTempoServico() * this.getValorHora());
        System.out.println("Valor total do serviço: R$ " + this.getPrecoTotal() + " para quantidade " +
                "de: " + this.getTempoServico() + " horas");
    }

    @Override
    public void aplicarDesconto() {
        this.setDesconto(this.getPrecoTotal() * 0.15);
        this.setValorAposDesconto(this.getPrecoTotal() - this.getDesconto());
        System.out.println("O valor do desconto para o serviço é: R$ " + this.getDesconto());
        System.out.println("O preço total do serviço após o desconto é: R$ " + this.getValorAposDesconto());
    }

    public void entrarDados() {
        System.out.println("\nInsira o nome do serviço: ");
        this.setTipoServico(sc.next());
        System.out.println("Insira o tempo de trabalho em horas: ");
        this.setTempoServico(sc.nextInt());
        System.out.println("Insira o valor do serviço por hora: ");
        this.setValorHora(sc.nextDouble());
        this.precoTotal();
        this.aplicarDesconto();
    }

    public String getTipoServico() {
        return tipoServico;
    }

    public void setTipoServico(String tipoServico) {
        this.tipoServico = tipoServico;
    }

    public int getTempoServico() {
        return tempoServico;
    }

    public void setTempoServico(int tempoServico) {
        this.tempoServico = tempoServico;
    }

    public double getValorHora() {
        return valorHora;
    }

    public void setValorHora(double valorHora) {
        this.valorHora = valorHora;
    }

    public double getPrecoTotal() {
        return precoTotal;
    }

    public void setPrecoTotal(double precoTotal) {
        this.precoTotal = precoTotal;
    }

    public double getValorAposDesconto() {
        return valorAposDesconto;
    }

    public void setValorAposDesconto(double valorAposDesconto) {
        this.valorAposDesconto = valorAposDesconto;
    }

    public double getDesconto() {
        return desconto;
    }

    public void setDesconto(double desconto) {
        this.desconto = desconto;
    }
}

public class Principal {
    public static void main(String[] args) {
        Produto produto = new Produto();
        produto.entrarDados();
        Servico servico = new Servico();
        servico.entrarDados();
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Olá, Carlos Eduardo, como vai?

Gostei muito da forma como você implementou a interface Vendavel e aplicou a lógica de cálculo de preço e desconto nas classes. Sua solução está bem estruturada e demonstra um bom entendimento dos conceitos de orientação a objetos. A prática de encapsular o comportamento em métodos específicos como você fez é essencial para manter o código organizado e reutilizável. Parabéns!!

Continue praticando, e evoluindo.

Abraços e bons estudos!