Skip to main content

Conceptos Base

La Programación Orientada a Objetos (POO) es un paradigma que organiza el software como una colección de objetos que interactúan entre sí. Cada objeto es una instancia de una clase, que actúa como plantilla para definir sus atributos (estado) y métodos (comportamiento).

“Pensar en objetos es similar a cómo percibimos el mundo: un carro, una persona o una cuenta bancaria tienen características propias y comportamientos definidos”.

¿Qué es una clase?

Una clase es una estructura que define las propiedades (atributos) y capacidades (métodos) que tendrán sus objetos. Es como el plano arquitectónico de una casa.

¿Qué es un objeto?

Un objeto es una instancia concreta de una clase. Si la clase es el plano de una casa, un objeto es una casa construida con ese plano. Tiene valores específicos en sus atributos y puede ejecutar los métodos definidos.

Ejemplo real:

  • Clase: Car
  • Objeto: myCar = new Car("red", "Toyota")

Analogía simple

Piensa en una receta de cocina (clase) que describe cómo hacer una torta, y una torta específica (objeto) que tú preparas usando esa receta. Cada torta hecha con esa receta puede tener variaciones (ingredientes personalizados), pero todas siguen la misma estructura básica.

Código en Java de Conceptos Básicos

Ejemplo básico: Clase Person

Ejemplo intermedio: modularidad

Diferencias entre Programación Estructurada y Programación Orientada a Objetos

CaracterísticaProgramación Estructurada (PE)Programación Orientada a Objetos (POO)
ParadigmaProceduralBasado en objetos
Unidad principalFunción / procedimientoObjeto (instancia de clase)
Organización del códigoSecuencia de instrucciones y funcionesClases que encapsulan datos y métodos
EncapsulamientoNo está presenteCentral: atributos + métodos en la misma clase
Reutilización de códigoLimitada a funcionesAlta, gracias a herencia, composición y polimorfismo
AbstracciónBajo nivel (se trabaja con datos directamenteAlto nivel (modelos del mundo real)
Manejo del estadoVariables globales o localesEstado mantenido dentro de objetos
MantenimientoDifícil en proyectos grandesMás organizado, fácil de mantener
Ejemplo típicoCálculo de promedio de notas con funcionesGestión de un curso con objetos Student, Course, Teacher
Lenguajes comunesC, PascalJava, C++, Python, C#, Kotlin

Imagina construir una fábrica de autos:

  • PE: cada empleado tiene instrucciones escritas en papel (funciones separadas); no hay roles ni jerarquía.
  • POO: cada empleado es parte de un departamento (clase), con tareas claras, roles definidos y comunicación estructurada.

La POO no reemplaza a la PE, sino que la extiende y organiza mejor para proyectos grandes y colaborativos. Comprender ambas permite elegir la mejor herramienta según el contexto del problema.

Mini proyecto: Sistema de Registro de Mascotas

  • Clases: Pet, Owner
  • Operaciones: agregar mascota, mostrar datos, cambiar dueño
  • Estructura:
    • edu.usta.domain.Pet
    • edu.usta.domain.Owner
    • edu.usta.application.PetService
    • edu.usta.ui.MainApp
  • Propósito: integrar creación de objetos, encapsulamiento y modularidad básica.

Reflexión final de Conceptos Base

Principios SOLID aplicados:

  • S: Person, Car y Pet tienen responsabilidades claras.
  • O: Las clases están abiertas a extensión (nuevos métodos) sin modificar su implementación.

Patrones aplicados:

  • Entidad (Entity): Las clases representan conceptos del dominio real.
  • Servicio (Service): CarService gestiona la lógica de negocio sin modificar la entidad.

Aplicación práctica de Conceptos Base

  • En videojuegos: Player, Enemy, Weapon como clases.
  • En sistemas académicos: Student, Course, Teacher.
  • En banca: Account, Transaction, Customer.

Escenario de clase: Crear un sistema donde cada estudiante crea su propio objeto Book, con atributos title, author y year, y métodos printInfo() y updateYear().

Recursos y Bibliografía