Ir al contenido principal

Ejercicio de Simulación de Colas (Java)

El siguiente programa simula el funcionamiento de una cola simple a la que los elementos llegan de forma aleatoria y son atendidos durante un tiempo de servicio también aleatorio. Para hacer esto se ha creado la clase Elemento, que contiene tres variables miembro: creado, en la que se almacena el instante de tiempo en la que el elemento llega a la cola; inicioProceso, en la que se almacena el instante de tiempo en la que se comienza a atender a ese elemento y tiempoProceso que es el tiempo que dura la atención del elemento.

Esta clase Elemento tiene dos funciones miembro: un constructor que genera aleatoriamente elementos y una función, llamada Dibujar que representa gráficamente la vida del elemento en el sistema. Para ello se dibuja un rectángulo (un punto gordo) al llegar el elemento a la cola, una línea inclinada cuya dimensión horizontal representa el tiempo de espera del elemento en la cola y un rectángulo horizontal que representa el tiempo de servicio del elemento. Para todo ello se utiliza una escala de 5 pixels por minuto.

import java.lang.Math;


import java.awt.*;



public class Elemento {


public int creado;


public int inicioProceso;


public int tiempoProceso;



public Elemento(int tiempo) {


creado = tiempo + (int)(Math.random() * 10);


}





public void Dibujar(Graphics g){


g.setColor(Color.black);


g.drawRect(creado*5,100,2,2);


g.drawLine(creado*5,100,inicioProceso*5,150);


g.drawRect(inicioProceso*5,150,tiempoProceso*5,2);


}


}


Se define la clase Cola, heredándola de la clase Vector, con tres nuevas funciones miembro: anadirElemento, que incluye un nuevo elemento en la cola, tieneElementos que devuelve un valor booleano indicando si la cola ya está vacía o contiene aún más elementos y procesarElemento que asigna un tiempo de proceso al elemento, lo saca de la cola y lo incluye en un nuevo vector, colaProcesados, para almacenar su información.

import java.util.*;



import Elemento;



public class Cola extends Vector {



public int anadirElememto(int tiempo){


Elemento elem;


elem = new Elemento(tiempo);


this.addElement(elem);


return elem.creado;


}



public boolean tieneElementos(){


Enumeration enum = this.elements();


return enum.hasMoreElements();


}



public Elemento procesarElemento(Vector colaProcesados){


Elemento elem =(Elemento)this.elementAt(0);


elem.tiempoProceso = (int)(Math.random() * 10);


colaProcesados.addElement(elem);


this.removeElementAt(0);


return elem;


}


}


Obsérvese como en la función anadirElemento se utiliza la función addElement de la clase Vector. En la función tieneElementos es importante darse cuenta de que Enumeration es una interface que se utiliza para recorrer los vectores sin modificarlos. En la función procesarElemento se utilizan tres funciones de la clase Vector: la ya conocida addElement, elementAt que devuelve el valor del elemento colocado en una posición determinada y removeElementAt que elimina el elemento colocado en la posición que se le pasa como argumento a la función.

La clase DrawWindow contiene un constructor y una función paint que permite dibujar en un objeto de tipo Graphics, que se pasa como argumento a la función. Nótese que para recorrer un vector también aquí se crea un objeto de tipo Enumeration.

import java.awt.*;


import java.util.Vector;


import java.util.Enumeration;



public class DrawWindow extends Panel {


private Vector v;


public DrawWindow(Vector v) {


super(new FlowLayout());


this.v=v;


}



public void paint(Graphics g) {


Elemento dib;


Enumeration e;


e = v.elements();


while(e.hasMoreElements()){


dib=(Elemento)e.nextElement();


dib.Dibujar(g);



}



}



}


La clase colaSimple contiene dos variables miembro y la función main. En esta función se crean un objeto de tipo cola, llamado Cola y otro de tipo Vector, llamado colaProcesada. Se crean también objetos de tipo Frame y DrawWindow.

En el bucle while se simula la llegada de elementos a la cola hasta el instante 100, imprimiéndose en pantalla información referente al estado de la cola.

import java.lang.Math;


import java.awt.*;


import java.util.*;



