Aprende Java Fácil. Capítulo 20. La fase final, creamos una herramienta de desbloqueo de puertas

Capítulo 20. La fase final, creamos una herramienta de desbloqueo de puertas

Tenemos todo listo para la fuga. Como ya te he comentado, yo seré el encargado de abrir la puerta final. Justo al lado de la salida hay una mesa con un ordenador desde el cual se puede acceder a todo el sistema y, de paso, abrir la puerta principal. Normalmente, se utilizan cinco claves de seguridad y, sin ellas, es imposible abrirla. No hace falta decir que con mis conocimientos informáticos actuales me resultaría imposible hackearla.

No obstante, Bud y Pedro conocen el sistema a la perfección. Han estado años trabajando con él e incluso han programado gran parte del código que controla las funciones principales de seguridad. Han querido facilitarme las cosas para asegurarse de que podemos salir sin complicaciones y rápidamente. Para ello, han creado cinco programas que se encuentran alojados en cinco clases diferentes. Estas clases ya están ocultas dentro del sistema, así que mi único cometido es crear una clase Main y llamar a los métodos que se encuentran en ellas.

 

 

Es una tarea humilde, pero de vital importancia. No voy a ir a ciegas; Bud se ha encargado de enseñarme los cinco programas y explicarme para qué sirven. Además, ya hemos practicado cómo debo llamar a los métodos, así que se puede decir que sé de memoria lo que tengo que hacer. No me gustaría ponerme nervioso y quedarme en blanco justo en el momento más crítico.

Para que puedas hacerte una idea, a continuación, te voy a mostrar las clases y te daré una explicación de para qué sirve cada una. Evidentemente, Bud ha dedicado mucho tiempo a trabajar en ellas y ha comprobado muchas veces que no hay ningún error que pueda comprometer nuestra fuga.

 

1.      Clase Clave

 

Te había dicho que hacen falta cinco claves para abrir la puerta de forma normal. Nosotros solo tenemos una; la conseguimos cuando accedimos al despacho de Vicente. Tenemos suerte, ya que es la más importante; gracias a ella se pueden seguir los demás pasos para, al final, conseguir desarmarla completamente. Esta clase permite al sistema comprobar que la clave que tenemos todavía está activa y vigente. Por lo tanto, esta clase representa una clave y verifica si la llave es válida.

 

public class Clave {
    private String Clave;

    public Clave(String key) {
        this.Clave = key;  // Asigna correctamente el parámetro al atributo
    }

    public boolean Valida() {
        // Verificación simple de la llave
        return "claveCorrecta".equals(this.Clave);
    }
}

 

Una vez introducida la clave de acceso, el sistema quiere saber quién es la persona que trata de acceder. Fingiremos que somos el director. Para ello, contamos con su código de identificación personal. Es muy sencillo conocer el número de identificación de cualquier trabajador de la prisión; no es ningún secreto, ya que aparece en cualquier documento o registro de empleados.

2.      Clase AccessCode

 

Esta clase representa un código de acceso y verifica si el código es correcto.

 

public class AccessCode {
    private int code;

    public AccessCode(int code) {
        this.code = code;
    }

    public boolean isValid() {
        // Verificación simple del código de acceso (puede ser cualquier lógica)
        return this.code == 1234;
    }
}

3.      Clase Light

 

Para que la puerta se abra, es totalmente obligatorio que el foco de luz que ilumina la puerta desde el exterior esté encendido. Esto ayuda a aumentar la seguridad y la visibilidad de la zona. Sin embargo, nosotros preferimos la oscuridad, para que las cámaras no nos detecten. Por lo tanto, debemos hacer creer al sistema que la luz está encendida. Lo haremos con el siguiente método.

 

public class Light { 

      public void turnOn() {

           // Simula encender la luz System.out.println("La luz está encendida.");

      }

}

4.      Clase Alarm

Cuando la puerta se abre sin autorización, suena una alarma, y no queremos que eso ocurra. Debemos crear un método que indique que la alarma está activada, aunque ya nos hemos encargado de desactivarla previamente.

public class Alarm { 

      public void enable() {

         // Simula que la alarma esta activa. System.out.println("La alarma está activada.");

       }

}

5.      Clase Puerta

 

Por último, queremos engañar al sistema de seguridad e indicar que la puerta está abierta. Simplemente tendremos que crear una clase que indique que, efectivamente, la puerta está abierta. De esa forma, realmente lo estará y, por fin, podremos salir.

 

public class Puerta { 

       public void abrir() {

              // Simula abrir la puerta System.out.println("La puerta está abierta.");

        }

}

Clase Main

 

En esta clase, creamos los objetos necesarios y llamamos a sus métodos para abrir la puerta.

public class Main {

    public static void main(String[] args) {

        // Crear objetos

        Clave clave = new Clave("67898");
        AccessCode accessCode = new AccessCode(787656);
        Light light = new Light();
        Alarm alarm = new Alarm();
        Door door = new Door();

        // Proceso para abrir la puerta

        if (clave.Valida() && accessCode.isValid()) {  

            // se llaman los métodos sobre los objetos

            light.turnOn();
            alarm.disable();
            door.open();

        } else {

            System.out.println("La llave o el código de acceso son incorrectos. No se puede abrir la puerta.");

        }

    }

}

Básicamente, esto es todo. Esperemos que esta noche todo salga bien. Nos ha costado mucho esfuerzo llegar hasta aquí, y sería un gran problema no conseguir nuestra fuga. Aunque sería mucho peor que nos atraparan. Si eso pasara, me esperaría una larga temporada encerrado, Rich quedaría impune y nunca se haría justicia.