Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Funcion {
- private Asiento asientos[][];
- public Funcion(int filas, int asientosPorFila, double precio){
- asientos = new Asiento [filas][asientosPorFila];
- for (int i=0; i < asientos.length; i++ ){
- for (int j=0; j < asientos[i].length; j++){
- asientos[i][j]= new Asiento (precio);
- }
- }
- }
- public Asiento getAsiento(int fila, int numeroDeAsiento){
- return (asientos[fila][numeroDeAsiento]);
- }
- public void setPrecioAsiento(int fila, int numeroDeAsiento, double precio){
- this.getAsiento(fila, numeroDeAsiento).cambiarPrecio(precio);
- }
- public double getPrecioAsiento(int fila, int numeroDeAsiento){
- return (this.getAsiento(fila,numeroDeAsiento).obtenerPrecio());
- }
- public void reservarAsiento(int fila, int numeroDeAsiento){
- this.getAsiento(fila, numeroDeAsiento).reservar();
- }
- public void venderAsiento(int fila, int numeroDeAsiento){
- this.getAsiento(fila, numeroDeAsiento).vender();
- }
- }
- /**
- * Un Asiento es una localidad disponible para presenciar una Función.
- *
- */
- public class Asiento {
- private double precio;
- private Disponibilidad disponibilidad;
- /**
- * pre : precio es positivo.
- * post: el asiento queda libre y con el precio indicado.
- */
- public Asiento(double precio) {
- if (precio >= 0){
- this.disponibilidad = Disponibilidad.LIBRE;
- }
- else {
- throw new Error("El precio debe ser mayor a cero.");
- }
- this.cambiarPrecio(precio);
- }
- /**
- * post: devuelve el precio del asiento
- */
- public double obtenerPrecio() {
- return this.precio;
- }
- /**
- * pre : precio debe ser mayor a 0.
- * post: cambia el precio del asiento.
- */
- public void cambiarPrecio(double precio) {
- if (precio <= 0) {
- throw new Error("Precio debe ser mayor a cero");
- }
- if (this.disponibilidad != Disponibilidad.LIBRE) {
- throw new Error("Solo se puede cambiar el precio cuando está LIBRE");
- }
- this.precio = precio;
- }
- /**
- * pre : está LIBRE.
- * post:cambia la disponibilidad a RESERVADO.
- */
- public void reservar() {
- if (this.disponibilidad != Disponibilidad.LIBRE) {
- throw new Error("El asiento no está LIBRE");
- }
- this.disponibilidad = Disponibilidad.RESERVADO;
- }
- /**
- * pre : no está VENDIDO
- * post: cambia la disponibilidad a VENDIDO.
- */
- public void vender() {
- if (this.disponibilidad == Disponibilidad.VENDIDO) {
- throw new Error("El asiento ya está VENDIDO");
- }
- this.disponibilidad = Disponibilidad.VENDIDO;
- }
- /**
- * pre : está RESERVADO.
- * post: cambia la disponibilidad a LIBRE.
- */
- public void cancelarReserva() {
- if (this.disponibilidad != Disponibilidad.RESERVADO) {
- throw new Error("El asiendo no está RESERVADO");
- }
- this.disponibilidad = Disponibilidad.LIBRE;
- }
- public Disponibilidad obtenerDisponibilidad() {
- return this.disponibilidad;
- }
- }
- import org.junit.Test;
- import org.junit.Before;
- import org.junit.Assert;
- public class PruebasFuncion {
- private Funcion pelicula;
- @Before
- public void inicializarFuncion(){
- this.pelicula = new Funcion(4,4,10);
- }
- @Test
- public void obtenerPrecioDeAsiento(){
- Assert.assertEquals(10, pelicula.getAsiento(1,1).obtenerPrecio(), 0.1);
- }
- @Test
- public void modificarPrecioDeAsiento(){
- pelicula.setPrecioAsiento(2, 2, 15);
- Assert.assertEquals(15, pelicula.getPrecioAsiento(2,2), 0.1);
- }
- @Test
- public void probarReserva(){
- pelicula.reservarAsiento(1, 1);
- Assert.assertEquals(Disponibilidad.RESERVADO, pelicula.getAsiento(1, 1).obtenerDisponibilidad());
- }
- @Test
- public void probarVender(){
- pelicula.venderAsiento(3, 3);
- Assert.assertEquals(Disponibilidad.VENDIDO, pelicula.getAsiento(3,3).obtenerDisponibilidad());
- }
- }
- public enum Disponibilidad {
- LIBRE,
- RESERVADO,
- VENDIDO
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement