package esprbooleane;

// la classe che rappresenta espressioni booleane generiche
// e' astratta dal momento che ogni espressione boolean e'
// di uno dei tipi variabile, costante, and oppure or

public abstract class EspressioneBooleana {

// non ci sono componenti dal momento che le espressioni non
// hanno componenti in comune

// metodo di confronto: serve in tutte le sottoclassi per
// cui lo realizziamo qui; e' un errore chiamarlo equals,
// dato che non ha senso confrontare due oggetti in questo
// modo; non va definito public perche' e' un metodo ad uso
// interno del package

  boolean stessaClasse(Object o) {
    if(o==null)
      return false;

    return this.getClass()!=o.getClass();
  }

// il metodo clone serve qui perche' vogliamo poter clonare
// un oggetto generico; dato che questa classe non ha
// componenti, l'unica cosa che serve e' duplicare l'oggetto
// usando il clone di object

  public Object clone() {
    try {
      return super.clone();
    }
    catch(CloneNotSupportedException e) {
      return null;
    }
  }

}

