Semafori

Con questo programma in Java sarete in grado di studiare la programmazione ad oggetti, studiando il caso specifico dei semafori, con la possibilità di cambiare, a vostra scelta, tra semafori italiani o esteri.

public class Semaforo {
	// un semaforo deve sapere di che colore è
	private int colore;	// 0 = verde - 1 = arancione - 2 = rosso
	private final static int VERDE = 0;
	private final static int ARANCIONE = 1;
	private final static int ROSSO = 2;
	private final static int ARANCIONE2 = 3;	// per rendere un semaforo non per forza italiano (inglese in questo caso)

	// scritto così il semaforo nasce inglese
	private static boolean nazionalità;			// se la modifichiamo, cambia ovunque.
	private final static boolean ITALIANA = true;
	private final static boolean INGLESE = false;
	
	// int colore = verde per default finchè non metto questo:
	public Semaforo () {
	}
	
	public void rosso () {
		colore = ROSSO;
	}
	
	public void arancione () {
		colore = ARANCIONE;
	}
	
	public void verde () {
		colore = VERDE;
	}
	
	public void prossimo () {
		if (nazionalità == ITALIANA && colore == ARANCIONE2)
			colore = ARANCIONE;
		colore++;
		if (nazionalità == ITALIANA)
			colore %= 3;
		else
			colore %= 4;
	}
	
	// metodo statico per parlare all'intera classe
	public static void diventaItaliano () {		// static su un metodo -> si aplica su una classe, non su un campo
		nazionalità = ITALIANA;
	}
	
	public static void diventaInglese () {		// metodi statici accedono solo a campi e oggetti staitici a loro volta
		nazionalità = INGLESE;
	}
	
	public String toString () {					// lol
		switch (colore) {
			case VERDE:		  return "O\nO\n*\n";
			case ARANCIONE: 
			case ARANCIONE2:  return "O\n*\nO\n";
			case ROSSO: 	  return "*\nO\nO\n";
			default: 		  return "";	// non si verificherà mai, ma il compilatore lo vuole.
		}
	}
}

Per ogni dubbio, non esitate a commentare!



  1. No trackbacks yet.

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>