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

[Projeto] projeto vendavel

import Sale.Product;
import Sale.Service;

public class Main {
public static void main(String[] args) {
Product product = new Product();
Service service = new Service();

    product.ForSwitch1("brick");
    product.ForSwitch1("brick");
    product.ForSwitch1("cement");
    System.out.println(product.CalcTotalPrice());

    service.Forchoise("painter");
    service.Forchoise("painter");
    service.Forchoise("mason");
    System.out.println(service.CalcTotalPrice());


}

}package Sale;

public interface Vendavel {
double CalcTotalPrice();

}package Sale;

public class Product implements Vendavel {
String choise;
double price = 0.0;

public void ForSwitch1(String choise) {
    switch (choise) {

        case "brick":
            price += 10.50;

            break;

        case "cement":
            price += 20.85;

            break;

        default:

            break;
    }


}


@Override
public double CalcTotalPrice() {

    if (price > 104.25) {

        double descont = (10 * price) / 100;
        return price - descont;

    } else {

        double descont = (5 * price) / 100;
        return price - descont;
    }

}

}
package Sale;

public class Service implements Vendavel {

double pricePainter;
double priceMason;
String choise;
double price;

public void Forchoise(String choise) {
    switch (choise) {

        case "painter":
            price += 60.00;

            break;

        case "mason":
            price += 80.00;

            break;

        default:

            break;
    }


}


@Override
public double CalcTotalPrice() {
    if (price > 280) {

        double descont = price * 0.20;
        return price - descont;

    } else {

        double descont = price * 0.13;
        return price - descont;
    }
}

}

3 respostas

Oi, Joao Pedro! Como vai?
Agradeço por compartilhar seu código com a comunidade Alura.

Seu projeto ficou bem estruturado, com uso consistente da interface Vendavel e separação entre produto e serviço. A lógica de desconto nas classes Product e Service está clara e bem aplicada.

Uma dica interessante para o futuro é utilizar enum para representar as opções de produto ou serviço, evitando erros por digitação e facilitando a manutenção do código. Veja este exemplo:


enum TipoProduto {
    BRICK, CEMENT
}

Usar enum ajuda a deixar o código mais seguro e legível.

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

oi Rafaela, queria entender melhor o enum e como aplicar ele no meu código

solução!

Oi, Joao Pedro!

Sobre sua última dúvida, vamos resolver isso mostrando como aplicar o enum no seu código. A ideia é evitar erros ao digitar o nome dos produtos ou serviços, deixando o código mais seguro e organizado.

Veja como ajustar:

  1. Crie um enum para os produtos:

package Sale;

public enum TipoProduto {
    BRICK(10.50),
    CEMENT(20.85);

    private final double preco;

    TipoProduto(double preco) {
        this.preco = preco;
    }

    public double getPreco() {
        return preco;
    }
}
  1. Crie um enum para os serviços:

package Sale;

public enum TipoServico {
    PAINTER(60.00),
    MASON(80.00);

    private final double preco;

    TipoServico(double preco) {
        this.preco = preco;
    }

    public double getPreco() {
        return preco;
    }
}
  1. Atualize a classe Product para usar o TipoProduto:

package Sale;

public class Product implements Vendavel {

    double price = 0.0;

    public void addProduto(TipoProduto tipo) {
        price += tipo.getPreco();
    }

    @Override
    public double CalcTotalPrice() {
        if (price > 104.25) {
            double descont = price * 0.10;
            return price - descont;
        } else {
            double descont = price * 0.05;
            return price - descont;
        }
    }
}
  1. Atualize a classe Service para usar o TipoServico:

package Sale;

public class Service implements Vendavel {

    double price = 0.0;

    public void addServico(TipoServico tipo) {
        price += tipo.getPreco();
    }

    @Override
    public double CalcTotalPrice() {
        if (price > 280) {
            double descont = price * 0.20;
            return price - descont;
        } else {
            double descont = price * 0.13;
            return price - descont;
        }
    }
}
  1. E atualize a Main para usar os enums:

import Sale.*;

public class Main {

    public static void main(String[] args) {
        Product product = new Product();
        Service service = new Service();

        product.addProduto(TipoProduto.BRICK);
        product.addProduto(TipoProduto.BRICK);
        product.addProduto(TipoProduto.CEMENT);
        System.out.println(product.CalcTotalPrice());

        service.addServico(TipoServico.PAINTER);
        service.addServico(TipoServico.PAINTER);
        service.addServico(TipoServico.MASON);
        System.out.println(service.CalcTotalPrice());
    }
}

Com isso, você garante que os valores só podem ser definidos com as opções válidas, evitando erros de digitação e facilitando a manutenção do código.

Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado