Parte 1: Diseño de la Interfaz Gráfica de Usuario (GUI) • Estudia los elementos de las interfaces gráficas de usuario (GUIs) en Java. • Diseña una interfaz gráfica simple para una aplicación de chat que incluya elementos como áreas de texto para mensajes, campos de entrada para escribir mensajes y botones para enviarlos. • Implementa el manejo de eventos y manejadores de eventos para capturar las acciones del usuario, como enviar un mensaje. En la grabación del 10/07/2024 revisar la explicación de la actividad y el video de la clase. Parte 2: Implementación de la Lógica de Negocio y Multihilo • Aprende sobre hilos en Java y los estados y ciclo de vida de los hilos. • Diseña la lógica de negocio de la aplicación de chat para manejar la conexión entre clientes y el intercambio de mensajes. • Implementa los hilos necesarios para permitir la comunicación simultánea entre múltiples clientes en la aplicación de chat. • Utiliza clases internas y anónimas según sea necesario para estructurar tu código de manera eficiente. Parte 3: Integración de la Concurrencia GUI • Investiga sobre la concurrencia GUI en aplicaciones de escritorio y cómo garantizar la sincronización y el acceso seguro a los componentes de la interfaz gráfica. • Implementa la integración de la concurrencia GUI en tu aplicación de chat para garantizar que la interfaz de usuario se actualice de manera adecuada mientras los hilos de comunicación están en ejecución. Entrega: • Entrega el código fuente del programa incluye capturas de pantalla de la ejecución de tu programascomo evidencia. • Realizar un breve video explicando cómo funciona el programa y cómo se implementaron las clases y métodos, en el video debe de mostrarse el estudiante y la pantalla con el código. • Subir el proyecto de Netbeans al Google Drive compartiendo el URL al final del documento.
nclude <iostream> #include <string> #include <thread> #include <mutex> #include <condition_variable> using namespace std; mutex mtx; condition_variable cv; void thread1() { string s; while (true) { unique_lock<mutex> lk(mtx); cv.wait(lk, []{return !s.empty();});