Actividad 2 - Documentacion

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 12

ELECTIVA ll: TÓPICOS AVANZADOS

CIPAS: CodeBytes

Integrantes:

Héctor David Medina, Gustavo Ortega y Erick Rivera

Universidad de Cartagena

Ingeniería de Software

Carlos Cáceres

2024
OBJETIVO

 Aplicar los conceptos de programación concurrente en la implementación de

un programa que realice una tarea específica.

ACTIVIDAD DE LA UNIDAD 2

 Implementación de un programa concurrente. Realizar un video en YouTube

explicando el tema.

PROGRAMA A REALIZAR

Realizar una ventana con 4 progressbar en Java con Swing, se crearán 4

hilos que representaran a caballos (que tienen un nombre y un camino

recorrido o porcentaje recorrido). Al pulsar el botón de iniciar se empezará a

avanzar, actualizando los progressbar con un numero aleatorio entre 1 y 15.

Gana el primero que llegue a 100.


DESARROLLO DE LA ACTIVIDAD

La programación concurrente es un paradigma de programación que se basa en la

ejecución simultánea de dos o más tareas. Esto significa que las tareas pueden ejecutarse al

mismo tiempo, en lugar de una después de la otra.

La programación concurrente tiene muchos beneficios, como:

 Mejora el rendimiento: Al ejecutar tareas al mismo tiempo, la

programación concurrente puede aprovechar al máximo los recursos del

sistema, como los procesadores y la memoria.

 Mejora la capacidad de respuesta: La programación concurrente puede

hacer que las aplicaciones sean más receptivas a los usuarios, ya que las

tareas pueden ejecutarse en segundo plano mientras el usuario interactúa con

la aplicación.

 Simplifica la programación de problemas complejos: La programación

concurrente puede facilitar la programación de problemas complejos que

requieren que se ejecuten varias tareas al mismo tiempo.

Sin embargo, la programación concurrente también tiene algunos desafíos, como:

 Sincronización: Es importante asegurarse de que las tareas que se ejecutan

al mismo tiempo no interfieran entre sí.

 Depuración: Puede ser difícil depurar programas concurrentes, ya que es

difícil determinar qué tarea está causando un problema.

 Recursos compartidos: Es importante tener cuidado al compartir recursos

entre tareas, ya que esto puede provocar errores.


La programación concurrente es una herramienta poderosa que puede usarse para

mejorar el rendimiento, la capacidad de respuesta y la complejidad de los programas. Sin

embargo, es importante ser consciente de los desafíos que presenta la programación

concurrente antes de usarla en un proyecto.

Ejemplos de aplicaciones que utilizan la programación concurrente:

1. Sistemas operativos: Los sistemas operativos utilizan la programación

concurrente para ejecutar múltiples procesos al mismo tiempo.

2. Navegadores web: Los navegadores web utilizan la programación

concurrente para cargar varias páginas web al mismo tiempo.

3. Juegos: Los juegos utilizan la programación concurrente para crear mundos

virtuales que se pueden explorar en tiempo real.

En resumen, la programación concurrente es una técnica poderosa para crear

programas más eficientes y receptivos, pero requiere cuidado en su implementación.


PROGRAMA A REALIZAR EN BASE AL TEMA:

CARRERA DE CABALLOS

Código:
Explicación: El código presentado anteriormente define una clase

CarreraDeCaballos que implementa la interfaz Runnable para representar la carrera de un

caballo.

 Se importan las clases Observable y Logger del paquete java.util.

 Se declara la clase CarreraDeCaballos que extiende Observable e

implementa Runnable.

 Se declara una variable de instancia nombre para almacenar el nombre del

caballo.

 Se define un constructor que recibe el nombre del caballo y lo asigna a la

variable nombre.

 Se define un método getNombre para obtener el nombre del caballo.

 Se implementa el método run de la interfaz Runnable, que contiene la lógica

principal de la carrera del caballo.

 Dentro del método run, se inicializa la variable porcentaje a 0 para

representar el progreso del caballo.

 Se utiliza un bucle while para simular el avance del caballo mientras el

porcentaje sea menor que 100.

 En cada iteración del bucle, se genera un número aleatorio entre 1 y 15 que

representa el avance del caballo en esa iteración.

 Se imprime en la consola un mensaje indicando el avance del caballo.

 Se actualiza el porcentaje de avance del caballo.

 Se notifica a los observadores (si los hay) del cambio de estado del objeto.
 Se pausa la ejecución del hilo durante 100 milisegundos para simular el

avance del caballo.

 Una vez que el porcentaje alcanza o supera el 100%, se notifica a los

observadores que el caballo ha llegado al final de la carrera.

 Se maneja la excepción InterruptedException que puede ocurrir al

interrumpir el hilo mientras está en espera.

Resto del codigo:

Se representa la interfaz en la cual se reflejan los caballos al momento de competir

(los progressbar).
Explicación: Este código muestra la interfaz gráfica de usuario (GUI) en Java

Swing para simulación de una carrera de caballos.

 Se importan las clases Observable y Observer del paquete java.util.

 Se declara la clase FrmCarrera que extiende JFrame e implementa Observer.

 Se declara una variable hilos que es un array de Thread para almacenar los

hilos de los caballos.

 Se define un constructor FrmCarrera que inicializa los componentes de la

interfaz gráfica y el array hilos.

 Se crea la interfaz gráfica en el método initComponents usando

componentes como JProgressBar para mostrar el progreso de cada caballo,

JLabel para etiquetas y JButton para un botón de inicio.


 El método btnIniciarActionPerformed se ejecuta cuando se hace clic en el

botón de inicio. Deshabilita el botón, limpia el mensaje de ganador y crea y

arranca los hilos para cada caballo, añadiéndose a sí mismo como

observador de cada uno.

 El método terminar interrumpe todos los hilos cuando la carrera termina.

 El método main crea una instancia de FrmCarrera y la hace visible.

 El método update es parte de la implementación de la interfaz Observer y se

ejecuta cuando un caballo notifica un cambio de estado. Actualiza la barra

de progreso del caballo correspondiente y muestra al ganador cuando un

caballo llega al final.

En conclusión, este código crea una interfaz gráfica para simular una carrera de

caballos, donde cada caballo se ejecuta en un hilo separado y notifica su progreso a través

de la clase Observable. La interfaz de usuario actualiza las barras de progreso de cada

caballo y muestra al ganador cuando uno de ellos llega al final.


Resultado del programa Carrera de Caballos:

De esta manera queda representada la interfaz realizada en Java Swing en donde se

representa por medio de progessbar los caballos en una carrera simulada.

Al pulsar el botón “iniciar” se automáticamente se da inicio a la carrera y de manera

inmediata se determina el caballo (progressbar) que haya finalizado primero la carrera. Este

tambien soltara un mensaje en el cual anuncia que caballo fue el ganador de la carrera.

También podría gustarte