package famiglia;

import java.io.*;


/**
 * Classe che rappresenta il concetto di persona.
 */
public class Persona implements Serializable // ogni oggetto serializzabile deve implementare Serializable e deve
				             // contenere solo oggetti serializzabili
{

    /**
     * Costanti della classe famiglia, dichiarate come statiche
     */
    public final static int MASCHIO=1;
    public final static int FEMMINA=2;


    /**
     * Variabili di ogni oggetto
     */
    private String nome;
    private String cognome;
    private int sesso;
    private String dataNascita;

    /**
     * COstruttore di default.
     *@param nome nome della persona
     *@param cognome della persona
     *@param sesso sesso della persona (deve essere uno fra quelli validi)
     *@param dataNascita la data di nascita (si potrebbe anche utilizzare Date)
     */
    public Persona(String nome, String cognome, int sesso, String dataNascita)
    {
	this.nome = nome;
	this.cognome = cognome;

	// controllo che il sesso sia valido
	if(sesso>=MASCHIO && sesso<=FEMMINA){
	    this.sesso = sesso;
	}
	else{
	    // specificato un sesso non valido
	    System.out.println("Sesso non valido, impostazione di default a MASCHIO");
	    this.sesso=MASCHIO;
	}

	this.dataNascita = dataNascita;
    }


    /**
     * Stampa dei dati della persona
     */
    public void stampaDati()
    {
	System.out.println("Nome: "+nome);
	System.out.println("Cognome: "+cognome);

	if(sesso==MASCHIO){
	    System.out.println("Sesso: Maschio");
	}
	else{
	    System.out.println("Sesso: Femmina");
	}

	System.out.println("Nato il: "+dataNascita);
    }


    /**
     * Nome di questa persona.
     * @return il nome della persona
     */
    public String getNome(){
      return this.nome;
    }

    /**
     * Il cognome di questa persona.
     * @return il cognome della persona
     */
    public String getCognome(){
      return this.cognome;
    }

    /**
     * Data di nascita.
     * @return la data di nascita della persona
     */
    public String getDataNascita(){
      return this.dataNascita;
    }


    /**
     * Sesso di questa persona, come stringa.
     * @return la stringa MASCHIO o FEMMINA
     */
    public String getSesso(){
      if(this.sesso == MASCHIO){
        return "MASCHIO";
      }
      else{
        return "FEMMINA";
      }
    }

}