public class ColaSimple {


private static int tiempo;


private static int horaLibre;



public static void main(String args[]) {


System.out.println("Inicio de Simulación de Cola simple");


Cola cola = new Cola();


Vector colaProcesada = new Vector();



Frame ventana = new Frame("Simulación de cola simple");


DrawWindow mipanel = new DrawWindow(colaProcesada);


ventana.add(mipanel);


ventana.pack();


ventana.setSize(500,500);








while (tiempo <>

tiempo = cola.anadirElememto(tiempo);


System.out.println("Tiempo:" + tiempo+ " Items: " + cola.size());


while ((horaLibre <>

Elemento procesado = cola.procesarElemento(colaProcesada);


procesado.inicioProceso = Math.max(horaLibre, procesado.creado);


horaLibre = procesado.inicioProceso + procesado.tiempoProceso;


System.out.println("Tiempo:" + tiempo+ " Items: " + cola.size()


+ " Hora entrada: " + procesado.creado+ " Tiempo proceso: " + procesado.tiempoProceso);



}


}


ventana.show();


}


}


Se pide:

  • Leer detenidamente el código del programa identificando clases, objetos, interfaces, variables miembro, funciones miembro, jerarquías…
  • Compilar el programa y observar su funcionamiento.
  • Variar la aplicación para que se le puedan proporcionar 4 valores que definan los rangos de las distribuciones uniformes de los tiempos de llegada y proceso. En caso de que no se proporcionen los 4 argumentos, presentar un mensaje indicando que es necesario introducir esos parámetros:

ColaSimple t1 t2 t3 t4

Siendo:

-t1: tiempo mínimo entre llegadas

-t2: tiempo máximo entre llegadas

-t3: tiempo mínimo de proceso

-t4: tiempo máximo de proceso

  • Actualmente el programa finaliza su ejecución cuando el tiempo llega a 100 unidades. Modificarlo para que una vez transcurrido ese tiempo continúe con la ejecución hasta que se vacíe la cola.
  • Modificar el código de tal manera que en la salida gráfica del programa se incluya otra representación en la que, siendo cada elemento una fila se muestre en un tramo azul su tiempo de espera y en una rojo su tiempo de servicio, tal y como se muestra en la siguiente figura.
  • Pensar y realizar una salida gráfica distinta que de una idea del proceso que se simula.

Comentarios

Alejandro Ruiz ha dicho que…
HOLA QUE TAL ME PODRIAS PASAR EL PROYECTO COMPRIMIDO ES QUE ME DA ALGUNOS ERRORES AL COPIAR MI CORREO ES elgoberlivel@gmail.com DE ANTE MANO MUCHAS GRACIAS HERMANO
Oscar Bravo ha dicho que…
disulpe, buenas noches, me podría hacer el favor de proporcionarme el proyecto? es que me tira error al copiar el código,, muy amable,, mi correo es owbruiz@gmail.com
Anónimo ha dicho que…
Buen Dia¡¡ Un favor¡ podira poroporcionarme el Proyecto Completo?? Se lo agradeceria Mucho¡¡ Mi correo es: javiercm200@gmail.com
Saludos¡¡ PD: Pase todo el codigo a un compilador.. pero me marcaba varios errores.. le corregi muchos pero ya despues nadamas no pude corregir todos¡¡ ;D
marco ha dicho que…
olaq tal oye me da algnos errores me lo podras pasar completo porfavor gracias
marco ha dicho que…
perdon mi correo es marco_2806923cfc@gmail.com
Anónimo ha dicho que…
Hola podrias pasarme el codigo completo porfa, no he podido corregir todos los errores, mi correo es nyah713@hotmail.com mil gracias :)
Javi_Bond ha dicho que…
Hola, que tal, buenas noches. al momento de cpiar el codigo me sale un error al parecer son las librerias pero no me funciona y no encuentro el error, puede ud pasarme el proyecto a mi correo franciscomc_86@hotmail.com
gracias por su colaboracion con este tema, es muy interesante.
William ha dicho que…
Hola mijo que tal me puedes proporcionar el archivo ejecutable y todo lo demás, te lo agradecería full ya que tengo un proyecto y me serviría mucho, enviame a este correo matrix01_756@hotmail.com se te agradece de antemano.
Anónimo ha dicho que…
la verdad al igual que todos le agradeceria si me pasa el proyecto. mi email es edgar-a@hotmail.com
Anónimo ha dicho que…
hola al ihual que todos le agradezco si me pasa el proyecto a edgar-a@hotmail.com
Anónimo ha dicho que…
me podrian pasar el proyecto porfa esk es muy util para my..mi correo es; chiquis_03.90@hotmail.com.....lo necesito ...
Anónimo ha dicho que…
Al igual q los demas, quisiera me haga el favor de pasarme el proyecto en un comprimido, se lo agradeceria mucho..
Este es mi correo: danimatica.7@gmail.com

