Rezolvare - Laborator FAIMA #5 / An 1 Semestru 1

Clasa Ingredient


public class Ingredient {

    public static final int KG = 0, BUCATA = 1, LITRU = 2;
    private String nume;
    private Float cost;
    private int unitate;

    public Ingredient(String nume, Float cost, int unitate) {
        this.nume = nume;
        this.cost = cost;
        this.unitate = unitate;
    }

    public String getNume() {
        return nume;
    }

    public void setNume(String nume) {
        this.nume = nume;
    }

    public Float getCost() {
        return cost;
    }

    public void setCost(Float cost) {
        this.cost = cost;
    }

    public int getUnitate() {
        return unitate;
    }

    public void setUnitate(int unitate) {
        this.unitate = unitate;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 47 * hash + (this.nume != null ? this.nume.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Ingredient other = (Ingredient) obj;
        if ((this.nume == null) ? (other.nume != null) : !this.nume.equals(other.nume)) {
            return false;
        }
        return true;
    }
}

Clasa ComponentReteta


public class ComponentReteta {
    private Ingredient ingredient;
    private float cantitate;

    public ComponentReteta(Ingredient ingredient, float cantitate) {
        this.ingredient = ingredient;
        this.cantitate = cantitate;
    }

    public Ingredient getIngredient() {
        return ingredient;
    }

    public void setIngredient(Ingredient ingredient) {
        this.ingredient = ingredient;
    }

    public float getCantitate() {
        return cantitate;
    }

    public void setCantitate(float cantitate) {
        this.cantitate = cantitate;
    }
    
    
}

Clasa Reteta


public class Reteta {

    private String nume;
    private int numarPortii;
    private ComponentReteta[] ingrediente;

    public Reteta(String nume, ComponentReteta[] ingrediente, int numarPortii) {
        this.nume = nume;
        this.ingrediente = ingrediente;
        this.numarPortii = numarPortii;
    }

    public String getNume() {
        return nume;
    }

    public ComponentReteta[] getIngrediente() {
        return ingrediente;
    }

    public int getNumarPortii() {
        return numarPortii;
    }
    /**
     * Calculeaza pretul pentru executarea unei retete
     * @return pretul pe numarul de portii date de reteta
     */
    public float getPret(){
        float pret=0;
        for (ComponentReteta cr:ingrediente){
            pret+=cr.getCantitate()*cr.getIngredient().getCost();
        }
        return pret;
    }
}

Clasa principala


public class RezolvareFAIMA {
    /*
     * Definim constantele din aplicatie: ingrediente, retete
     */

    private static final Ingredient faina = new Ingredient("Faina", 5f, Ingredient.KG),
            ulei = new Ingredient("Ulei", 7f, Ingredient.LITRU),
            lapte = new Ingredient("Lapte", 8f, Ingredient.LITRU),
            mar = new Ingredient("Mar", 4f, Ingredient.KG),
            morcov = new Ingredient("Morcov", 0.5f, Ingredient.BUCATA);
    private static final Reteta prajituraCuMorcovi = new Reteta("Prajitura cu Morcovi", new ComponentReteta[]{
                new ComponentReteta(faina, 2f),
                new ComponentReteta(lapte, 0.5f),
                new ComponentReteta(ulei, 0.7f),
                new ComponentReteta(morcov, 6f)}, 5);
    private static final Reteta prajituraCuMere = new Reteta("Prajitura cu Mere", new ComponentReteta[]{
                new ComponentReteta(faina, 2.5f),
                new ComponentReteta(lapte, 1.5f),
                new ComponentReteta(ulei, 0.3f),
                new ComponentReteta(mar, 1f)}, 7);

    public static void main(String[] args) {
        HashMap< Reteta,Integer > comandaDeAzi=new HashMap< Reteta, Integer >();
        comandaDeAzi.put(prajituraCuMere, 9);
        comandaDeAzi.put(prajituraCuMorcovi, 3);
        System.out.println("Pret total comanda de azi: "+calculeazaTotal(comandaDeAzi));
    }
    
    /**
     * Calculam costurile totale pentru o comanda data 
     * @param portii comanda este un tabel / 
     * HashMap cu retete si numar de portii comandate
     * @return pretul total
     */
    private static float calculeazaTotal(HashMap< Reteta,Integer > portii){
        float pret=0;
        for(Reteta r:portii.keySet()){
            pret+=((float)(portii.get(r) /r.getNumarPortii()+1))*r.getPret();
        }
        return pret;
    }
}

0 comentarii: