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 |