Class: Alimento_

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/food/food_.rb

Overview

Esta clase permite representar un alimento.

Direct Known Subclasses

Grupo_alimento

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nombre, proteinas, lipidos, glucidos) ⇒ Alimento_

Constructor al que se le pasa el nombre del alimmento, cantidad de proteinas, cantidad de lipidos y cantidad de glucidos



18
19
20
21
22
23
# File 'lib/food/food_.rb', line 18

def initialize(nombre, proteinas, lipidos, glucidos)
   @nombre=nombre
   @proteinas=proteinas
   @lipidos=lipidos
   @glucidos=glucidos
end

Instance Attribute Details

#datosObject

Returns the value of attribute datos.



15
16
17
# File 'lib/food/food_.rb', line 15

def datos
  @datos
end

#glucidosObject (readonly)

Returns the value of attribute glucidos.



14
15
16
# File 'lib/food/food_.rb', line 14

def glucidos
  @glucidos
end

#lipidosObject (readonly)

Returns the value of attribute lipidos.



14
15
16
# File 'lib/food/food_.rb', line 14

def lipidos
  @lipidos
end

#nombreObject (readonly)

Returns the value of attribute nombre.



14
15
16
# File 'lib/food/food_.rb', line 14

def nombre
  @nombre
end

#proteinasObject (readonly)

Returns the value of attribute proteinas.



14
15
16
# File 'lib/food/food_.rb', line 14

def proteinas
  @proteinas
end

Instance Method Details

#<=>(another) ⇒ Object

Sobrecarga del metodo <=> para que un Alimento_ se compare con otro a través de su valor ennergético.



38
39
40
41
# File 'lib/food/food_.rb', line 38

def <=> another
    return nil unless another.is_a? Alimento_
    self.valor_energetico <=> another.valor_energetico 
end

#aibc(indice) ⇒ Object

Funcion para calcular el AIBC de forma funcional.



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/food/food_.rb', line 44

def aibc(indice)
    vector = []
    datos[indice][1..datos[indice].length-1].zip(datos[indice][0..datos[indice].length-2]) do | gi, gi_1 | 
        if gi < datos[indice][0]
            vector << 0.0
        else 
            vector << (((gi-datos[indice][0])+(gi_1-datos[indice][0]))/2)*5
        end
    end 
    vector.reduce(:+)
end

#to_sObject

Metodo para mostrar formateado:

>formato= Nombre del alimento nºproteinas nºglucido nºlipidos



27
28
29
# File 'lib/food/food_.rb', line 27

def to_s
    "#{@nombre}\t#{@proteinas}\t#{@glucidos}\t#{@lipidos}"
end

#valor_energeticoObject

Metodo para calcular el valor energético de un alimento:

>Valor energetico=proteinas*4+glucidos*4+lipidos*9.



33
34
35
# File 'lib/food/food_.rb', line 33

def valor_energetico
    (@proteinas*4) + (@glucidos*4) + (@lipidos*9)
end