Entendiendo los objetos en ruby

class MoldeLego
end
lego1 = MoldeLego.new
class MoldeLego
def metodoDeInstancia()
end
end
class MoldeLego
def acoplar(otro_lego)
return MoldeLego.new()
end
end
class MoldeLego
def initialize()
@size = 1 # las variables de instancia se definen con una @
end
end
lego1 = MoldeLego.new # Este Lego ahora tiene tamaño 1
class MoldeLego
def initialize()
@size = 1 # las variables de instancia se definen con una @
end
def getSize()
return size
end
def setSize(new_size)
@size = new_size
end
end
lego1 = MoldeLego.new # Este Lego ahora tiene tamaño 1
lego1.setSize(5)
lego1.getSize()
class MoldeLego
def initialize()
@size = 1 # las variables de instancia se definen con una @
end
def size()
return size
end
def size=(new_size)
@size = new_size
end
end
lego1 = MoldeLego.new # Este Lego ahora tiene tamaño 1
lego1.size # devuelve 1, pues es el tamaño original
lego1.size = 5
lego1.size # devuelve 5, ya que lo cambiamos
class MoldeLego
attr_accesor :size
def initialize()
@size = 1 # las variables de instancia se definen con una @
end
end
class MoldeLego
attr_accessor:size
# Pasamos un valor al constructor
# para poder crear legos de otros tamaños
# en caso de que se omita es de tamaño 1
def iniatilize(size_orig = 1)
@size = size_orig
end
def acoplar(otro_lego)
return MoldeLego.new(self.size + otro_lego.size) # devolvemos un lego de la suma del tamaño de los otros legos
end
end
lego1 = MoldeLego.new
lego2 = MoldeLego.new
lego3 = lego1.acoplar(otro_lego)
class MoldeLego
attr_accessor:size
# Pasamos un valor al constructor
# para poder crear legos de otros tamaños
# en caso de que se omita es de tamaño 1
def iniatilize(size_orig = 1)
@size = size_orig
end
def +(otro_lego)
return MoldeLego.new(self.size + otro_lego.size) # devolvemos un lego de la suma del tamaño de los otros legos
end
end
lego1 = MoldeLego.new
lego2 = MoldeLego.new
lego3 = lego1 + lego2
class MoldeLego
attr_accessor:size
@@cuenta_legos = 0
end
class MoldeLego
attr_accessor:size
@@cuenta_legos = 0
def iniatilize(size_orig = 1)
@size = size_orig
@@cuenta_legos += 1
end
end
class MoldeLego
class << self; attr_accessor :cuenta_legos end
attr_accessor:size
@@cuenta_legos = 0
def iniatilize(size_orig = 1)
@size = size_orig
@@cuenta_legos += 1
end
end
class MoldeLego
class << self; attr_accessor :cuenta_legos end
def self.getCuentaLegos()
return @@cuenta_legos
end
end

De los legos al molde:

Una de las curiosidades que tienen los lenguajes orientados a objetos es que desde los objetos podemos rescatar las propiedades de la clase, no así al revés, desde las intancias no podemos saber cuales son las propiedades de las intancias.

lego.class.cuentaLegos
MoldeLego.cuentaLegos

--

--

Lean entrepreneur, Ruby on Rails developer and Teacher. Analytics geek. Founder of www.desafiolatam.com

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Gonzalo Sánchez D

Gonzalo Sánchez D

Lean entrepreneur, Ruby on Rails developer and Teacher. Analytics geek. Founder of www.desafiolatam.com