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 endAhora 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