Clase que define un objeto Persona

package objetos; /** * @author GALIA diciembre 2014 . Clase que define un objeto Persona. No se * tienen en cuenta las excepciones, ni la validación de los datos * introducidos */ public class Persona { /* Constantes. */ private final static char SEXO_POR_DEFECTO = 'H'; final int FLACO = -1; final int IDEAL = 0; final int GORDITO = 1; /* Atributos privados. */ private String nombre; private String DNI; private int edad; private char sexo; private double peso; private double altura; /** * Constructor por defecto */ /* * la palabra clave this referencia a la instancia actual.Distingue los * atributos de los parámetros y variables locales dentro de la * implementación de un método. */ public Persona() { this("", 0, SEXO_POR_DEFECTO, 0, 0); /* inicializa los atributos por defecto,el DNI lo devuelve un método */ } /** * Constructor con 3 parámetros * * @param nombre * @param edad * @param sexo */ public Persona(String nombre, int edad, char sexo) { this(nombre, edad, sexo, 0, 0); } /** * Constructor con 5 parámetros * * @param nombre * @param edad * @param sexo * @param peso * @param altura */ 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(); comprobarSexo(sexo); } /* Métodos privados,lo exige el enunciado */ private void comprobarSexo(char sexo) { // Si el sexo no es una H o una M, por defecto es H if (sexo != 'H' && sexo != 'M') { this.sexo = 'H'; } else { this.sexo = sexo; } } private void generarDni() { final int divisor = 23; // Generamos un número de 8 dígitos int numeroDNI = ((int) Math.floor(Math.random() * (100000000 - 10000000) + 10000000)); int resultado = numeroDNI - (numeroDNI / divisor * divisor); // Calculamos la letra del DNI char letraDNI = generaLetraDNI(resultado); // Pasamos el DNI a String DNI = Integer.toString(numeroDNI) + letraDNI; } private char generaLetraDNI(int resultado) { 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[resultado]; } /* Métodos públicos, de acceso a los atributos,setters y getters */ /** * Modifica el nombre de la persona * * @param nombre */ public void setNombre(String nombre) { this.nombre = nombre; } /** * Modifica la edad de la persona * * @param edad */ public void setEdad(int edad) { this.edad = edad; } /** * Modifica el sexo de la persona, comprueba que es correcto * * @param sexo */ public void setSexo(char sexo) { this.sexo = sexo; } /** * Modifica el peso de la persona * * @param peso */ public void setPeso(double peso) { this.peso = peso; } /** * Modifica la altura de la persona * * @param altura */ public void setAltura(double altura) { this.altura = altura; } /** * Calcula el índice de masa corporal * * @return código numérico(la constante) * * -1: la persona esta por debajo de su peso ideal 0: la persona * esta en su peso ideal 1: la persona esta por encima de su peso * ideal */ public int calcularIMC() { // Calculamos el peso de la persona double pesoAhora = peso / (Math.pow(altura, 2)); // elevamos la altura(base) a cuadrado, exponente 2() // Según el peso, devuelve un código if (pesoAhora >= 20 && pesoAhora <= 25) { return IDEAL; } else if (pesoAhora < 20) { return FLACO; } else { return GORDITO; } } /** * Indica si la persona es mayor de edad * * @return true si es mayor de edad y false es menor de edad */ public boolean esMayor() { boolean mayor = false; if (edad >= 18) { mayor = true; } return mayor; } /** * Devuelve información del objeto * * @return cadena con toda la información */ /* * (sin Javadoc) * * @see java.lang.Object#toString() */ public String toString() { /* Me gusta mucho el operador ternario, queda muy elegante */ String sexo = (this.sexo == 'H') ? "hombre" : "mujer"; return "Resultados:\n" + "Nombre: " + nombre + "\n" + "Sexo: " + sexo + "\n" + "Edad: " + edad + " años\n" + "DNI: " + DNI + "\n" + "Peso: " + peso + " kg\n" + "Altura: " + altura + " metros\n"; } }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.