Programación Orientada a Objetos (POO) en Ruby
La Programación Orientada a Objetos (POO) es un paradigma de programación que organiza el código en torno a objetos. Un objeto representa una entidad del mundo real o del sistema que se está modelando.
Clases: Link to heading
- Las clases son plantillas que definen los atributos (variables de instancia) y el comportamiento (métodos) de los objetos.
- Se declara utilizando la palabra clave class.
Ejemplo: Link to heading
Forma larga Link to heading
class Persona
# Constructor
def initialize(nombre, edad)
@nombre = nombre
@edad = edad
end
# Getters
def nombre
@nombre
end
def edad
@edad
end
# Setters
def nombre=(nombre)
@nombre = nombre
self
end
def edad=(edad)
@edad = edad
self
end
# ... otros metodos de comportamiento
end
Forma corta Link to heading
class Persona
# Metodos de clase
def self.nombres_sugeridos
["juan", "ana", "maria"]
end
# Constructor
def initialize(nombre, edad)
@nombre = nombre
@edad = edad
end
# Metodos de instancia (Getters y Setters)
attr_accessor :nombre, :edad
# ... otros metodos de comportamiento
end
Forma aun mas corta Link to heading
class Person < Struct.new(:nombre, :edad)
# Struct declara el constructor, getters y setters
# ... otros metodos de comportamiento
end
Cada enfoque tiene sus ventajas y desventajas. La forma larga ofrece mayor control, mientras que las formas abreviadas son más concisas. La elección depende de las necesidades específicas de la clase.
Objetos: Link to heading
- Las instancias de una clase son los objetos.
- Se crean utilizando el método new de la clase.
- Cada objeto tiene sus propios valores para los atributos definidos en la clase.
Ejemplo: Link to heading
persona = Persona.new("Juan", 25)
puts persona.nombre # "Juan"
puts persona.edad # 25
Métodos: Link to heading
- Los métodos son funciones definidas dentro de una clase que operan sobre los objetos de esa clase.
- Pueden acceder y modificar los atributos del objeto.
- Se pueden definir métodos de clase y métodos de instancia.
Ejemplo: Link to heading
class Persona
# ...
def saludo
puts "Hola, mi nombre es #{@nombre}"
end
end
persona.saludo # "hola, mi nombre es Juan"
Herencia: Link to heading
- Una clase puede heredar atributos y comportamiento de otra clase (clase padre).
- La clase hija (subclase) puede agregar su propia funcionalidad o modificar la heredada.
Abstracción: Link to heading
- La POO permite ocultar los detalles de implementación de un objeto y exponer solo su interfaz (métodos públicos).
La POO proporciona una forma de organizar el código de manera modular, reutilizable y mantenible. Al modelar el mundo real con objetos, los programas se vuelven más fáciles de entender, modificar y ampliar.
Consejos adicionales: Link to heading
- Puedes usar módulos para agrupar funcionalidad compartida entre clases.
- Puedes usar el patrón de diseño MVC para separar la lógica del negocio, la presentación y el control.
- Puedes usar la inyección de dependencias para mejorar la testabilidad y mantenibilidad del código.
¡Sigue experimentando con POO para crear aplicaciones complejas y bien diseñadas!