Gracias
Anónimo ha dicho que…
Al igual q las demas personas, quisiera me pase el proyecto en un comprimido por favor a este correo:

danimatica.7@gmail.com

Gracias..
Anónimo ha dicho que…
hola ,,, un fabor me podria proporcionar el proyecto completo, bueno lo que pasa que e ejecutado el codigo y me marca bastante herror,,,,le corrijo... y me vuelve marcar herror mi correo es: amor-mio-65@hotmail.com
Anónimo ha dicho que…
hey men me late pero creo q podria ayudar a mejorar la intwrfaz men podrias mandarme el proyecto este es mi mail override.warlock@gmail.com y en cuestion de unos dias te mando como quedo men por si te sirve men saludos ... buen aporte
Wizard ha dicho que…
hey men me late pero creo q podria ayudar a mejorar la intwrfaz men podrias mandarme el proyecto este es mi mail override.warlock@gmail.com y en cuestion de unos dias te mando como quedo men por si te sirve men saludos ... buen aporte
Anónimo ha dicho que…
saludos me podrian ayudar con el programa completo me da algunos errores al copiar este es mi correo gracias gj_gary_91@hotmail.com

Entradas populares de este blog

Cómo particionar un disco duro en Windows usando herramientas integradas del sistema

¿Qué es una partición de disco? Una partición es una división lógica de un disco duro físico. Cada partición funciona como si fuera un disco independiente: puede tener su propia letra (C:, D:, E:), sistema de archivos y propósito. Ejemplos de uso comunes: Separar Windows de documentos personales Crear una partición exclusiva para respaldos Organizar información por áreas (trabajo, multimedia, proyectos) Antes de comenzar: recomendaciones importantes Antes de modificar particiones, ten en cuenta lo siguiente: 🔒 Haz copia de seguridad de la información importante ⚡ Evita realizar el proceso durante cortes de energía 🛑 No interrumpas el proceso una vez iniciado 💾 Asegúrate de tener espacio libre suficiente en el disco Aunque Windows es bastante seguro en este proceso, cualquier cambio en discos conlleva riesgos. Herramienta principal: Administración de discos Windows incluye la herramienta Administración de discos , que permite: Reducir volúmenes ...

Adobe Photoshop CC 2018 19.1.6.5940 (Español) #Descarga

Descarga : MEGA: 32bits / 64 bits http://j.gs/BmM9 Clave :  http://j.gs/BmMB ------------------- Otros enlaces: ------------------- Google Drive 64 Bits: http://j.gs/Blyw 32 Bits: http://j.gs/Blz3 MEGA 64 Bits: http://j.gs/Blz9 32 Bits: http://j.gs/Blz7 Clave para descomprimir: http://j.gs/6505620/clave Adobe Photoshop CC 2018  Programa  Full  de editor de gráficos rasterizados en su  ultima versión  y usado principalmente para el retoque de fotografías y gráficos, su nombre en español significa literalmente “taller de fotos” y esta disponible para  descargar  desde esta pagina. Adobe Photoshop  32 bits  y la versión de  64 bits  es líder mundial en el mercado de aplicaciones de edición de imágenes, y domina este sector de tal manera que su nombre es ampliamente empleado como sinónimo para la edición de imágenes en general. Una de las mejores aplicaciónes de edición de imágene...

SolidWorks 2015 SP3.0 Multilenguaje (Español), Modelado Avanzado con Sistemas CAD + Descarga

SolidWorks 2015 SP3.0 Multilenguaje ISO | 8.62 GB | Spanish Incl. | Medicina Incl. | Windows 7/8/8.1 x64 |  Descarga:  http://adf.ly/1Hf1tU SolidWorks le brinda opciones de software de CAD en 3D, simulación de diseño y administración de datos de productos, además de software de documentación de productos. No importa el tamaño de su empresa: siempre puede tener las herramientas precisas que necesita para diseñar mejores productos. Software de CAD en 3D El software de diseño en 3D de SolidWorks lo ayuda a diseñar mejores productos, más rápido. Cuando tenga una idea para un producto excelente, contará con las herramientas para diseñarlo en menos tiempo y a un costo más bajo. Estas son algunas de las funciones incluidas: Simulación de diseño Con las eficaces herramientas de simulación de diseño de SolidWorks®, fácilmente puede someter sus diseños a las mismas condiciones en las que se verán en el mundo real. Mejore la calidad de sus productos al mismo tiem...