--- license: epl-2.0 --- import java.util.*; public class CinemaEclipse { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Bienvenido al Cine en Eclipse. \n Por favor, seleccione una de las opciones a continuación:"); System.out.println("1. Comprar entradas"); System.out.println("2. Ver cartelera"); System.out.println("3. Ver promociones"); System.out.println("4. Salir"); int opcion = scanner.nextInt(); switch(opcion){ case 1: comprarEntradas(); break; case 2: verCartelera(); break; case 3: verPromociones(); break; case 4: System.out.println("Gracias por visitar el cine en Eclipse. Hasta luego!"); break; } } // Implementación del patrón GoF Factory private static MovieFactory movieFactory = new MovieFactory(); // Colección de películas de la cartelera private static List cartelera = new ArrayList<>(); // Colección de promociones private static Set promociones = new HashSet<>(); // Coleccion de entradas vendidas private static Map entradasVendidas = new HashMap<>(); // Método para comprar entradas private static void comprarEntradas(){ Scanner scanner = new Scanner(System.in); System.out.println("Por favor, seleccione una de las películas de la cartelera:"); for(Movie movie : cartelera){ System.out.println(movie.getTitle()); } String peliculaSeleccionada = scanner.nextLine(); // Busca la película dentro de la cartelera Movie movie = cartelera.stream() .filter(m -> m.getTitle().equals(peliculaSeleccionada)) .findFirst() .orElse(null); if(movie != null){ System.out.println("Cuántas entradas desea comprar?"); int cantidadEntradas = scanner.nextInt(); // Usa una expresión Lambda Supplier para obtener el precio de la entrada double precio = () -> movie.getPrice() * cantidadEntradas; // Usa una expresión Lambda Consumer para guardar la cantidad de entradas vendidas entradasVendidas.merge(movie, cantidadEntradas, Integer::sum); System.out.println("El precio total es: " + precio); System.out.println("Gracias por su compra!"); } } // Método para ver la cartelera private static void verCartelera(){ System.out.println("Cartelera:"); cartelera.forEach(movie -> { // Usa una expresión Lambda Function para imprimir la cartelera System.out.println(movie.getTitle() + " - " + movie.getPrice() + "€"); }); } // Método para ver las promociones private static void verPromociones(){ System.out.println("Promociones:"); promociones.forEach(promotion -> { System.out.println(promotion.getName() + ": " + promotion.getDiscount() + "% de descuento!"); }); } }