Class: Alimento::Alimento
- Inherits:
-
Object
- Object
- Alimento::Alimento
- Includes:
- Comparable
- Defined in:
- lib/alimento/alimento.rb
Instance Attribute Summary collapse
-
#carbohidratos ⇒ Object
readonly
Returns the value of attribute carbohidratos.
-
#gei ⇒ Object
readonly
Returns the value of attribute gei.
-
#lipidos ⇒ Object
readonly
Returns the value of attribute lipidos.
-
#nombre ⇒ Object
readonly
Returns the value of attribute nombre.
-
#proteinas ⇒ Object
readonly
Returns the value of attribute proteinas.
-
#terreno ⇒ Object
readonly
Returns the value of attribute terreno.
Instance Method Summary collapse
-
#<=>(other) ⇒ Alimento
Objeto que sea mayor.
-
#emision_lista_anual(list) ⇒ Float
Suma de las emisiones por un año.
-
#emision_lista_dia(list) ⇒ Float
Suma de las emisiones (gei) de todos los alimentos de la lista.
-
#impacto_ambiental(persona, cuantos_persona) ⇒ Float
Emisiones del conjunto de alimntos y sus respectivas cantidades.
-
#initialize(nombre, proteinas, carbohidratos, lipidos, gei, terreno) ⇒ Alimento
constructor
A new instance of Alimento.
-
#uso_lista_terreno(list) ⇒ Float
Terreno total ocupado por la lista de alimentos.
-
#uso_terreno(persona, cuantos_persona) ⇒ Float
Terreno ocupado por todos los alimentos y sus cantidades.
-
#valor_energetico(valor_glucidos, valor_proteinas, valor_lipidos) ⇒ Float
Valor energetico del alimento.
-
#valor_glucidos(carbohidrato) ⇒ Float
El cambio a kcal.
-
#valor_lipidos(lipidos) ⇒ Float
El cambio a kcal.
-
#valor_proteinas(proteinas) ⇒ Float
El cambio a kcal.
Constructor Details
#initialize(nombre, proteinas, carbohidratos, lipidos, gei, terreno) ⇒ Alimento
Constructor de la clase
Returns a new instance of Alimento
18 19 20 |
# File 'lib/alimento/alimento.rb', line 18 def initialize (nombre, proteinas, carbohidratos, lipidos, gei, terreno) @nombre, @proteinas, @carbohidratos, @lipidos, @gei, @terreno = nombre, proteinas, carbohidratos, lipidos, gei, terreno end |
Instance Attribute Details
#carbohidratos ⇒ Object (readonly)
Returns the value of attribute carbohidratos
9 10 11 |
# File 'lib/alimento/alimento.rb', line 9 def carbohidratos @carbohidratos end |
#gei ⇒ Object (readonly)
Returns the value of attribute gei
9 10 11 |
# File 'lib/alimento/alimento.rb', line 9 def gei @gei end |
#lipidos ⇒ Object (readonly)
Returns the value of attribute lipidos
9 10 11 |
# File 'lib/alimento/alimento.rb', line 9 def lipidos @lipidos end |
#nombre ⇒ Object (readonly)
Returns the value of attribute nombre
9 10 11 |
# File 'lib/alimento/alimento.rb', line 9 def nombre @nombre end |
#proteinas ⇒ Object (readonly)
Returns the value of attribute proteinas
9 10 11 |
# File 'lib/alimento/alimento.rb', line 9 def proteinas @proteinas end |
#terreno ⇒ Object (readonly)
Returns the value of attribute terreno
9 10 11 |
# File 'lib/alimento/alimento.rb', line 9 def terreno @terreno end |
Instance Method Details
#<=>(other) ⇒ Alimento
Comparador de alimentos
Returns Objeto que sea mayor
25 26 27 |
# File 'lib/alimento/alimento.rb', line 25 def <=>(other) valor_energetico(valor_glucidos(carbohidratos), valor_proteinas(proteinas), valor_lipidos(lipidos)) <=> other.valor_energetico(other.valor_glucidos(other.carbohidratos), other.valor_proteinas(other.proteinas), other.valor_lipidos(other.lipidos)) end |
#emision_lista_anual(list) ⇒ Float
Calculo de las emisiones en un año con una lista de alimentos
Returns Suma de las emisiones por un año
112 113 114 |
# File 'lib/alimento/alimento.rb', line 112 def emision_lista_anual(list) return (emision_lista_dia(list) * 365).round(2) end |
#emision_lista_dia(list) ⇒ Float
Calculo de emisiones en un dia con una lista de alimentos
Returns Suma de las emisiones (gei) de todos los alimentos de la lista
96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/alimento/alimento.rb', line 96 def emision_lista_dia(list) actual = list.tail sum_emision = 0 while actual.next != nil do sum_emision += actual.value.gei actual = actual.next end if actual = list.head sum_emision += list.head.value.gei end return sum_emision.round(2) end |
#impacto_ambiental(persona, cuantos_persona) ⇒ Float
Calculo de emisiones de gases de un conjunto de alimentos
Returns Emisiones del conjunto de alimntos y sus respectivas cantidades
67 68 69 70 71 72 73 74 75 |
# File 'lib/alimento/alimento.rb', line 67 def impacto_ambiental(persona, cuantos_persona) i = 0 impacto_amb = 0 while i < persona.length do impacto_amb += persona[i].gei * cuantos_persona[i] i += 1 end return (impacto_amb).round(1) end |
#uso_lista_terreno(list) ⇒ Float
Calculo del terreno ocupado por una lista de alimentos
Returns Terreno total ocupado por la lista de alimentos
119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/alimento/alimento.rb', line 119 def uso_lista_terreno(list) actual = list.tail sum_emision = 0 while actual.next != nil do sum_emision += actual.value.terreno actual = actual.next end if actual = list.head sum_emision += list.head.value.terreno end return sum_emision.round(2) end |
#uso_terreno(persona, cuantos_persona) ⇒ Float
Calculo del terreno ocupado por un conjunto de alimentos
Returns Terreno ocupado por todos los alimentos y sus cantidades
82 83 84 85 86 87 88 89 90 |
# File 'lib/alimento/alimento.rb', line 82 def uso_terreno(persona, cuantos_persona) i = 0 uso_ter = 0 while i < persona.length do uso_ter += persona[i].terreno * cuantos_persona[i] i += 1 end return (uso_ter).round(1) end |
#valor_energetico(valor_glucidos, valor_proteinas, valor_lipidos) ⇒ Float
Calculo de la energia del alimento
Returns Valor energetico del alimento
58 59 60 |
# File 'lib/alimento/alimento.rb', line 58 def valor_energetico (valor_glucidos, valor_proteinas, valor_lipidos) return (valor_glucidos + valor_proteinas + valor_lipidos).round(1) end |
#valor_glucidos(carbohidrato) ⇒ Float
Conversion de los carbohidratos a kcal
Returns El cambio a kcal
32 33 34 |
# File 'lib/alimento/alimento.rb', line 32 def valor_glucidos (carbohidrato) return (carbohidrato*4).round(1) end |
#valor_lipidos(lipidos) ⇒ Float
Conversion de los lipidos en kcal
Returns El cambio a kcal
48 49 50 |
# File 'lib/alimento/alimento.rb', line 48 def valor_lipidos (lipidos) return (lipidos*9).round(1) end |
#valor_proteinas(proteinas) ⇒ Float
Conversion de las proteinnas en kcal
Returns El cambio a kcal
40 41 42 |
# File 'lib/alimento/alimento.rb', line 40 def valor_proteinas (proteinas) return (proteinas*4).round(1) end |