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:
Trimiteți un comentariu