/* Auteur: Nicolas JANEY          */
/* nicolas.janey@univ-fcomte.fr   */
/* Avril 2005                     */

public class Personne {
  String nom;
  String prenom;
  int situationFamiliale;
  long id;
  
  /* Trois constructeurs                                  */
  /* - sans parametre -> nom vide, prenom vide            */
  /*      situation familiale au code -1,                 */
  /*      numero de securite sociale a -1                 */
  /* - avec quatres parametres String, String, entier     */
  /*   et entier long ->                                  */
  /*      nom, prenom, code situation et numero de secu   */
  /* - avec un parametre de classe Personne ->            */
  /*      initialisation par copie de cette personne      */

  public Personne() {
    nom = new String();
    prenom = new String();
    situationFamiliale = -1;
    id = -1;
  }
  
  public Personne(String n,String p,int s,long i) {
    nom = new String(n);
    prenom = new String(p);
    situationFamiliale = s;
    id = i;
  }
  
  public Personne(Personne p) {
    nom = new String(p.nom);
    prenom = new String(p.prenom);
    situationFamiliale = p.situationFamiliale;
    id = p.id;
  }
  
  /* Methode de test du sexe                              */
  
  public boolean sexe() {
    return((id/100000000000000L) == 1);
  }
  
  /* Methode de calcul de la date de naissance            */
  /* (annee*100+mois) par extraction                      */
  /* depuis le numero de secu                             */
  
  public int dateNaissance() {
    return((int) ((id/10000000000L)%10000));
  }
  
  /* Methode de comparaison avec l'age                    */
  /* d'une autre personne                                 */
  
  public boolean plusAgeQue(Personne p) {
    return(dateNaissance() < p.dateNaissance());
  }
  
  /* Methode de comparaison selon le classement           */
  /* nom, prenom, date de naissance                       */
  
  public boolean classeAvant(Personne p) {
    if ( nom.compareTo(p.nom) < 0 )
      return(true);
    if ( nom.compareTo(p.nom) > 0 )
      return(false);
    if ( prenom.compareTo(p.prenom) < 0 )
      return(true);
    if ( prenom.compareTo(p.prenom) > 0 )
      return(false);
    return(dateNaissance() > p.dateNaissance());
  }
  
  /* Surcharge de la methode toString                     */

  public String toString() {
    return(nom+" "+prenom+" "+situationFamiliale+" "+id);
  }
}