Codigo:
/**
* Clase Persona
* Contiene información de una persona
* @author DiscoDurodeRoer
*/
public class Persona {
/**
* Sexo por defecto
*/
private final static char SEXO_DEF = 'H';
/**
* El peso de la persona esta por debajo del peso ideal
*/
public static final int INFRAPESO = -1;
/**
* El peso de la persona esta en su peso ideal
*/
public static final int PESO_IDEAL = 0;
/**
* El peso de la persona esta por encima del peso ideal
*/
public static final int SOBREPESO = 1;
/**
* Nombre de la persona
*/
private String nombre;
/**
* Edad de la persona
*/
private int edad;
/**
* DNI de la persona, se genera al construir el objeto
*/
private String DNI;
/**
* Sexo de la persona, H hombre M mujer
*/
private char sexo;
/**
* Peso de la persona
*/
private double peso;
/**
* Altura de la persona
*/
private double altura;
/**
* Constructor por defecto
*/
public Persona() {
this("", 0, SEXO_DEF, 0, 0);
}
/**
* Constructor con 3 parametroe
*
* @param nombre de la persona
* @param edad de la persona
* @param sexo de la persona
*/
public Persona(String nombre, int edad, char sexo) {
this(nombre, edad, sexo, 0, 0);
}
/**
* Constructor con 5 parametros
*
* @param nombre de la persona
* @param edad de la persona
* @param sexo de la persona
* @param peso de la persona
* @param altura de la persona
*/
public Persona(String nombre, int edad, char sexo, double peso, double altura) {
this.nombre = nombre;
this.edad = edad;
this.peso = peso;
this.altura = altura;
generarDni();
this.sexo = sexo;
comprobarSexo();
}
private void comprobarSexo() {
if (sexo != 'H' && sexo != 'M') {
this.sexo = SEXO_DEF;
}
}
private void generarDni() {
final int divisor = 23;
int numDNI = ((int) Math.floor(Math.random() * (100000000 - 10000000) + 10000000));
int res = numDNI - (numDNI / divisor * divisor);
char letraDNI = generaLetraDNI(res);
DNI = Integer.toString(numDNI) + letraDNI;
}
private char generaLetraDNI(int res) {
char letras[] = {'T', 'R', 'W', 'A', 'G', 'M', 'Y',
'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z',
'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'};
return letras[res];
}
/**
* Modifica el nombre de la persona
*
* @param nombre a cambiar
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}
/**
* Modifica la edad de la persona
*
* @param edad a cambiar
*/
public void setEdad(int edad) {
this.edad = edad;
}
/**
* Modifica el sexo de la persona, comprueba que es correcto
*
* @param sexo a cambiar
*/
public void setSexo(char sexo) {
this.sexo = sexo;
}
/**
* Modifica el peso de la persona
*
* @param peso a cambiar
*/
public void setPeso(double peso) {
this.peso = peso;
}
/**
* Modifica la altura de la persona
*
* @param altura a cambiar
*/
public void setAltura(double altura) {
this.altura = altura;
}
/**
* Calcula el indice de masa corporal
*
* @return codigo numerico
* <ul><li>-1: la persona esta por debajo de su peso ideal</li>
* <li>0: la persona esta en su peso ideal</li>
* <li>1: la persona esta por encima de su peso ideal</li></ul>
*/
public int calcularIMC() {
double pesoActual = peso / (Math.pow(altura, 2));
if (pesoActual >= 20 && pesoActual <= 25) {
return PESO_IDEAL;
} else if (pesoActual < 20) {
return INFRAPESO;
} else {
return SOBREPESO;
}
}
/**
* Indica si la persona es mayor de edad
*
* @return true si es mayor de edad y false es menor de edad
*/
public boolean esMayorDeEdad() {
boolean mayor = false;
if (edad >= 18) {
mayor = true;
}
return mayor;
}
/**
* Devuelve informacion del objeto
*
* @return cadena con toda la informacion
*/
@Override
public String toString() {
String sexo;
if (this.sexo == 'H') {
sexo = "hombre";
} else {
sexo = "mujer";
}
return "Informacion de la persona:n"
+ "Nombre: " + nombre + "n"
+ "Sexo: " + sexo + "n"
+ "Edad: " + edad + " añosn"
+ "DNI: " + DNI + "n"
+ "Peso: " + peso + " kgn"
+ "Altura: " + altura + " metrosn";
}
}
No hay comentarios:
Publicar un comentario