Advertisement
fmbalvarez

Sábado 1/11 - Función

Nov 1st, 2014
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.97 KB | None | 0 0
  1. public class Funcion {
  2.    
  3.     private Asiento asientos[][];
  4.    
  5.     public Funcion(int filas, int asientosPorFila, double precio){
  6.        
  7.         asientos = new Asiento [filas][asientosPorFila];
  8.        
  9.         for (int i=0; i < asientos.length; i++ ){
  10.             for (int j=0; j < asientos[i].length; j++){
  11.                
  12.                 asientos[i][j]= new Asiento (precio);
  13.             }
  14.         }
  15.     }
  16.    
  17.     public Asiento getAsiento(int fila, int numeroDeAsiento){
  18.        
  19.         return (asientos[fila][numeroDeAsiento]);
  20.     }
  21.    
  22.     public void setPrecioAsiento(int fila, int numeroDeAsiento, double precio){
  23.        
  24.         this.getAsiento(fila, numeroDeAsiento).cambiarPrecio(precio);
  25.     }
  26.    
  27.     public double getPrecioAsiento(int fila, int numeroDeAsiento){
  28.        
  29.         return (this.getAsiento(fila,numeroDeAsiento).obtenerPrecio());
  30.     }
  31.    
  32.     public void reservarAsiento(int fila, int numeroDeAsiento){
  33.        
  34.         this.getAsiento(fila, numeroDeAsiento).reservar();
  35.     }
  36.    
  37.     public void venderAsiento(int fila, int numeroDeAsiento){
  38.        
  39.         this.getAsiento(fila, numeroDeAsiento).vender();
  40.     }
  41.    
  42.    
  43. }
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53. /**
  54.  * Un Asiento es una localidad disponible para presenciar una Función.
  55.  *
  56.  */
  57. public class Asiento {
  58.  
  59.     private double precio;
  60.    
  61.     private Disponibilidad disponibilidad;
  62.  
  63.     /**
  64.      * pre : precio es positivo.
  65.      * post: el asiento queda libre y con el precio indicado.
  66.      */
  67.     public Asiento(double precio) {
  68.        
  69.         if (precio >= 0){
  70.        
  71.             this.disponibilidad = Disponibilidad.LIBRE;
  72.         }
  73.         else {
  74.             throw new Error("El precio debe ser mayor a cero.");
  75.         }
  76.                
  77.         this.cambiarPrecio(precio);
  78.     }
  79.  
  80.     /**
  81.      * post: devuelve el precio del asiento
  82.      */
  83.     public double obtenerPrecio() {
  84.        
  85.         return this.precio;
  86.     }
  87.    
  88.     /**
  89.      * pre : precio debe ser mayor a 0.
  90.      * post: cambia el precio del asiento.
  91.      */
  92.     public void cambiarPrecio(double precio) {
  93.  
  94.         if (precio <= 0) {
  95.            
  96.             throw new Error("Precio debe ser mayor a cero");
  97.         }
  98.        
  99.         if (this.disponibilidad != Disponibilidad.LIBRE) {
  100.            
  101.             throw new Error("Solo se puede cambiar el precio cuando está LIBRE");
  102.         }
  103.         this.precio = precio;
  104.     }
  105.    
  106.     /**
  107.      * pre : está LIBRE.
  108.      * post:cambia la disponibilidad a RESERVADO.
  109.      */
  110.     public void reservar() {
  111.        
  112.         if (this.disponibilidad != Disponibilidad.LIBRE) {
  113.            
  114.             throw new Error("El asiento no está LIBRE");
  115.         }
  116.         this.disponibilidad = Disponibilidad.RESERVADO;
  117.     }
  118.    
  119.     /**
  120.      * pre : no está VENDIDO
  121.      * post: cambia la disponibilidad a VENDIDO.
  122.      */
  123.     public void vender() {
  124.        
  125.         if (this.disponibilidad == Disponibilidad.VENDIDO) {
  126.            
  127.             throw new Error("El asiento ya está VENDIDO");
  128.         }
  129.         this.disponibilidad = Disponibilidad.VENDIDO;
  130.     }
  131.    
  132.     /**
  133.      * pre : está RESERVADO.
  134.      * post: cambia la disponibilidad a LIBRE.
  135.      */
  136.     public void cancelarReserva() {
  137.        
  138.         if (this.disponibilidad != Disponibilidad.RESERVADO) {
  139.            
  140.             throw new Error("El asiendo no está RESERVADO");
  141.         }
  142.        
  143.         this.disponibilidad = Disponibilidad.LIBRE;
  144.     }
  145.    
  146.     public Disponibilidad obtenerDisponibilidad() {
  147.        
  148.         return this.disponibilidad;
  149.     }
  150. }
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157. import org.junit.Test;
  158. import org.junit.Before;
  159. import org.junit.Assert;
  160.  
  161. public class PruebasFuncion {
  162.    
  163.     private Funcion pelicula;
  164.    
  165.     @Before
  166.     public void inicializarFuncion(){
  167.        
  168.         this.pelicula = new Funcion(4,4,10);
  169.     }
  170.    
  171.     @Test
  172.     public void obtenerPrecioDeAsiento(){
  173.        
  174.         Assert.assertEquals(10, pelicula.getAsiento(1,1).obtenerPrecio(), 0.1);
  175.     }
  176.    
  177.     @Test
  178.     public void modificarPrecioDeAsiento(){
  179.  
  180.         pelicula.setPrecioAsiento(2, 2, 15);
  181.        
  182.         Assert.assertEquals(15, pelicula.getPrecioAsiento(2,2), 0.1);
  183.     }
  184.    
  185.     @Test
  186.     public void probarReserva(){
  187.        
  188.         pelicula.reservarAsiento(1, 1);
  189.        
  190.         Assert.assertEquals(Disponibilidad.RESERVADO, pelicula.getAsiento(1, 1).obtenerDisponibilidad());
  191.     }
  192.    
  193.     @Test
  194.     public void probarVender(){
  195.        
  196.         pelicula.venderAsiento(3, 3);
  197.        
  198.         Assert.assertEquals(Disponibilidad.VENDIDO, pelicula.getAsiento(3,3).obtenerDisponibilidad());
  199.     }
  200.    
  201. }
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211. public enum Disponibilidad {
  212.    
  213.     LIBRE,
  214.     RESERVADO,
  215.     VENDIDO
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement