Skip to content

Dars-cg/poo-java-proyectos-progresivos

Repository files navigation

📚 POO PROJECTOS PROGRESIVO — Java

Colección de proyectos independientes para aprender los pilares de la Programación Orientada a Objetos de forma progresiva, usando Java y NetBeans.


🎯 Objetivo

Este repositorio sirve para aplicar conceptos y aprendizaje de POO a través de proyectos prácticos. Cada proyecto introduce un nuevo concepto sobre los anteriores, hasta llegar a una aplicación con interfaz gráfica en Swing.


🗺️ Hoja de Ruta

# Proyecto Concepto principal Interfaz Estado
01 GestorPersonas Encapsulamiento Consola ⬜ Pendiente
02 CatálogoAnimales Herencia Consola ⬜ Pendiente
03 TiendaDeMusica Polimorfismo Consola + menú ⬜ Pendiente
04 SistemaDeHospital Interfaces Consola + menú ⬜ Pendiente
05 AgenciaDeViajes Excepciones personalizadas Consola + menú ⬜ Pendiente
06 InventarioElectronicos Swing (GUI) Ventana gráfica ⬜ Pendiente

📦 Proyecto 01 — GestorPersonas

Pilar: Encapsulamiento

¿Qué se aprende?

Los atributos de una clase no deben ser accesibles directamente desde afuera. Se protegen con private y se controla su lectura y modificación mediante getters y setters con validación.

Descripción

Sistema que registra personas con nombre, edad y correo. Ningún atributo puede modificarse sin pasar por validación.

Conceptos aplicados

  • Modificador private en atributos
  • Getters y setters con lógica de validación
  • Construcción de objetos con datos inválidos (manejo de errores básico)

📦 Proyecto 02 — CatálogoAnimales

Pilar: Herencia

¿Qué se aprende?

Una clase padre define lo común y las clases hijas especializan ese comportamiento. Se entiende la relación "es un" y el uso correcto de super().

Descripción

Catálogo de animales de un zoológico con una clase base Animal y tres subclases: Perro, Aguila y Pez, cada una con atributos y comportamientos propios.

Conceptos aplicados

  • extends para heredar de una clase padre
  • Llamada a super() en constructores de las clases hijas
  • Métodos heredados y métodos propios de cada subclase

📦 Proyecto 03 — TiendaDeMusica

Pilar: Polimorfismo

¿Qué se aprende?

Tratar objetos de distintos tipos de forma uniforme a través del tipo padre. Un array de Producto[] puede contener CD, Vinilo e Instrumento, y cada uno responde diferente al mismo método.

Descripción

Tienda de música con tres tipos de productos. El sistema recorre el inventario y calcula el precio final de cada uno usando polimorfismo, sin preguntar de qué tipo concreto es cada objeto.

Conceptos aplicados

  • Clases abstractas y métodos abstractos
  • Sobrescritura de métodos (@Override)
  • Arrays polimórficos (Producto[] con objetos de subclases)
  • Menú interactivo en consola

📦 Proyecto 04 — SistemaDeHospital

Pilar: Interfaces

¿Qué se aprende?

Una interfaz es un contrato de comportamiento independiente de la jerarquía de herencia. Una clase puede heredar de un padre y firmar uno o varios contratos al mismo tiempo.

Descripción

Hospital con pacientes y médicos. Algunos pueden ser notificados, todos pueden ser consultados. Se demuestra cómo las interfaces permiten tratar objetos distintos de forma uniforme sin necesidad de que compartan padre.

Conceptos aplicados

  • Declaración e implementación de interfaces (implements)
  • Arrays de tipo interfaz (Consultable[])
  • Combinación de herencia e interfaces en la misma clase

📦 Proyecto 05 — AgenciaDeViajes

Pilar: Excepciones personalizadas

¿Qué se aprende?

A comunicar errores de forma precisa con excepciones propias, distinguiendo entre checked (obligan al try-catch) y unchecked (errores de lógica o datos inválidos).

Descripción

Agencia de viajes que registra paquetes turísticos y clientes. El sistema controla capacidad, disponibilidad y datos inválidos con excepciones propias organizadas en jerarquía.

Conceptos aplicados

  • Jerarquía de excepciones checked (Exception)
  • Jerarquía de excepciones unchecked (RuntimeException)
  • throws en la firma de métodos
  • try-catch con múltiples tipos de excepción
  • Enums para estados

📦 Proyecto 06 — InventarioElectronicos

Pilar: Swing (Interfaz Gráfica)

¿Qué se aprende?

Conectar toda la lógica POO ya construida con una interfaz gráfica. El modelo no cambia, solo cambia cómo el usuario interactúa con él.

Descripción

Sistema de inventario de productos electrónicos con ventana gráfica. Incluye formulario de registro, tabla de productos y filtro por tipo.

Conceptos aplicados

  • JFrame, JPanel, JTable, JTextField, JButton
  • Separación entre modelo (lógica POO) y vista (Swing)
  • Manejo de eventos con listeners
  • Todos los pilares POO integrados en un proyecto con GUI

🛠️ Tecnologías

  • Lenguaje: Java 21
  • IDE: NetBeans
  • Interfaz (proyectos 1–5): Consola
  • Interfaz (proyecto 6): Java Swing

📋 Restricciones aplicadas en todos los proyectos

  • Arrays estáticos de tamaño fijo — sin ArrayList ni List
  • Tipos declarados explícitamente — sin var
  • Atributos siempre private
  • Constructores de subclases siempre con super()

About

Proyectos donde se aplican POO y algo de Swing para el refuerzo de estos temas.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors