Class: MejorPlato

Inherits:
Plato
  • Object
show all
Defined in:
lib/practica6/mejorplatos.rb

Instance Attribute Summary

Attributes inherited from Plato

#conjuntoAlimentos, #conjuntoCantidades, #nombrePlato

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Plato

#alimento, #conjuntoPorcentaje, #nombre, #porCarbohidratos, #porLipidos, #porProteinas, #to_s, #valorCaloricoTotal

Constructor Details

#initialize(nombrePlato, conjuntoAlimentos, conjuntoCantidades) ⇒ MejorPlato

Returns a new instance of MejorPlato.

Parameters:

  • conjuntoAlimentos (List)

    Lista de alimentos que forman el plato.

  • conjuntoCantidades (List)

    Lista de cantidades de cada alimento que forma el plato.



11
12
13
# File 'lib/practica6/mejorplatos.rb', line 11

def initialize(nombrePlato, conjuntoAlimentos, conjuntoCantidades)
    super(nombrePlato, conjuntoAlimentos, conjuntoCantidades)
end

Class Method Details

.aumentarPrecios(arrayPrecios, menu) ⇒ Array[Float]

Dado un array de platos y un array de precios, incrementa el array de los precios en base al plato con mayor Huella Nutricional del array de platos.

Parameters:

  • arrayPrecios (Array[Float])

    Array de precios.

  • arrayPrecios (Array[MejorPlato])

    Array de platos.

Returns:

  • (Array[Float])

    array de precios arrayPrecio incrementado.



110
111
112
113
114
115
116
117
118
119
120
# File 'lib/practica6/mejorplatos.rb', line 110

def self.aumentarPrecios(arrayPrecios, menu)
    if(menu.max.huellaNutricional== 1)
        arrayPrecios.map{ |a| a * 2}
    elsif(menu.max.huellaNutricional== 2)
        arrayPrecios.map{ |a| a * 3}
    elsif(menu.max.huellaNutricional== 3)
        arrayPrecios.map{ |a| a * 4}
    else
        return -1
    end
end

Instance Method Details

#<=>(another) ⇒ Object

Sobreescritura de la funcion <=> de la clase Comparable para comparar dos elementos

Parameters:

  • another (Comida)

    Plato/MejorPlato con el que se pretende comparar este Plato (el plato con mayor #huellaNutricional será mayor).



96
97
98
99
100
# File 'lib/practica6/mejorplatos.rb', line 96

def <=>(another)
    if another.class== MejorPlato
        huellaNutricional<=> another.huellaNutricional
    end
end

#costeTerrenoDouble

Cantidad de m2 que han necesitado ser utilizados para producir el plato.

Returns:

  • (Double)

    Coste en m2 de la producción del plato.



33
34
35
36
37
38
39
# File 'lib/practica6/mejorplatos.rb', line 33

def costeTerreno
    coste= 0.0.to_d
    conjuntoAlimentos.size.times do |i|
        coste+= (conjuntoAlimentos[i].costeTerreno.to_d)* (conjuntoCantidades[i].to_d/1000.0)
    end
    return coste
end

#eficienciaEnergeticaDouble

Eficiencia energética del plato (kilocalorias)

Returns:

  • (Double)

    Kilocalorias producidas por el plato



46
47
48
49
50
51
52
# File 'lib/practica6/mejorplatos.rb', line 46

def eficienciaEnergetica
    eficiencia= 0.0.to_d
    conjuntoAlimentos.size.times do |i|
        eficiencia+= (conjuntoAlimentos[i].kilocalorias.to_d)* (conjuntoCantidades[i].to_d/1000.0)
    end
    return eficiencia
end

#emisionInvernaderoDouble

Cantidad de gases de efecto invernadero liberados por el plato en cuestión.

Returns:

  • (Double)

    Emisiones de efecto ivernaderos emitidas por el plato.



20
21
22
23
24
25
26
# File 'lib/practica6/mejorplatos.rb', line 20

def emisionInvernadero 
    emision= 0.0.to_d
    conjuntoAlimentos.size.times do |i|
        emision+= (conjuntoAlimentos[i].GEI.to_d)* (conjuntoCantidades[i].to_d/100.0)
    end
    return emision
end

#huellaNutricionalInteger

Devuelve un entero en un rango [1 - 3] que indica el impacto medioambiental del plato según su valor calórico total y sus emisiones de efecto invernadero.

Returns:

  • (Integer)

    Huella nutricional del plato (1, 2, 3).



61
62
63
# File 'lib/practica6/mejorplatos.rb', line 61

def huellaNutricional
    return (indicadorEnergia.to_i+ indicadorCarbono.to_i)/2.to_i
end

#indicadorCarbonoObject

Vease #huellaNutricional



81
82
83
84
85
86
87
88
89
# File 'lib/practica6/mejorplatos.rb', line 81

def indicadorCarbono
    if(emisionInvernadero< 800)
        return 1
    elsif(emisionInvernadero> 1200)
        return 3
    else
        return 2
    end
end

#indicadorEnergiaObject

Vease #huellaNutricional



68
69
70
71
72
73
74
75
76
# File 'lib/practica6/mejorplatos.rb', line 68

def indicadorEnergia
    if(valorCaloricoTotal< 670)
        return 1
    elsif(valorCaloricoTotal> 830)
        return 3
    else
        return 2
    end
end