#! /usr/local/rvm/rubies/ruby-2.1.1/bin/ruby # @author Miguel Parra Esquivel (miguelpe83) # @abstract # @since 0.6.0 class Alimentos include Comparable # @return [String] objeto convertidos con el formato string de la descripcion de la clase def self.description "clase que muestra informacion de nutrientes de un Alimento" end # @attr_reader [Symbol] describe los getter de la clase # @attr_writer [Symbol] describe los setter de la clase # @param nombre_ali [String] nombre del alimentos # @param proteinas [String] proteinas # @param glucidos [String] glucidos # @param lipidos [String] lipidos # @return [String] objeto convertidos con el formato string #attr_accessor :nombre_ali , :proteinas , :glucidos , :lipidos attr_writer :nombre_ali , :proteinas , :glucidos , :lipidos attr_reader :nombre_ali , :proteinas , :glucidos , :lipidos def initialize (nombre_ali,proteinas,glucidos,lipidos) @nombre_ali = nombre_ali @proteinas = proteinas @glucidos = glucidos @lipidos = lipidos end ##### getter ####### # @param valor [String] nombre del alimentos def get_nombre_ali (valor) @nombre_ali = valor end # @param valor [String] proteinas def get_proteinas (valor) @proteinas = valor end # @param valor [String] glucidos def get_glucidos (valor) @glucidos = valor end # @param valor [String] lipidos def get_lipidos (valor) @glucidos = valor end ###### metodo to_s ################ # @return [String] objeto convertidos con el formato string de nombre_ali def nombre_ali_to_s imprime = "#{@nombre_ali}" #número de porciones return imprime end # @return [String] objeto convertidos con el formato string proteinas def proteinas_to_s imprime = " #{@proteinas}" #número de porciones return imprime end # @return [String] objeto convertidos con el formato string glucidos def glucidos_to_s imprime = " #{@glucidos}" #número de porciones return imprime end # @return [String] objeto convertidos con el formato string lipidos def lipidos_to_s imprime = " #{@lipidos}" #número de porciones return imprime end # @return [String] objeto convertidos con el formato string def to_s nombre_ali_to_s + proteinas_to_s + glucidos_to_s + lipidos_to_s end ### calculo de calorias ########### # @return [String] objeto convertidos con el formato string de calculo_calorias def calculo_calorias result = 0 result = (@proteinas*4.0) + (@glucidos*4.0) + (@lipidos*9.0) end # @param other [String] hacerlo comparable el objeto con otro objeto del mismo tipo # @return [String] objeto convertidos con el formato string def <=> (other) return nil unless other.instance_of? Alimentos @nombre_ali <=> other.nombre_ali @proteinas <=> other.proteinas @glucidos <=> other.glucidos @lipidos <=> other.lipidos end # def <=>(other) # # los comentarios locales a los métodos no generan documentación # return nil unless other.instance_of? Point # @x**2 + @y**2 <=> other.x**2 + other.y**2 # end #Tipeado pato # def ==(other) # if ((other.respond_to?tipo_ali) && (other.respond_to?proteinas)&& (other.respond_to?lipidos)&& (other.respond_to?glucidos)) then # @tipo_ali == other.tipo_ali && @proteinas == other.proteinas && @lipidos == other.lipidos && @glucidos == other.glucidos # end # rescue # false # end #Mas restrictivo (sin herencia - usa instance_of?) # def ==(other) # if other.instance_of?Alimentos # @tipo_ali == other.tipo_ali && @proteinas == other.proteinas && @lipidos == other.lipidos && @glucidos == other.glucidos # else # false # end # end def ==(other) # los comentarios locales a los métodos no generan documentación if other.is_a?Alimentos @tipo_ali == other.tipo_ali && @proteinas == other.proteinas && @lipidos == other.lipidos && @glucidos == other.glucidos else false end end ############################################# OTRO CODIGO ###################################################3 # Tipeado pato # def ==(other) # if ((other.respond_to?x) && (other.respond_to?y)) then # @x == other.x && @y == other.y # end # rescue # false # end # Mas restrictivo (sin herencia - usa instance_of?) # def ==(other) # if other.instance_of?Point # @x == other.x && @y == other.y # else # false # end # end # Restrictivo (con herencia - usa is_a?) # Se invalida porque el que proporciona el mix-in # no distingue entre (1,0) y el (0,1) # def ==(other) # # los comentarios locales a los métodos no generan documentación # if other.is_a?Point # @x == other.x && @y == other.y # else # false # end # end ##mujer # def <=>(other) # if ((@autor <=> other.autor)==0) # if((@titulo <=> other.titulo)==0) # @fecha_publicacion <=> other.fecha_publicacion # else # @titulo <=> other.titulo # end # else # @autor <=> other.autor # end # end ##josu # def <=>(other) # if((@autor <=> other.autor)==0) # if ((@fecha_publicacion <=> other.fecha_publicacion)==0) # @titulo <=> other.titulo # else # @fecha_publicacion <=> other.fecha_publicacion # end # else # @autor <=> other.autor # end # end end