Sha256: 8c343304eef7c9b001f44a2f1df534184a2f651c845b796ef3721421d7a955b7

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

module Alimento
  # Constante que representa el valor energético que se obtiene de los glúcidos de un alimento
  VAL_EN_GLUCIDOS = 4

  # Constante que representa el valor energético que se obtiene de los lípidos de un alimento
  VAL_EN_LIPIDOS = 9

  # Constante que representa el valor energético que se obtiene de las proteinas de un alimento
  VAL_EN_PROTEINAS = 4


  class Alimentos
    include Comparable
    attr_reader :nombre, :proteinas, :glucidos, :lipidos

    # Se asigna el nombre, y la cantidad de proteínas, glúcidos y lípidos del alimento
    def initialize(nombre, proteinas, glucidos, lipidos)
      @nombre = nombre
      @proteinas = proteinas
      @glucidos = glucidos
      @lipidos = lipidos

    end

    # Operador de salida de la clase alimento.
    # Muestra el alimento con formato:
    # Nombre Cantidad_de_Proteínas Cantidad_de_glúcidos Cantidad_de_lípidos
    # Ej: Huevos fritos 14.1 0.0 19.5
    def to_s
      "#{@nombre}\t#{@proteinas}\t#{@glucidos}\t#{@lipidos}"
    end

    # Calcula y devuelve el valor energético del alimento
    def calcValEn
      (@proteinas * VAL_EN_PROTEINAS) + (@glucidos * VAL_EN_GLUCIDOS) + (@lipidos * VAL_EN_LIPIDOS)
    end

    # Incluido para poder utilizar los métodos del mixin Comparable
    def <=>(another)
      compare = calcValEn <=> another.calcValEn
      if compare == 0
        return @nombre <=> another.nombre
      else
        return compare
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
alimento-alu0100948226-0.1.0 lib/alimento/alimentos.rb