# 🎓 Programación Orientada a Objetos - UNNE 2024
Esta carpeta reúne todos los ejercicios, materiales de estudio, teoría y proyectos desarrollados durante la materia **Programación Orientada a Objetos (POO)** de la **UNNE - Facultad de Ciencias Exactas y Naturales y Agrimensura (FaCENA)**.
El punto culminante del curso fue el **Proyecto Integrador**, donde apliqué todos los conocimientos adquiridos para desarrollar una solución de software completa en Java, utilizando técnicas avanzadas de POO.
---
## 📦 Estructura del Repositorio
| Archivo/Carpeta | Contenido |
| ---------------- | --------- |
| `Cuadernillo Java/` | Guía principal con teoría y ejercicios de Java |
| `material del 2023/` | Recursos y apuntes de una cursada anterior |
| `practica/` | Trabajos prácticos y ejercicios resueltos |
| `apunte-teoria.pdf` | Apunte de toda la teoria de la materia (2024) |
| `ProgramaPOO_Res0395_23.pdf` | Programa oficial de la materia |
| `Final POO.docx` | Enunciado del proyecto del examen final |
---
## 🚀 Temas principales y conceptos aplicados
### ✅ Fundamentos de Java
- Sintaxis, estructuras de control, tipos de datos y modularización del código.
- Manejo de archivos y gestión de excepciones.
### ✅ Programación Orientada a Objetos (POO)
- **Clases y Objetos** → Modelado de entidades reales.
- **Encapsulamiento** → Control de acceso a datos.
- **Abstracción** → Simplificación de sistemas complejos.
- **Herencia y Polimorfismo** → Reutilización de código y comportamiento flexible.
> [!TIP]
> Dominar encapsulamiento y herencia es fundamental para escribir software limpio y escalable.
### ✅ Colecciones y uso avanzado
- Colecciones estáticas (arreglos) y dinámicas (ArrayList, HashSet, HashMap).
- Comparación entre colecciones homogéneas y heterogéneas.
> [!NOTE]
> Las colecciones dinámicas ofrecen gran flexibilidad frente a los arreglos de tamaño fijo.
### ✅ UML y Modelado
- Creación de diagramas de clases para planificar y estructurar el código antes de implementarlo.
> [!IMPORTANT]
> Modelar en UML permite mantener el código organizado y facilita su mantenimiento y expansión.
---
## 🏆 Proyecto Integrador (destacado)
El **Proyecto Integrador** fue la instancia más exigente y enriquecedora del curso.
Consistió en desarrollar una solución completa que:
✅ Gestionó datos complejos mediante clases y herencia.
✅ Utilizó polimorfismo para tratar distintos tipos de objetos.
✅ Incluyó interacción mediante menús y persistencia con archivos.
✅ Resolví un problema real aplicando diseño modular en Java.
> [!CAUTION]
> Este proyecto requirió aplicar todos los conceptos aprendidos. Un diseño pobre podría haber derivado en código rígido y difícil de mantener.
---
## 🎓 Proyecto del Examen Final
Como parte de la evaluación, se desarrolló un programa autónomo que:
- Demostró la correcta aplicación de POO.
- Resolvió problemas eficientemente bajo presión.
- Mostró buenas prácticas de codificación y documentación.
---
## 🧰 Tecnologías utilizadas
---
## 📌 Notas
- Todos los proyectos y ejercicios fueron desarrollados en el marco de la asignatura **Programación Orientada a Objetos - UNNE (FaCENA)** en 2024.
- Los ejercicios incluyen comentarios y explicaciones en español.
- Este repositorio refleja todo el recorrido desde los fundamentos de Java hasta la creación de aplicaciones reales con POO.
---