El siguiente programa simula una serie de cajas de supermercado que atienden a una fila de clientes, dichas filas se generan de manera automática en el programa utilizando hilos.

Completa la clase Caja seleccionando la opción más adecuada para generar la salida esperada.

Te recomendamos transcribir el código para que veas la funcionalidad completa en tu computadora.



Clase Uapa13

import java.util.ArrayList;
import java.util.List;

public class Uapa13{
        public static void main(String[] args) {
                List<Cliente> fila= new ArrayList<Cliente>();
                List<Cliente> fila2= new ArrayList<Cliente>();
                List<Cliente> fila3= new ArrayList<Cliente>();
                List<Cliente> fila4= new ArrayList<Cliente>();
                Cliente cliente=null;
                for (int i=0; i<2;i++) {
                        cliente= new Cliente();
                        fila.add(cliente);
                        cliente= new Cliente();
                        fila2.add(cliente);
                        cliente= new Cliente();
                        fila3.add(cliente);
                        cliente= new Cliente();
                        fila4.add(cliente);
                }
                new Thread(new Caja(fila,1),"caja rapida").start();
                new Thread(new Caja(fila2,2),"caja 1").start();
                new Thread(new Caja(fila3,2),"caja 2").start();
                new Thread(new Caja(fila4,3),"caja lenta").start();
        }
}



Clase Producto

public class Producto {
        private String id;
        private float precio;
        private String descripcion;
        public Producto() {
        }
        public Producto(String id, float precio, String descripcion) {
                super();
                this.id = id;
                this.precio = precio;
                this.descripcion = descripcion;
        }
        @Override
        public String toString() {
                return "Producto [id=" + id + ", precio=" + precio + ", descripcion=" + descripcion + "]";
        }
        public String getId() {
                return id;
        }
        public void setId(String id) {
                this.id = id;
        }
        public float getPrecio() {
                return precio;
        }
        public void setPrecio(float precio) {
                this.precio = precio;
        }
        public String getDescripcion() {
                return descripcion;
        }
        public void setDescripcion(String descripcion) {
                this.descripcion = descripcion;
        }
}



Clase: Tienda

import java.util.ArrayList;
import java.util.List;

public class Tienda {
        private List <Producto> productos= new ArrayList<Producto>();
        public Tienda() {
                productos.add(new Producto("2541",3.5f,"manzana roja"));
                productos.add(new Producto("1452",5.5f,"mandarina fresca"));
                productos.add(new Producto("1423",120.5f,"Carne de res (1 Kilo)"));
                productos.add(new Producto("851",11.5f,"Refresco sabor uva"));
                productos.add(new Producto("951",10.0f,"Yogurth 355ml"));
        }
        public List getProductos() {
                return productos;
        }
        public void setProductos(List<Producto> productos) {
                this.productos = productos;
        }
}



Clase: Cliente

import java.util.ArrayList;
import java.util.List;

public class Cliente {
        private List<Producto> productos= new ArrayList<Producto>();
        public Cliente() {
                seleccionarProductos();
        }
        public List<Producto> getProductos() {
                return productos;
        }
        public void setProductos(List<Producto> productos) {
                this.productos = productos;
        }
        public void seleccionarProductos() {
                Tienda tienda= new Tienda();
                int numeroProductos= (int) (Math.random()*10);
                for (int i=0; i<numeroProductos;i++) {
                        int indexProducto= (int) (Math.random()*(tienda.getProductos().size()-1));
                        productos.add(tienda.getProductos().get(indexProducto));
        }
}
- MODO DEBUG ACTIVADO -


Parte de la salida esperada

Caja: caja rápida atendiendo a cliente, pasando el producto: Producto [id=851, precio=11.5, descripcion=Refresco sabor uva]
Caja: caja lenta atendiendo a cliente, pasando el producto: Producto [id=1423, precio=120.5, descripcion=Carne de res (1 Kilo)]
Caja: caja 2 atendiendo a cliente, pasando el producto: Producto [id=1423, precio=120.5, descripcion=Carne de res (1 Kilo)]
Caja: caja 1 atendiendo a cliente, pasando el producto: Producto [id=1423, precio=120.5, descripcion=Carne de res (1 Kilo)]
Se termina de atender al cliente
Caja: caja rápida atendiendo a cliente, pasando el producto: Producto [id=851, precio=11.5, descripcion=Refresco sabor uva]
Se termina de atender al cliente
Se termina de atender al cliente