Cod sursa(job #5958)

Utilizator wickedmanCristian Strat wickedman Data 16 ianuarie 2007 14:23:58
Problema A+B Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 4.08 kb
/**
 * Clasa Persoana descrie datele si comportamentul unei persoane
 */ 
public class Persoana {

 /* Atributele clasei */
   private String nume; // numele de familie
   private String prenume; // prenumele persoanei
   private int varsta; // varsta in ani impliniti
   private double inaltimea; // inaltimea persoanei in cm
   private char sex; // sexul persoanei. Valori posibile 'F' sau 'M'

 /* Metodele clasei */

   /** Constructor al clasei Persoana - cu toate datele
   * @param numePers numele persoanei
   * @param prenumePers prenumele persoanei 
   * @param varstaPers varsta persoanei 
   * @param inaltimaPers inaltimea persoanei 
   * @param sexPers sexul persoanei 
   */ 
   public Persoana( String numePers, String prenumePers,
                                         int varstaPers, double inaltimeaPers, char sexPers) {
      nume = numePers;
      prenume = prenumePers;
      varsta = varstaPers;
      inaltimea = inaltimeaPers;
      sex = Character.toUpperCase(sexPers);
      if (sex!='F' && sex!='M')
           sex = 'F';
  }

   /** Constructor al clasei Persoana - doar numele
   * @param numePers numele persoanei
   * @param prenumePers prenumele persoanei 
   */ 
   public Persoana( String numePers, String prenumePers ) {
      nume = numePers;
      prenume = prenumePers;
      varsta = 0;
      inaltimea = 0;
      sex = 'F';
  }

   /** Metoda getNume - permite aflarea numelui 
   * @return numele si prenumele persoanei
   */ 
   public String getNume() {
      return nume+" "+prenume;
   }

   /** Metoda getVarsta - permite aflarea varstei
   * @return varsta persoanei in ani impliniti
   */ 
   public int getVarsta() {
      return varsta;
   }

   /** Metoda getInaltimea - permite aflarea inaltimii
   * @return inaltimea persoanei in cm
   */ 
   public double getInaltimea() {
      return inaltimea;
   }

   /** Metoda getSex - permite aflarea sexului
   * @return sexul persoanei sub forma de sir de caractere
   */ 
   public String getSex() {
      String s;
      switch (sex) {
         case 'F': s = "feminin"; break;
         case 'M': s = "masculin"; break; 
         default: s = "neprecizat";
                    System.out.println("Atributul sex are o valoare eronata!"); break; 
      }
      return s;
   }

   /** Metoda setNume - permite schimbarea numelui dupa casatorie
   * se aplica doar pentru sex='F'
   * @param numeNou numele dupa schimbare
   */ 
   public void setNume(String numeNou) {
      if (sex=='F')
            nume = numeNou;
      else
            System.out.println("Nu se permite schimbarea numelui unei persoane de sex masculin!");
   }

   /** Metoda setVarsta - permite schimbarea varstei
   * @param varstaNoua varsta noua
   */ 
   public void setVarsta(int varstaNoua) {
      if (varstaNoua>=0 && varstaNoua<150)
            varsta = varstaNoua;
      else
            System.out.println("Varsta gresita!");
  }

   /** Metoda setInaltimea - permite schimbarea inaltimii persoanei 
   * @param inaltimeNoua inaltimea noua
   */ 
   public void setInaltimea(double inaltimeaNoua) {
      if (inaltimeaNoua>=10.0 && inaltimeaNoua<251.0)
            inaltimea = inaltimeaNoua;
      else
            System.out.println("Inaltimea gresita!");
   }
 
   /** Metoda afiseazaInformatii - afiseaza pe consola informatiile despre persoana
   */ 
   public void afiseazaInformatii(String p) {
      System.out.println("- Date despre persoana - "+p);
      System.out.println("Numele: " + getNume());
      System.out.println("Varsta: " + varsta);
      System.out.println("Inaltimea: " + inaltimea);
      System.out.println("Sexul: " + getSex()); 
   }
   /* Metoda main */ 
	public static void main(String args[]) {
	   Persoana p1, p2;
	
	   p1 = new Persoana( "Ionescu", "Mihai", 23, 1.74, 'M');
	   p1.afiseazaInformatii("p1");
	   p2 = p1;
	   p2.afiseazaInformatii("p2");
	   p1.setVarsta(p1.getVarsta()+1); // modific p1
	   p2.afiseazaInformatii("p2");
	   p2 = new Persoana( "Georgescu", "Mihaela");
	   p2.afiseazaInformatii("p2");
	} 


}