|
--- |
|
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<Movie> cartelera = new ArrayList<>(); |
|
|
|
// Colección de promociones |
|
private static Set<Promotion> 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!"); |
|
}); |
|
} |
|
} |
|
|