Class: Alimento

Inherits:
Object
  • Object
show all
Includes:
Comparable, Enumerable
Defined in:
lib/P06/alimento.rb,
lib/P11/alimento.rb

Overview

Esta clase permite representar la información básica de un alimento dado, sus proteinas, glúcidos y lípidos además, calcula el índice calórico del mismo.

Author

Alberto González ([email protected])

Copyright

Cretive Commons

License

Distributes under the same terms as Ruby

Direct Known Subclasses

Alimento_concreto

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nom, prot, gluc, lip, gluc_data = nil) ⇒ Alimento

Se asigna el nombre y la información nutricional del alimento



12
13
14
15
16
17
18
19
# File 'lib/P06/alimento.rb', line 12

def initialize(nom, prot, gluc, lip, gluc_data = nil)
	@nom = nom
	@prot = prot
	@gluc = gluc
	@lip = lip
	@gluc_data = gluc_data
	@cal_index = (@prot.to_f*4 + @gluc.to_f*4 + @lip.to_f*9).round(2)
end

Instance Attribute Details

#cal_indexObject (readonly)

Returns the value of attribute cal_index.



9
10
11
# File 'lib/P06/alimento.rb', line 9

def cal_index
  @cal_index
end

#glucObject (readonly)

Returns the value of attribute gluc.



9
10
11
# File 'lib/P06/alimento.rb', line 9

def gluc
  @gluc
end

#lipObject (readonly)

Returns the value of attribute lip.



9
10
11
# File 'lib/P06/alimento.rb', line 9

def lip
  @lip
end

#nomObject (readonly)

Returns the value of attribute nom.



9
10
11
# File 'lib/P06/alimento.rb', line 9

def nom
  @nom
end

#protObject (readonly)

Returns the value of attribute prot.



9
10
11
# File 'lib/P06/alimento.rb', line 9

def prot
  @prot
end

Instance Method Details

#aibcObject

Calcula el área bajo la curva para los datos tomados en una medición de glucosa en intervalos de tiempo de 5 minutos



33
34
35
# File 'lib/P06/alimento.rb', line 33

def aibc
	@gluc_data.map{|indv| zero = indv.at(0); prev = -2; indv.map{|index| prev = prev + 1; ((index-zero) + (indv.at(not_negative(prev))-zero))*2.5}.reduce(:+).round(2)}
end

#not_negative(n) ⇒ Object

Se comprueba que no sea un valor negativo, en caso de serlo, se sustituye por un 0



28
29
30
# File 'lib/P06/alimento.rb', line 28

def not_negative(n)
    n < 0 ? n = 0 : n = n
end

#to_sObject

Muestra la información de un alimento en concreto



22
23
24
25
# File 'lib/P06/alimento.rb', line 22

def to_s
	#El huevo frito tiene 14.1 proteinas, 0.0 glúcidos, 19.5 lípidos
	" #{@nom}: #{@prot} proteinas, #{@gluc} glúcidos, #{@lip} lípidos, #{@cal_index} calorías"
end