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<Movie, Integer> 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!"); }); } }