Qualche settimana fa sono entrato in metropolitana da una stazione ferroviaria con un tornello aperto. Non sapevo ci fosse l’accesso diretto alla metropolitana e dunque, avendo l’abbonamento, all’uscita ho dovuto chiedere all’operatore di aprire.
Ovviamente, sarebbe insensato mettere una cosa del tipo
if (abbonamento == True && isValid == True) { tornello.open() }
Dato che basterebbe passarsi l’abbonamento di mano in mano per passare liberamente.
Tuttavia, considerando la possibilità che vi siano tornelli dipendenti da altri che possono essere aperti inserirei, negli abbonamenti, tre stati: Uno che segnala come si sia entrati, tutto regolare (1), uno che segnala come non si sia entrati (0) e uno come si sia usciti senza entrata (-1). In tal modo il tornello con gli stati 1 e 0 si aprirebbe, magari mandando una segnalazione alla centrale operativa se ci sono tanti 0 (quindi possibile guasto in qualche tornello d’ingresso) ma che blocchi tutto, mandando al controllo manuale, chi prova a passare con un -1.
Ovviamente ad ogni strisciata in uscita si abbasserebbe lo stato: 1 diventa 0 e 0 diventa -1.