Class: Alimento
Overview
Esta clase representa un Alimento y las propiedades de este (nombre,cantidad,proteinas,carbohidratos,lipidos,…)
Constant Summary collapse
- @@nombre =
""
- @@proteinas =
0
- @@carbohidratos =
0
- @@lipidos =
0
- @@gei =
0
- @@terreno =
0
- @@cantidad =
1
Instance Attribute Summary collapse
-
#cantidad ⇒ Object
readonly
Returns the value of attribute cantidad.
-
#huellaNutricional ⇒ Object
readonly
Returns the value of attribute huellaNutricional.
-
#nombre ⇒ Object
readonly
Returns the value of attribute nombre.
Class Method Summary collapse
-
.build ⇒ Object
Construye una nueva instancia de la clase Alimento con los atributos seteados previamente(setTerreno,setCantidad,…) y la devuelve.
-
.constructHashFromFile(input) ⇒ Object
Construye un diccionario de instancias de la clase Alimentos, con key == nombre del alimento de acuerdo al contenido de un fichero.
-
.constructListFromFile(input) ⇒ Object
Construye una lista de instancias de la clase Alimentos de acuerdo al contenido de un fichero.
-
.copy(copy) ⇒ Object
Devuelve una instancia copia de la clase Alimento dado otra instancia de la clase Alimento pasado como parametro.
-
.setCantidad(cantidad) ⇒ Object
Define el parametro ‘peso’(en kg) de la clase Alimento que el Constructor seteará.
-
.setCarbohidratos(carbohidratos) ⇒ Object
Define el parametro ‘carbohidratos’(en g) de la clase Alimento que el Constructor seteará.
-
.setGEI(gei) ⇒ Object
Define el parametro ‘gei’(gases de efecto invernadero) de la clase Alimento que el Constructor seteará.
-
.setLipidos(lipidos) ⇒ Object
Define el parametro ‘lipidos’(en g) de la clase Alimento que el Constructor seteará.
-
.setNombre(nombre) ⇒ Object
Define el parametro ‘nombre’ de la clase Alimento que el Constructor seteará.
-
.setProteinas(proteinas) ⇒ Object
Define el parametro ‘proteinas’(en g) de la clase Alimento que el constructor seteará.
-
.setTerreno(terreno) ⇒ Object
Define el parametro ‘terreno’(en m^2 necesarios para producir el alimento) de la clase Alimento que el Constructor seteará.
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
Metodo que debe ser implementado para que la incorporación del modulo ‘Comparable’ funcione correctamente de acuerdo a las propiedades del Alimento.
-
#cantidadNecesaria(cal_nec, prot_nec) ⇒ Object
Devuelve la cantidad necesaria, en kg, que hay que ingerir del alimento para ingerir cal_nec kcal y prot_nec g de proteínas.
-
#carbohidratos ⇒ Object
Recupera la cantidad de carbohidratos,en g, del alimento (relativo a la cantidad del alimento).
-
#gei ⇒ Object
Recupera la cantidad de gases de efecto invernadero producidos, en KgCO2, en la producción del alimento (relativo a la cantidad del alimento).
-
#initialize(nombre, proteinas, carbohidratos, lipidos, gei, terreno, cantidad = 1.0) ⇒ Alimento
constructor
Constructor de instancias de la clase Alimento.
-
#lipidos ⇒ Object
Recupera la cantidad de lipidos,en g, del alimento (relativo a la cantidad del alimento).
-
#proteinas ⇒ Object
Recupera la cantidad de proteinas, en g, del alimento (relativo a la cantidad del alimento).
-
#setCantidad(cantidad) ⇒ Object
Define la cantidad, en kg, del alimento.
-
#terreno ⇒ Object
Recupera la cantidad de m^2 de terreno necesario para producir el alimento (relativo a la cantidad del alimento).
-
#to_s ⇒ Object
Devuelve un string que es el alimento formateado para ser entendible por un humano.
-
#valorEnergetico ⇒ Object
Recupera el valor Energetico, en kcal, que produce la ingesta del alimento (relativo a la cantidad del alimento).
Constructor Details
#initialize(nombre, proteinas, carbohidratos, lipidos, gei, terreno, cantidad = 1.0) ⇒ Alimento
Constructor de instancias de la clase Alimento.
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/Alimento.rb', line 135 def initialize(nombre,proteinas,carbohidratos,lipidos, gei,terreno,cantidad = 1.0) @nombre = nombre @proteinas = proteinas @carbohidratos = carbohidratos @lipidos = lipidos @gei = gei @terreno = terreno @valorEnergetico = (@proteinas * 4 ) + (@carbohidratos * 4) + (@lipidos * 9) @cantidad = cantidad #En Kg impactoEnergia = case @valorEnergetico when 0..67 then 1 when 670..83 then 2 else 3 end impactoHuellaDeCarbono = case @gei when 0..80 then 1 when 80..120 then 2 else 3 end @huellaNutricional = (impactoEnergia + impactoHuellaDeCarbono)/2 end |
Instance Attribute Details
#cantidad ⇒ Object (readonly)
Returns the value of attribute cantidad.
92 93 94 |
# File 'lib/Alimento.rb', line 92 def cantidad @cantidad end |
#huellaNutricional ⇒ Object (readonly)
Returns the value of attribute huellaNutricional.
92 93 94 |
# File 'lib/Alimento.rb', line 92 def huellaNutricional @huellaNutricional end |
#nombre ⇒ Object (readonly)
Returns the value of attribute nombre.
92 93 94 |
# File 'lib/Alimento.rb', line 92 def nombre @nombre end |
Class Method Details
.build ⇒ Object
Construye una nueva instancia de la clase Alimento con los atributos seteados previamente(setTerreno,setCantidad,…) y la devuelve.
54 55 56 |
# File 'lib/Alimento.rb', line 54 def build() return Alimento.new(@@nombre,@@proteinas,@@carbohidratos,@@lipidos,@@gei,@@terreno) end |
.constructHashFromFile(input) ⇒ Object
Construye un diccionario de instancias de la clase Alimentos, con key == nombre del alimento de acuerdo al contenido de un fichero. Los parametros se separan por espacios en blanco(s). Los distintos alimentos se separan por saltos de linea(n).
74 75 76 77 78 79 80 81 82 |
# File 'lib/Alimento.rb', line 74 def constructHashFromFile(input) result = Hash.new() size = input.size/6 for i in 0..size-1 alimento = Alimento.new(input[6*i], input[6*i+1].to_f, input[6*i+2].to_f, input[6*i+3].to_f, input[6*i+4].to_f, input[6*i+5].to_f) result.store(input[6*i] , alimento ) end return result end |
.constructListFromFile(input) ⇒ Object
Construye una lista de instancias de la clase Alimentos de acuerdo al contenido de un fichero. Los parametros se separan por espacios en blanco(s). Los distintos alimentos se separan por saltos de linea(n).
61 62 63 64 65 66 67 68 69 |
# File 'lib/Alimento.rb', line 61 def constructListFromFile(input) result = Array.new() size = input.size/6 for i in 0..size-1 alimento = Alimento.new(input[6*i], input[6*i+1].to_f, input[6*i+2].to_f, input[6*i+3].to_f, input[6*i+4].to_f, input[6*i+5].to_f) result.append( alimento ) end return result end |
.copy(copy) ⇒ Object
Devuelve una instancia copia de la clase Alimento dado otra instancia de la clase Alimento pasado como parametro.
86 87 88 |
# File 'lib/Alimento.rb', line 86 def copy(copy) return Alimento.new(copy.nombre,copy.proteinas,copy.carbohidratos,copy.lipidos,copy.gei,copy.terreno) end |
.setCantidad(cantidad) ⇒ Object
Define el parametro ‘peso’(en kg) de la clase Alimento que el Constructor seteará.
49 50 51 52 |
# File 'lib/Alimento.rb', line 49 def setCantidad(cantidad) @@cantidad = cantidad return self end |
.setCarbohidratos(carbohidratos) ⇒ Object
Define el parametro ‘carbohidratos’(en g) de la clase Alimento que el Constructor seteará.
25 26 27 28 |
# File 'lib/Alimento.rb', line 25 def setCarbohidratos(carbohidratos) @@carbohidratos = carbohidratos return self end |
.setGEI(gei) ⇒ Object
Define el parametro ‘gei’(gases de efecto invernadero) de la clase Alimento que el Constructor seteará.
37 38 39 40 |
# File 'lib/Alimento.rb', line 37 def setGEI(gei) @@gei = gei return self end |
.setLipidos(lipidos) ⇒ Object
Define el parametro ‘lipidos’(en g) de la clase Alimento que el Constructor seteará.
31 32 33 34 |
# File 'lib/Alimento.rb', line 31 def setLipidos(lipidos) @@lipidos = lipidos return self end |
.setNombre(nombre) ⇒ Object
Define el parametro ‘nombre’ de la clase Alimento que el Constructor seteará.
13 14 15 16 |
# File 'lib/Alimento.rb', line 13 def setNombre(nombre) @@nombre = nombre return self end |
.setProteinas(proteinas) ⇒ Object
Define el parametro ‘proteinas’(en g) de la clase Alimento que el constructor seteará.
19 20 21 22 |
# File 'lib/Alimento.rb', line 19 def setProteinas(proteinas) @@proteinas = proteinas return self end |
.setTerreno(terreno) ⇒ Object
Define el parametro ‘terreno’(en m^2 necesarios para producir el alimento) de la clase Alimento que el Constructor seteará.
43 44 45 46 |
# File 'lib/Alimento.rb', line 43 def setTerreno(terreno) @@terreno = terreno return self end |
Instance Method Details
#<=>(other) ⇒ Object
Metodo que debe ser implementado para que la incorporación del modulo ‘Comparable’ funcione correctamente de acuerdo a las propiedades del Alimento.
189 190 191 192 193 |
# File 'lib/Alimento.rb', line 189 def <=>(other) # binding.pry return nil unless other.instance_of? Alimento valorEnergetico <=> other.valorEnergetico end |
#cantidadNecesaria(cal_nec, prot_nec) ⇒ Object
Devuelve la cantidad necesaria, en kg, que hay que ingerir del alimento para ingerir cal_nec kcal y prot_nec g de proteínas.
161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/Alimento.rb', line 161 def cantidadNecesaria(cal_nec, prot_nec) #Los datos del alimento se corresponden a los nutrientes para 1 kg de dicho alimento #Entonces, dado que primero debemos satisfacer las proteinas necesarias: kg_a_consumir_para_prot_nec = prot_nec / @proteinas.to_f() #Tenemos los kg, esos kg consumidos tambien otorgan calorias,asi que restamos a las calorias necesarias: cal_rest = cal_nec - (kg_a_consumir_para_prot_nec * @valorEnergetico) #kcal = kcal - (kg * kcal/kg) #Ahora, calculamos los kg necesarios para consumir las cal_rest kg_a_consumir = cal_rest / @valorEnergetico.to_f() # kg = kcal / (kcal/kg) #Sumamos kg_a_consumir para las caloreias, y kg_a_consumir_para_prot_nec para el minimo proteinas necesarioas kg_nec = kg_a_consumir + kg_a_consumir_para_prot_nec return kg_nec end |
#carbohidratos ⇒ Object
Recupera la cantidad de carbohidratos,en g, del alimento (relativo a la cantidad del alimento).
108 109 110 |
# File 'lib/Alimento.rb', line 108 def carbohidratos return @carbohidratos*@cantidad end |
#gei ⇒ Object
Recupera la cantidad de gases de efecto invernadero producidos, en KgCO2, en la producción del alimento (relativo a la cantidad del alimento).
116 117 118 |
# File 'lib/Alimento.rb', line 116 def gei return @gei*@cantidad end |
#lipidos ⇒ Object
Recupera la cantidad de lipidos,en g, del alimento (relativo a la cantidad del alimento).
112 113 114 |
# File 'lib/Alimento.rb', line 112 def lipidos return @lipidos*@cantidad end |
#proteinas ⇒ Object
Recupera la cantidad de proteinas, en g, del alimento (relativo a la cantidad del alimento).
104 105 106 |
# File 'lib/Alimento.rb', line 104 def proteinas return @proteinas*@cantidad end |
#setCantidad(cantidad) ⇒ Object
Define la cantidad, en kg, del alimento.
97 98 99 100 |
# File 'lib/Alimento.rb', line 97 def setCantidad(cantidad) @cantidad = cantidad return self end |
#terreno ⇒ Object
Recupera la cantidad de m^2 de terreno necesario para producir el alimento (relativo a la cantidad del alimento).
120 121 122 |
# File 'lib/Alimento.rb', line 120 def terreno return @terreno*@cantidad end |
#to_s ⇒ Object
Devuelve un string que es el alimento formateado para ser entendible por un humano.
175 176 177 |
# File 'lib/Alimento.rb', line 175 def to_s return "[Nombre:#{@nombre}, Peso:#{@cantidad} kg, Proteinas:#{proteinas.round(2)} g, Carbohidratos:#{carbohidratos.round(2)} g, Lipidos:#{lipidos.round(2)} g, Valor Energetico:#{valorEnergetico.round(2)} kcal, Emisiones: #{gei.round(2)} kgCO2, Terreno Usado:#{terreno.round(2)} m^2]" end |
#valorEnergetico ⇒ Object
Recupera el valor Energetico, en kcal, que produce la ingesta del alimento (relativo a la cantidad del alimento).
124 125 126 |
# File 'lib/Alimento.rb', line 124 def valorEnergetico return @valorEnergetico*@cantidad end |