domingo, 5 de enero de 2014

Programando en Ruby ... no. 2


Crear una clase en Ruby

ejemplos.rb
 
class Manguera

    def initialize(longitud,color)
        @longitud=longitud
        @color=color
    end

    attr_reader :longitud, :color
end

#'main' del programa
begin
#instanciamos la clase 'Manguera'
    manguera=Manguera.new('50 mts','negra')
rescue
    @error_message="#{$!}"
ensure
#imprimimos los datos
    puts "color: #{manguera.color} , longitud: #{manguera.longitud}"
end


Ruby es un lenguaje muy parecido a Python ,si tienes tiempo programando en el te parecerá bastante familiar.


¿Cómo quedaría la clase en Python?

ejemplos.py

class Manguera:
    def __init__(self,longitud,color):
        self.color=color
        self.longitud=longitud


try:
    manguera=Manguera('35 mts','naranja')
except Exception, e:
    print e
finally:
    print "color: %s, longitud: %s"%(manguera.color,manguera.longitud)

Modificando el código de la clase (en Ruby), podemos introducir valores:

class Manguera
    def initialize(longitud,color)
        @longitud=longitud
        @color=color
    end

    attr_reader :longitud, :color
end


color=''
longitud=''
begin
   #pedimos el color 
    puts "Color: "
    STDOUT.flush
    color=gets.chomp
   #pedimos la longitud
    puts "Longitud: "
    STDOUT.flush
    longitud=gets.chomp

    if color!='' and longitud!=''
        manguera=Manguera.new(longitud,color)
    end
   
rescue
    @error_message="#{$!}"
ensure
    puts "color: #{manguera.color} , longitud: #{manguera.longitud}"
end


También podriamos crear un método para visualizar los datos:

class Manguera
    def initialize(longitud,color)
        @longitud=longitud
        @color=color
    end

   #creamos  el método para visualizar los datos
   def verDatos
         puts "color:  #{color} , longitud: #{longitud}"
   end

    attr_reader :longitud, :color
end


color=''
longitud=''

=begin
     nota: esto es un comentario
=end

begin
   #pedimos el color 
    puts "Color: "
    STDOUT.flush
    color=gets.chomp
   #pedimos la longitud
    puts "Longitud: "
    STDOUT.flush
    longitud=gets.chomp

    if color!='' and longitud!=''
        manguera=Manguera.new(longitud,color)
    end
   
rescue
    @error_message="#{$!}"
ensure
    manguera.verDatos
end


Links:
http://codemonkeyjunior.blogspot.mx/2013/05/un-vistazo-ruby.html
http://codemonkeyjunior.blogspot.mx/2013/06/programando-en-ruby-no-1.html
http://www.elclubdelprogramador.com/category/programacion/ruby/

2 comentarios:

  1. Por qué pones en el ensure o en el finally esos métodos, colocandolos en el begin o try sería suficiente, así manejaría la excepción de por ejemplo un método no definido.

    ResponderEliminar
  2. Gracias por leer el post y por la aclaración

    ResponderEliminar