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. class Coche
2. def initialize(color, puertas)
3. @color = color
4. @puertas = puertas
5. end
6. end
7. 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.
8. 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. class coche
2. def abrirPuertas
3. end
4. def cerrarPuertas
5. end
6. private
7. def abrirGuantera
8. end
9. end
10. end
11. 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. class Vehiculo
2. def initialize()
3. end
4. end
5. class Coche < Vehiculo
6. end
7. La clase coche hereda todos los métodos públicos o protegidos de vehículo.
8. 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. class
2. Forma
3. def devolverPerimetro()
4. end
5. end
6. class Circulo < Forma
7. def devolverPerimetro()
8. ...
9. end
10. end
11. class Triangulo < Forma
12. def devolverPerimetro()
13. ...
14. end
15. end
16. 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.
17. 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
No hay comentarios:
Publicar un comentario