POO-ITBA / 2024_02

Consultas 2C 2024
2 stars 0 forks source link

Repaso_Primer_Parcial_Ej3 #12

Open Pablo-Goros opened 1 month ago

Pablo-Goros commented 1 month ago

Hola como va? Queria saber si la siguiente resolucion del ej3 es correcta:

Enunciado: Se quiere modelar el menú de una pizzería. Se tienen dos tipos de pizza: al horno y a la parrilla y varios agregados (toppings) que se le pueden poner encima a la pizza: extra queso, tomate y cebolla. Los precios de los tipos de pizza son: Pizza al horno: $100 Pizza a la parrilla: $150 Los precios de los toppings: Extra queso: $20 Tomate: $30 Cebolla: $10

public enum Menu {
    TOMATE("Tomate", 30),
    CEBOLLA("Cebolla", 10),
    EXTRA_QUESO("Extra queso", 20),
    PIZZA_HORNO("Pizza al horno", 100),
    PIZZA_PARRILLA("Pizza a la parrilla", 150);

    private String name;
    private double price;

    Menu(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public double getPrice() {
        return this.price;
    }

    public String getName() {
        return this.name;
    }

}

public class Pizza {
    private double totalPrice;
    private String[] array = new String[20];

    public Pizza(Menu... order) {
        int i = 0;
        for (Menu food : order) {
            totalPrice += food.getPrice();
            array[i++] = food.getName();
        }
    }

    @Override
    public String toString() {
        StringBuilder resp = new StringBuilder();
        resp.append(array[0]);

        for (int i = 1; array[i] != null; i++) {
            resp.append(" con %s".formatted(array[i]));
        }
        resp.append(": $%.2f".formatted(totalPrice));
        return resp.toString();
    }
}

Y una duda que me surgio viendo la resolucion subida, mas que nada en la opcion 1. Se deberia definir una interfaz que sea implementada por Toppings y PizzaType? Ya que ambos enums usan exactamente los mismos metodos

fmeola commented 1 month ago

Hola @Pablo-Goros Estas juntando en un solo enum instancias de categorías distintas. Podrías hacer un enum para los tipos de pizza y otro enum para los toppings. No importa si ambos tienen name y price, está bien que estén separados porque representan cosas distintas. Respecto a Pizza te comento lo siguiente:

Pablo-Goros commented 1 month ago

Bien, gracias por las correcciones.

Sobre la separacion de los dos enums: Se deberia definir una interfaz que sea implementada por Toppings y PizzaType? Ya que ambos enums usan exactamente los mismos metodos?

fmeola commented 1 month ago

Si, puede ser una interfaz que tenga los métodos getPrice y getName.

Pablo-Goros commented 1 month ago

Genial. Muchas gracias