Para definir una clase en Ruby se hace de la siguiente manera, seguido de un constructor que instanciara las variables del objeto.
class Animal #Siempre los nombres de las clases inician con mayuscula def initialize(nombre, ruido) =begin Este metodo es un constructor y los constructores en Ruby siempre se llaman initialize y es muy parecido a los constructores que usamos en los demás lenguajes excepto por el nombre =end @nombre = nombre #Cuando agregamos esto @ quiere decir que estamos instanciando las variables @ruido = ruido end end
Los metodos por default son public en Ruby, de igual que los demas lenguajes como Java tiene metodos private y protected, para decir que un metodo es privado o protegido de hace de la siguiente manera.
class Animal def grita end private#Siempre para definir una clase privada primero se le pone la palabra clave private def genero end protected#Al igual manera que private se le coloca primero la palabra clave protected def patas end end
Ahora hablemos de herencia, bueno la herencia en Ruby es algo que se representa de manera jerárquica como si fuera un árbol, donde hay una clase padre y después de deriva de clases hijo, para entender muy bien como se representa les mostrare este diagrama que muestra como lo hace.
Este diagrama lo tome de un libro llamado :The Book of Ruby por Huw Collingbourne de la cual yo se los recomiendo.
Y como Ruby define la herencia? bueno esto lo veremos a continuación.
class Animal
def initialize(nombre,patas)
@nombre = nombre
@patas = patas
end
def nombre
return @nombre
end
def nombre=(nombre)#Nunca hagas esto-> "def nombre= (nombre)" osea dejar un espacio porque dará error.
=begin
Esto es igual a tener un set_nombre para "setear" una variable de igual si no entiendo a que me refiero orita lo podrán ver en los siguientes metodos.
=end
@nombre=nombre
end
def get_patas#Es igual a tener los metodos anteriores pero mas simple
return @patas
end
def set_patas(patas)
@patas=patas
end
end
#Ahora usando la herencia
class Perro < Animal
def initialize(nombre,patas,raza)
super(nombre,patas)#Donde se hereda nombre y patas de la clase Animal al igual que sus clases
#publicas o protegidas.
@raza = raza #se instancia una variable de la cual es de la clase Perro
end
def raza
return @raza
end
def raza=(raza)
@raza = raza
end
perro1 = Perro.new('Spyke',4,'Husky')
puts(perro1.nombre)
puts(perro1.get_patas)
puts(perro1.raza)
puts"Este es contenido de mi objeto #{perro1.inspect}"
=begin
El objeto perro1 llama al metodo inspect para ver el contenido del objecto por lo cual se le identifica por un numero hexadecimal con la que lo identifica Ruby, y cuales atributos tiene.
=end
p(perro1) #Esto es lo mismo que usar inspect
end
Ahora como en Ruby hay poliformismo que sirve para dar genericidad a un método de una clase.
En la cual veremos que definire una clase llamada Perro y otro Gato por la cual donde cada quien tiene sus propias caracteristicas.
class Animal
def initialize(nombre,patas,raza)
@nombre = nombre
@patas = patas
@raza = raza
end
def nombre
return @nombre
end
def nombre=(nombre)#Nunca hagas esto-> "def nombre= (nombre)" osea dejar un espacio porque dará error.
=begin
Esto es igual a tener un set_nombre para "setear" una variable de igual si no entiendo a que me refiero orita lo podrán ver en los siguientes metodos.
=end
@nombre=nombre
end
def get_patas#Es igual a tener los metodos anteriores pero mas simple
return @patas
end
def set_patas(patas)
@patas=patas
end
def raza
return @raza
end
def raza=(raza)
@raza=raza
end
end
#Ahora usando la herencia
class Perro < Animal
def initialize(nombre,patas,raza)
super(nombre,patas,raza)#Donde se hereda nombre,patas y raza de la clase Animal al igual que sus clases
#publicas o protegidas.
end
end
class Gato < Animal
def initialize(nombre,patas,raza)
super(nombre,patas,raza)
end
end
gato1 = Gato.new('Gatubela',4,'Persa')
print 'Gato'
puts(gato1.nombre)
puts(gato1.get_patas)
puts(gato1.raza)
print("\n")
perro1 = Perro.new('Spyke',4,'Husky')
print 'Perro'
puts(perro1.nombre)
puts(perro1.get_patas)
puts(perro1.raza)
puts"Este es contenido de mi objeto #{perro1.inspect}"
=begin
El objeto perro1 llama al metodo inspect para ver el contenido del objecto por lo cual se le identifica por un numero hexadecimal con la que lo identifica Ruby, y cuales atributos tiene.
=end
p(gato1) #Esto es lo mismo que usar inspect

Bien; completo con 10 puntos los 30 del rubro de ponencias.
ResponderEliminar