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.

