Class: Alimentos

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

Overview

Clase padre de alimentos.

Direct Known Subclasses

AlimentoC

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(proteinasA, glucidosA, lipidosA) ⇒ Alimentos

Note:

Construcctor de la clase alimentos

Returns a new instance of Alimentos.

Parameters:

  • Le

    pasamos los datos necesarios para construir el alimento, proteinas [Number], glucidos [Number] y lipidos [Number].



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

def initialize(proteinasA, glucidosA, lipidosA)
    @proteinas = proteinasA
    @glucidos = glucidosA
    @lipidos = lipidosA
end

Instance Attribute Details

#datosObject

Returns the value of attribute datos.



3
4
5
# File 'lib/alimento/alimento.rb', line 3

def datos
  @datos
end

#glucidosObject

Returns the value of attribute glucidos.



3
4
5
# File 'lib/alimento/alimento.rb', line 3

def glucidos
  @glucidos
end

#lipidosObject

Returns the value of attribute lipidos.



3
4
5
# File 'lib/alimento/alimento.rb', line 3

def lipidos
  @lipidos
end

#proteinasObject

Returns the value of attribute proteinas.



3
4
5
# File 'lib/alimento/alimento.rb', line 3

def proteinas
  @proteinas
end

Instance Method Details

#<=>(otro) ⇒ Object

Note:

Sobrecargamos el operador distinto para que funcione el Módulo Comparable. Comparación efectuada según el valor energético.

Returns Si los valores de los objetos son iguales, devuelve 0, en caso de que el de este objeto sea menor, devolverá -1 y 1 en otro caso.

Parameters:

  • Objeto

    del tipo alimento con el cual se efectuará la comparación.

Returns:

  • Si los valores de los objetos son iguales, devuelve 0, en caso de que el de este objeto sea menor, devolverá -1 y 1 en otro caso.



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/alimento/alimento.rb', line 17

def <=> otro
    return nil unless otro.is_a?Alimentos #Si el otro objeto no es de tipo Alimentos devuelve nulo.
    if v_energetico == otro.v_energetico
        return 0 
    else
        if v_energetico < otro.v_energetico
            return -1
        else 
            return 1
        end
    end
end

#==(otro) ⇒ Object

Note:

Sobrecargamos el operador igual para que funcione el Módulo Comparable. Comparación efectuada según el valor energético.

Returns Si ambos objetos son iguales en valor energético, devolverá verdadero, en cualquier otro caso, será falso el valor devuelto.

Parameters:

  • Objeto

    del tipo alimento con el cual se efectuará la comparación.

Returns:

  • Si ambos objetos son iguales en valor energético, devolverá verdadero, en cualquier otro caso, será falso el valor devuelto.



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

def == otro
    if otro.is_a?Alimentos
        v_energetico == otro.v_energetico
    else
        false
    end
end

#aibc(indice) ⇒ Object

Returns Devuelve el valor de aibc para ese individuo.

Parameters:

  • Se

    pasa el indice de del individuo al que acceder.

Returns:

  • Devuelve el valor de aibc para ese individuo.



57
58
59
60
61
62
63
64
65
66
67
# File 'lib/alimento/alimento.rb', line 57

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

#to_sObject

Note:

Método para la correcta visualización del alimento.

Returns Devuelve la salida de un Alimento formateado.

Returns:

  • Devuelve la salida de un Alimento formateado.



50
51
52
53
# File 'lib/alimento/alimento.rb', line 50

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

#v_energeticoObject

Note:

Método para realizar el cálculo del valor energético.

Returns Calcula el valor energético de un alimento.

Returns:

  • Calcula el valor energético de un alimento.



43
44
45
46
# File 'lib/alimento/alimento.rb', line 43

def v_energetico
    valor = (@proteinas * 4) + (@glucidos * 4) + (@lipidos * 9)
    valor
end