La herencia es un concepto fundamental en la programación orientada a objetos (OOP) que permite a una clase (subclase o clase derivada) heredar atributos y métodos de otra clase (superclase o clase base). En Ruby, la herencia se utiliza para crear una jerarquía de clases que comparten comportamientos comunes, lo que facilita la reutilización del código y la organización lógica del mismo.
Conceptos Clave
-
Superclase y Subclase:
- Superclase: La clase de la cual se heredan atributos y métodos.
- Subclase: La clase que hereda atributos y métodos de la superclase.
-
Palabra clave
super:- Utilizada dentro de un método en la subclase para llamar al método correspondiente en la superclase.
-
Sobrescritura de Métodos:
- La subclase puede redefinir métodos de la superclase para proporcionar una implementación específica.
Ejemplo Práctico
Definiendo una Superclase
Definiendo una Subclase
Uso de la Herencia
# Creando una instancia de la superclase
animal = Animal.new("Generic Animal")
puts animal.speak
# Output: Hello, I am an animal.
# Creando una instancia de la subclase
dog = Dog.new("Buddy")
puts dog.speak
# Output: Woof! My name is Buddy.Explicación del Código
-
Superclase
Animal:- Tiene un método
initializeque establece el nombre del animal. - Tiene un método
speakque devuelve una cadena de texto.
- Tiene un método
-
Subclase
Dog:- Hereda de
Animalusando<. - Redefine el método
speakpara proporcionar una implementación específica para los perros.
- Hereda de
Uso de super
La palabra clave super se utiliza para llamar al método de la superclase desde la subclase. Esto es útil cuando deseas extender la funcionalidad de un método heredado sin reemplazarlo por completo.
class Dog < Animal
def initialize(name, breed)
super(name) # Llama al método initialize de la superclase
@breed = breed
end
def speak
super + " I am a #{@breed}."
end
end
dog = Dog.new("Buddy", "Golden Retriever")
puts dog.speak
# Output: Hello, I am an animal. I am a Golden Retriever.Ejercicio Práctico
Ejercicio 1: Crear una Jerarquía de Clases
-
Define una superclase
Vehiclecon los siguientes atributos y métodos:- Atributo
make(marca del vehículo). - Método
initializeque establece el atributomake. - Método
descriptionque devuelve una cadena de texto con la marca del vehículo.
- Atributo
-
Define una subclase
Carque herede deVehicley añada los siguientes atributos y métodos:- Atributo
model(modelo del coche). - Método
initializeque establece los atributosmakeymodel. - Método
descriptionque sobrescriba el método de la superclase para incluir el modelo del coche.
- Atributo
Solución
class Vehicle
def initialize(make)
@make = make
end
def description
"This is a vehicle made by #{@make}."
end
end
class Car < Vehicle
def initialize(make, model)
super(make)
@model = model
end
def description
super + " The model is #{@model}."
end
end
# Prueba de la jerarquía de clases
vehicle = Vehicle.new("Toyota")
puts vehicle.description
# Output: This is a vehicle made by Toyota.
car = Car.new("Toyota", "Corolla")
puts car.description
# Output: This is a vehicle made by Toyota. The model is Corolla.Resumen
En esta sección, hemos aprendido sobre la herencia en Ruby, un concepto clave en la programación orientada a objetos. Hemos visto cómo una subclase puede heredar atributos y métodos de una superclase, cómo sobrescribir métodos y cómo utilizar la palabra clave super para extender la funcionalidad de los métodos heredados. La herencia nos permite crear jerarquías de clases que facilitan la reutilización y organización del código.
En la próxima sección, exploraremos los módulos y mixins, que proporcionan otra forma de compartir comportamientos entre clases en Ruby.
Curso de Programación en Ruby
Módulo 1: Introducción a Ruby
Módulo 2: Conceptos Básicos de Ruby
Módulo 3: Trabajando con Colecciones
Módulo 4: Programación Orientada a Objetos en Ruby
- Clases y Objetos
- Variables y Métodos de Instancia
- Variables y Métodos de Clase
- Herencia
- Módulos y Mixins
Módulo 5: Conceptos Avanzados de Ruby
- Bloques, Procs y Lambdas
- Metaprogramación
- Manejo de Excepciones
- Entrada/Salida de Archivos
- Expresiones Regulares
Módulo 6: Introducción a Ruby on Rails
- ¿Qué es Ruby on Rails?
- Configuración del Entorno Rails
- Creando una Aplicación Simple en Rails
- Arquitectura MVC
- Enrutamiento
Módulo 7: Pruebas en Ruby
- Introducción a las Pruebas
- Pruebas Unitarias con Minitest
- Desarrollo Guiado por Comportamiento con RSpec
- Mocking y Stubbing
Módulo 8: Mejores Prácticas en Ruby
- Estilo de Código y Convenciones
- Refactorización
- Optimización del Rendimiento
- Mejores Prácticas de Seguridad
