/** * Classe oggetto che rappresenta una data * nel formato: giorno, mese, anno. * * @author Damiano Macedonio * @version 1.0 */ public class Data { private int giorno; private String mese; private int anno; private static String mesi[] = { "gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre" }; private static int numeroDate = 0; /** * Crea una nuova data impostata al primo gennaio 2014. */ public Data() { this(1, "gennaio", 2014); } /** * Crea una nuova data impostata dall'utente. * Se i valori immessi non sono ammissibili, * la data viene impostata ai valori di deafult. * * @param g giorno * @param m mese * @param a anno */ public Data(int g, String m, int a) { set(g, m, a); } /** * Crea una nuova data con anno fissato al 2014. * Gli altri valori sono impostati dall'utente. * Se i valori immessi non sono ammissibili, * la data viene impostata ai valori di deafult. * * @param g giorno * @param m mese */ public Data(int g, String m) { this(g, m, 2014); } /** * Crea una nuova data impostata dall'utente. * Se i valori immessi non sono ammissibili, * la data viene impostata ai valori di deafult. * * @param g giorno * @param m mese * @param a anno */ public Data(int g, int m, int a) { this(g, mesi[m - 1], a); } /** * Modifica i valori della data secondo quelli immessi dall'utente * Se i valori immessi non sono ammissibili, * la data rimane al valore precedente. * * @param g giorno * @param m mese * @param a anno */ public void setData(int g, String m, int a) { set(g, m, a); } /** * Modifica i valori della data. * Se i valori immessi non sono ammissibili, * la data rimane al valore precedente. * * @param g giorno * @param m mese * @param a anno */ private void set(int g, String m, int a) { numeroDate++; int vecchioGiorno = giorno; String vecchioMese = mese; int vecchioAnno = anno; giorno = g; mese = m; anno = a; if (!isValid()) { System.out.println("data risultante inesistente"); giorno = vecchioGiorno; mese = vecchioMese; anno = vecchioAnno; } } /** * Restituisce il giorno. * * @return giorno */ public int getGiorno() { return giorno; } /** * Restituisce il mese. * * @return mese. */ public String getMese(){ return mese; } /** * Restituisce l'anno. * * @return anno */ public int getAnno() { return anno; } /** * Verifica se la data e' valida. * * @return true se la data e' valida, false altrimenti. */ private boolean isValid() { int giorniPerMese[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int numMese; for (numMese = 1; numMese <= 12; numMese++) if (mese.equals(mesi[numMese - 1])) // trovato il mese, ragioniamo sul giorno return giorno >= 1 && giorno <= giorniPerMese[numMese - 1]; return false; } /** * Verifica se this e' uguale a that. * * @return true se this e' uguale a that, * false altrimenti. */ public boolean equals(Data other) { if (other != null && other.mese != null) return giorno == other.giorno && mese.equals(other.mese) && anno == other.anno; if (other != null && mese == null) return giorno == other.giorno && anno == other.anno; return false; } /** * Restituisce una stringa che rappresenta una data nel formato * giorno/mese/anno * * @return la stringa rappresentante la data. */ public String toString() { return giorno + "/" + mese + "/" + anno; } /** * Restituisce il numero di date create finora. * * @return il numero di date create. */ public static int getNumeroDate() { return numeroDate; } }