miércoles, 29 de abril de 2009

Ejemplo con cola

Ejemplo con cola de prioridad

/**

* Clase enumerada que representa la

* urgencia de un cliente

*/

public enum Urgencia

{

baja, media, alta

}

import java.util.*;

/public class ColaEsperaConUrgencia

{

/**

* Clase interna para almacenar los datos

* de un cliente con urgencia

*/

private static class DatosCliente

implements Comparable

{

Cliente c;

Urgencia urg;

/**

* Constructor de DatosCliente

*/

DatosCliente (Cliente c, Urgencia urg) {

this.c=c;

this.urg=urg;

}

/*

* Comparación de clientes por su urgencia

*/

public int compareTo(DatosCliente otro) {

return this.urg.compareTo(otro.urg);

}

// cola del servicio

private Queue colaEspera;

/**

* Constructor de ColaEspera

*/

public ColaEsperaConUrgencia()

{

colaEspera=new

PriorityQueue();

}

/**

* Nuevo cliente; se mete en la cola de espera

*/

public void nuevoCliente

(Cliente c, Urgencia urg)

{

DatosCliente datos=new DatosCliente(c,urg);

colaEspera.add(datos);

}

/**

* Atender cliente: se saca de la cola de

* espera; retorna el cliente atendido

*/

public Cliente atenderCliente()

throws NoSuchElementException

{

DatosCliente datos=colaEspera.remove();

return datos.c;

}

/**

* Mostrar el estado de la cola de espera

*/

public void muestraEstado() {

System.out.println();

System.out.println("--Estado de la cola--");

System.out.println("No atendidos "+

colaEspera.size());

if (colaEspera.size()>0) {

for (DatosCliente datos:colaEspera) {

System.out.println(datos.c+" urgencia:

"+datos.urg);

}

}

}

/**

* Num clientes en espera

*/

public int numClientesEnEspera() {

return colaEspera.size();

}

}


No hay comentarios:

Publicar un comentario