Ruby: Programación orientada a objetos

en RubyProgramaciónClass

Introducción a Ruby y a la programación orientada a objetos

Clases y objetos

Una clase es una definición de un objeto que contiene atributos a los que representa y métodos que puede ejecutar. En Ruby una clase se define de la siguiente forma:

1
2
3
4
5
6
class Coche
        def initialize(color, puertas)
                @color = color
                @puertas = puertas
        end
end

El método initialize es un método especial de Ruby que se utiliza como constructor cada vez que se crea una nueva instancia del objeto.

En Ruby todas las classes deben empezar con letra mayúscula.

Public, private, protected

Los métodos de una clase por defecto, y si no se indica lo contrario, son públicos. Además de público, un método puede ser protected o private.

Para determinar de qué tipo es basta con añadir la palabra clave private al principio de los métodos privados por ejemplo:

1
2
3
4
5
6
7
8
9
10
class coche
        def abrirPuertas
        end
        def cerrarPuertas
        end
        private
                def abrirGuantera
                end
        end
end

La palabra clave protected se usa de la misma forma que private con la diferencia que un si una clase hereda el método también puede usarla como si fuera público, mientras que si se llama desde el exterior se comporta como un método privado.

Herencia

Otra de las particularidades de cualquier lenguaje orientado a objetos es sin duda la herencia. En Ruby se define la herencia de la siguiente manera:

1
2
3
4
5
6
class Vehiculo
def initialize()
end
end
class Coche < Vehiculo
end

La clase coche hereda todos los métodos públicos o protegidos de vehículo.

Al igual que Java por ejemplo, Ruby tampoco soporta la herencia múltiple, es decir, una clase sólo puede heredar de otra clase y no de varias.

Poliformismo

El poliformismo sirve para dar genericidad a un método de una clase. Por ejemplo: Supongamos que tenemos dos tipos de objetos un triangulo y un círculo que heredan la clase forma. La clase forma tiene un método que se llama devolverPerimetro

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class
 Forma
        def devolverPerimetro()
        end
end
class Circulo < Forma
        def devolverPerimetro()
        ...
        end
end
class Triangulo < Forma
        def devolverPerimetro()
        ...
        end
end

Está claro que no se calcula de la misma forma el perímetro de un círculo que el de un triangulo, por ello cada objeto lo definirá de una forma distinta.

El poliformismo nos da la posibilidad de que si tenemos un objeto forma pero no sabemos si es triangulo o circulo, podamos llamar al método devolverPerimetro y nos devolverá el perímetro correcto.

Prohibida la reproducción total o parcial de este artículo sin el previo consentimiento de Webtutoriales.com

Comentarios