☕ KonnektApp — Simulador de Red Social de Escritorio en Java

Implementación Rigurosa de los 4 Pilares de la POO y Patrón MVC

KonnektApp es una aplicación de escritorio desarrollada en Java (JDK 17+) con interfaz gráfica en Java Swing. Demuestra la aplicación metódica de los principios fundamentales de la Programación Orientada a Objetos mediante el patrón de diseño arquitectónico Modelo-Vista-Controlador (MVC).


🏛️ Arquitectura Modelo - Vista - Controlador (MVC)

flowchart TD
    User([👤 Usuario]) <--> View["🖥️ VISTA (Java Swing)\nPaneles GUI, Formularios & Renderers"]
    View <-->|Eventos de Acción ActionListener| Controller["🧠 CONTROLADOR\nValida Reglas de Negocio & Enrutamiento"]
    Controller <-->|Modifica y Lee Estado| Model["📦 MODELO\nClases de Entidad (User, Post, Comment)"]

🧩 Los 4 Pilares de la Programación Orientada a Objetos en KonnektApp

  1. Abstracción:
    • Modelado de clases base y contratos (Post, Interactable, Notification) aislando la complejidad interna de almacenamiento y renderizado.
  2. Encapsulamiento:
    • Todos los atributos críticos de usuario (contraseñas hasheadas, listas de amigos, estados de sesión) están protegidos mediante modificadores de acceso privados con métodos getters y setters validados.
  3. Herencia:
    • Jerarquía extensible de publicaciones: una clase base abstracta Post de la cual heredan TextPost (publicaciones de texto enriquecido) y MediaPost (publicaciones con imágenes o adjuntos).
  4. Polimorfismo:
    • El muro de noticias (Feed) itera sobre una lista polimórfica List<Post>, invocando el método sobreescrito renderUI() de cada publicación sin necesidad de condicionales if/else dependientes del tipo de objeto.

✨ Funcionalidades del Simulador

  • Gestión de Sesiones: Registro de usuarios, login con validación de credenciales y cierre de sesión.
  • Interacciones Sociales: Sistema de reacciones (likes), hilos de comentarios anidados y contador de vistas.
  • Gestor Dinámico de Notificaciones: Notificaciones en tiempo real para el autor cuando otros usuarios interactúan con sus publicaciones.
  • Persistencia en Memoria / Archivos: Gestión de colecciones concurrentes para garantizar estabilidad en la interfaz gráfica.

🧭 Conexiones Internas