Sha256: a4f2af9a93cffd53fe1145ae3f174a4a3aaa21463828f1b759046a3d7c92a257

Contents?: true

Size: 1.84 KB

Versions: 1

Compression:

Stored size: 1.84 KB

Contents

# frozen_string_literal: false

module Alimento
  ##
  # Esta clase representa a un alimento mediante su nombre y su informacion nutricional
  class Alimento
    include Comparable

    attr_reader :nombre, :proteinas, :carbohidratos, :lipidos, :gei, :terreno, :cantidad

    ##
    # Metodo initialize para construir el objeto
    # @param info_nutricional [Hash] Hash con los valores de nombre y nutrientes del alimento
    # @param cantidad [Float] Cantidad del alimento
    def initialize(info_nutricional, cantidad = 1.0)
      @nombre = info_nutricional[:nombre]
      @proteinas = info_nutricional[:proteinas] * cantidad
      @carbohidratos = info_nutricional[:carbohidratos] * cantidad
      @lipidos = info_nutricional[:lipidos] * cantidad
      @gei = info_nutricional[:gei] * cantidad
      @terreno = info_nutricional[:terreno] * cantidad
      @cantidad = cantidad
    end

    ##
    # Convierte el objeto a una representacion en string
    # @return [String] "Cantidad -> Nombre, Nutrientes..."
    def to_s
      "#{@cantidad} -> #{@nombre}, #{@proteinas}, #{@carbohidratos}, #{@lipidos}, #{@gei}, #{@terreno}"
    end

    ##
    # Metodo mixin para comparar los alimentos
    # @param other [Alimento] Objeto del mismo tipo a comparar
    # @return [Integer] Resultado de comparar el valor energetico
    def <=>(other)
      return nil unless other.instance_of? Alimento

      valor_energetico <=> other.valor_energetico
    end

    ##
    # Calcula el valor energetico de un alimento a partir de sus nutrientes
    # @return [Float] Formula para hallar el valor energetico de un alimento
    def valor_energetico
      @proteinas * 4.0 + @carbohidratos * 4.0 + @lipidos * 9.0
    end

    ##
    # Calcula el impacto ambiental de un alimento
    # @return [Array] Valor del CO2 y uso del terreno
    def impacto_ambiental
      [@gei, @terreno]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
alimento-alu0101109251-0.1.0 lib/alimento/alimento.rb