En Ruby, la programación orientada a objetos (POO) es un paradigma fundamental. Este enfoque permite organizar el código en unidades llamadas "clases" y "objetos", facilitando la reutilización y la modularidad. En esta sección, aprenderemos los conceptos básicos de clases y objetos en Ruby.
¿Qué es una Clase?
Una clase es una plantilla para crear objetos. Define un conjunto de atributos y métodos que los objetos creados a partir de la clase tendrán.
Definición de una Clase
Para definir una clase en Ruby, utilizamos la palabra clave class
seguida del nombre de la clase. Por convención, los nombres de las clases en Ruby comienzan con una letra mayúscula y utilizan el estilo CamelCase.
Atributos de Clase
Los atributos de una clase son variables que pertenecen a la clase y se utilizan para almacenar información sobre los objetos.
Variables de Instancia
Las variables de instancia son atributos que pertenecen a una instancia específica de una clase. Se definen utilizando el prefijo @
.
En el ejemplo anterior, @nombre
y @edad
son variables de instancia.
Métodos de Clase
Los métodos de una clase son funciones que definen el comportamiento de los objetos creados a partir de la clase.
Definición de Métodos
Para definir un método en una clase, utilizamos la palabra clave def
seguida del nombre del método.
class Persona def initialize(nombre, edad) @nombre = nombre @edad = edad end def saludar "Hola, mi nombre es #{@nombre} y tengo #{@edad} años." end end
En el ejemplo anterior, saludar
es un método de la clase Persona
.
Creación de Objetos
Para crear un objeto a partir de una clase, utilizamos el método new
.
Salida:
Ejemplo Completo
A continuación, se muestra un ejemplo completo que incluye la definición de una clase, la creación de objetos y la invocación de métodos.
class Persona def initialize(nombre, edad) @nombre = nombre @edad = edad end def saludar "Hola, mi nombre es #{@nombre} y tengo #{@edad} años." end def cumplir_anios @edad += 1 end end # Crear un objeto de la clase Persona persona1 = Persona.new("Juan", 30) puts persona1.saludar # Llamar al método cumplir_anios persona1.cumplir_anios puts persona1.saludar
Salida:
Ejercicio Práctico
Ejercicio 1
Define una clase Coche
con los siguientes atributos y métodos:
- Atributos:
marca
,modelo
,año
- Métodos:
detalles
(devuelve una cadena con los detalles del coche),edad
(calcula la edad del coche)
Solución
class Coche def initialize(marca, modelo, año) @marca = marca @modelo = modelo @año = año end def detalles "Marca: #{@marca}, Modelo: #{@modelo}, Año: #{@año}" end def edad Time.now.year - @año end end # Crear un objeto de la clase Coche coche1 = Coche.new("Toyota", "Corolla", 2015) puts coche1.detalles puts "Edad del coche: #{coche1.edad} años"
Salida:
Conclusión
En esta sección, hemos aprendido los conceptos básicos de clases y objetos en Ruby. Hemos visto cómo definir una clase, crear objetos y definir métodos para esos objetos. Estos conceptos son fundamentales para la programación orientada a objetos y serán la base para temas más avanzados en Ruby.
En la próxima sección, exploraremos las variables y métodos de instancia, profundizando en cómo gestionar el estado y el comportamiento de los objetos 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