Tuesday, July 25, 2017

Class Ejercicio 4

Nota: En el siguiente ejercicio la complejidad aumentará. Se requiere conocer el funcionamiento de los operadores lógicos y condicionales (if/else, switch).

Problema

Defina la clase Carro con las siguientes variables:
  • puertas (valor por defecto 3, privada ).
  • velocidad (valor por defecto 0, privada).
  • puertas-Cerradas (valor por defecto: falso, privada).
Implemente los métodos abrir_puertas(), cerrar_puertas(), acelerar() y frenar() considerando lo siguiente:
  • El carro solo acelera si tiene las puertas cerradas.
  • Cada vez que el carro acelera, su velocidad aumenta en 10 Km. El valor máximo de la velocidad es 100 Km.
  • El carro solo frena si la velocidad es mayor que cero y las puertas están cerradas. La velocidad se reducirá en 10 km.
  • Si la velocidad es 100 Km y se ejecuta el método acelerar, saldrá un mensaje en consola diciendo: No se puede acelerar mas.
  • Si la velocidad es 0 km y se ejecuta el método frenar, saldrá un mensaje en consola diciendo: El carro está frenado.
  • Es posible crear un carro con una velocidad mayor que cero y con las puertas abiertas. No obstante, para que los métodos: frenar y acelerar funcionen correctamente, es necesario cerrar las puertas previamente.

Solución

La funcionalidad debe ser igual, pese a existir diferentes formas de solucionar el problema.

Clase Carro

package certification1;

public class Carro {
    private int num_puertas = 3;
    private int velocidad = 0;
    private boolean puertas_cerradas = false;
    
    public Carro(){
        this.num_puertas = 3;
        this.velocidad = 0;
        this.puertas_cerradas = false;
    }
    
    public Carro(int num_puertas, int velocidad, boolean puertas_cerradas){
        assert(num_puertas > 0);
        assert(velocidad >= 0);
        this.num_puertas = num_puertas;
        this.velocidad = velocidad;
        this.puertas_cerradas = puertas_cerradas;
    }
    
    public void acelerar(){
        if(puertas_cerradas == true){
            if(velocidad < 100){
                velocidad += 10;
                System.out.println("Velocidad actual (despues de acelerar): " + velocidad);
            }else{
                System.out.println("No se puede acelerar mas.");
            }
        }else{
            System.out.println("Puertas abiertas no se puede acelerar.");
        }
    }
    
    public void frenar(){
        if(velocidad == 0){
            System.out.println("El carro esta frenado");
        }else{
            if(puertas_cerradas == true){
                velocidad -= 10;
                System.out.println("Velocidad actual (despues de frenar): " + velocidad);
            }
        }
    }
    
    public void abrir_puertas(){
        if(puertas_cerradas == true){
            puertas_cerradas = false;
        }
    }
    
    public void cerrar_puertas(){
        if(puertas_cerradas == false){
            puertas_cerradas = true;
        }
    }
}
Clase main

package certification1;

public class Certification1 {
    
    public static void main(String[] args) {
       
        Carro c = new Carro();
        c.cerrar_puertas();
        c.acelerar();
        c.frenar();
    }
}

Para que el programa funcione correctamente en NetBeans es necesario habilitar assertions en la maquina virtual (VM) . Para ello siga los siguiente pasos:

  1. En NetBeans,haga click en la pestaña: Run .
  2. Click en: Set Project Configuration.
  3. Click en: Customize.
  4. Click en: New , digite el nombre: assertion (o cualquier otro) y haga click en Ok .
  5. En la sección VM Option , digite los siguiente: -enableassertions .
  6. Finalmente, seleccione la configuración assertion que acabamos de crear para compilar.

No comments:

Post a Comment

Earn free bitcoin