Paradigma Orientado a Objetos¶
El paradigma orientado a objetos (POO) supuso un cambio profundo en la forma de desarrollar software.
Hasta su aparición, la mayoría de los programas estaban basados en procesos o funciones (enfoque estructurado), pero la POO cambió el foco hacia los datos y entidades que intervienen en esos procesos.
En este paradigma, una aplicación está formada por objetos que interactúan entre sí para llevar a cabo las tareas del sistema.
Cada objeto es una instancia de una clase, y una clase define:
- Atributos o propiedades: datos que describen el estado del objeto.
- Métodos: acciones o comportamientos que el objeto puede realizar.
Cuando un objeto necesita que otro ejecute una acción, le envía un mensaje, que consiste en una solicitud para que ejecute uno de sus métodos.
flowchart TD
A[Clase Persona]
B[Objeto alumno1]
C[Objeto profesor1]
D[Sistema]
A --> B
A --> C
B --> D
C --> D
Características principales de la Programación Orientada a Objetos¶
Para que un lenguaje pueda considerarse orientado a objetos, debe cumplir una serie de características fundamentales (Coad y Yourdon, 1991).
Abstracción¶
La abstracción consiste en identificar las características esenciales de un conjunto de objetos, ignorando los detalles irrelevantes.
Cada objeto funciona como una unidad independiente capaz de realizar tareas, modificar su estado y comunicarse con otros sin mostrar cómo lo hace internamente.
Encapsulamiento¶
El encapsulamiento agrupa todos los elementos relacionados (atributos y métodos) dentro de una misma entidad: la clase.
Esto mejora la cohesión y protege los datos del acceso externo no controlado.
Herencia¶
La herencia permite que unas clases (subclases o clases hijas) hereden atributos y métodos de otras (superclases o clases padre).
Esto facilita la reutilización del código y la creación de jerarquías.
flowchart TD
V[Clase Vehículo] --> C[Coche]
V --> M[Moto]
Polimorfismo¶
El polimorfismo significa “muchas formas”.
Permite que un mismo método tenga diferentes comportamientos según el tipo de objeto que lo invoque.
Modularidad¶
La modularidad consiste en dividir una aplicación en módulos o partes independientes, cada una responsable de una función específica.
Ocultamiento (Información Oculta)¶
El ocultamiento de información implica que cada objeto solo expone una interfaz pública para interactuar con él.
El resto de sus datos o procesos internos permanecen ocultos.
Recolección de basura (Garbage Collection)¶
Es la técnica por la cual el entorno de ejecución libera automáticamente la memoria ocupada por los objetos que ya no se utilizan.
Lenguajes orientados a objetos¶
Un lenguaje de programación orientado a objetos (OOP) es aquel que implementa las características anteriores.
| Lenguaje | Recolección de basura | Paradigma principal |
|---|---|---|
| Java | ✓ Automática | Orientado a objetos |
| Python | ✓ Automática | Multiparadigma |
| C++ | ✗ Manual | Estructurado y OOP |
| Kotlin | ✓ Automática | OOP y funcional |
| Swift | ✓ Automática | OOP |
| JavaScript | ✓ Automática | OOP basado en prototipos |
Actividad¶
-
AC402 (RA5 / / IC1 / 1p). A partir de una posible implementación de una aplicación de biblioteca del centro, genera los objetos necesarios para su correcto funcionamiento.
Ten en cuenta que la aplicación debe permitir, como mínimo:
- Gestionar libros (altas, bajas, préstamos…)
- Gestionar usuarios (alumnado, profesorado…)
- Registrar préstamos y devoluciones
Puedes añadir más objetos si lo consideras necesario (por ejemplo: Reserva, Sanción, Ejemplar, etc.). Recuerda que debes intentar aplicar los conceptos de este apartado.