Esercizio 21 – Serratura
- Febbraio 05, 2010
- by
- Donatantonio
Realizzare una classe per rappresentare una serratura con combinazione di 3 lettere maiuscole.
I metodi sono
- void setPosition(String) // inserisce una lettera del codice
- void reset() // azzera la combinazione inserita
- void unlock() //apre la serratura se il codice passato è quello della serratura
- boolean isOpen() // verifica se la serratura è aperta
- void lock() // chiude la serratura
- void newComb(String) // assegna la nuova combinazione se la serratura è aperta
Ecco la classe Serratura.java:
public class Serratura { String codice; String codInserito = null; String verifica = null; // Metodo Costruttore inizializzato con codice di tre lettere public Serratura(String c) { int lung = c.length(); if(lung==3 && c.equals(c.toUpperCase())) { codice = c; } else { // Lancia eccezione se il codice non è di 3 lettere throw new IllegalArgumentException("Codice non valido."); } } // Metodo che permette di inserire il codice, un carattere per volta public void setPosition(String uno ,String due, String tre) { String temp = uno+due; String temp1 = temp+tre; codInserito = temp1; } // Metodo che permette di aprire la serratura se il codice è esatto public void unlock() { if ( codInserito.equals(codice)) { verifica = "APERTA"; System.out.println("Serratura Aperta"); } else { verifica = "CHIUSA"; System.out.println("Serratura chiusa"); } } // Metodo che verifica lo stato della serratura public String isOpen() { String isOp = null; if(verifica.equals("APERTA")) { isOp = "Serratura aperta"; } else { isOp = "Serratura chiusa"; } return isOp; } // Metodo che permette di chiudere la serratura public void lock() { verifica = "CHIUSA"; codInserito = null; } // Metodo che permette di settare un nuovo codice di serratura public void newComb(String nc) { if(verifica.equals("APERTA")) { codice = nc; verifica = "CHIUSA"; } else { System.out.println("Serratura chiusa. ACCESSO NEGATO."); } } }
La classe di test:
import java.util.Scanner; public class TestSerratura { public static void main(String[] args) { Scanner in = new Scanner (System.in); // Creo una nuova serratura Serratura s = new Serratura("TRE"); // Prendo in input le 3 lettere del codice System.out.println("Inserisci prima lettera codice : "); String c = in.nextLine(); System.out.println("inserisci seconda lettera codice : "); String c1 = in.nextLine(); System.out.println("Inserisci terza lettare codice : "); String c2 = in.nextLine(); s.setPosition(c,c1,c2); // Verifico se il codice apre la serratura s.unlock(); // Verifico lo stato della serratura System.out.println("Lo stato della serratura è : " +s.isOpen()); // Setto una nuova combinazione se la serratura è aperta s.newComb("REE"); // Verifico il nuovo stato della serratura System.out.println(s.isOpen()); } }
Per ulteriori prove modificare il codice della serratura, modificando il valore in input al costruttore. Da notare anche il primo uso delle eccezioni.