Publicado en Tema 4 • Clases y Objetos

Tema 4 – Ejercicio 2

📌 Enunciado

Crea un nuevo paqué llamado ejercicio2.

Crea un enumerado llamado Sexo para añadir un nuevo atributo en la clase Persona qué indiqué si una persona es Hombre o Mujer.

  • Crea una nueva clase para el enumerado.
  • Añade un nuevo atributo a la clase Persona del ejercicio anterior.
  • Comprueba si es necesario importar el enumerado.
  • Indica qué sexo tienen por defecto las personas creadas en la ciudad.
  • Modifica alguna persona para establecer su sexo.
  • Añade un nuevo constructor qué incluya el sexo.

📦 Paquete

package Ejercicios.ejercicio2;

🔢 Enumerado Sexo

Se crea un enumerado llamado Sexo para representar los valores posibles del atributo sexo de una persona.

package Ejercicios.ejercicio2;

public enum Sexo {
    HOMBRE,
    MUJER,
}

Al estar el enumerado en el mismo paqué no es necesario importarlo dentro de la clase Persona.

👤 Clase Persona (con atributo Sexo)

Se añade el atributo Sexo sexo a la clase Persona y se modifican los constructores para asignar un sexo por defecto o uno indicado.

package Ejercicios.ejercicio2;

public class Persona {

    String nombre;
    int edad;
    float estatura;
    Sexo sexo;

    // Constructor sin parámetros
    public Persona() {
        nombre = "anónimo";
        edad = 18;
        estatura = 1.70f;
        sexo = Sexo.HOMBRE;
    }

    // Constructor qué incluye solo el nombre
    public Persona(String nombre) {
        this.nombre = nombre;
        edad = 18;
        estatura = 1.70f;
        sexo = Sexo.MUJER;
    }

    // Constructor con todos los parámetros (sin sexo)
    public Persona(String nombre, int edad, float estatura) {
        this.nombre = nombre;
        this.edad = edad;
        this.estatura = estatura;
        sexo = Sexo.HOMBRE;
    }

    // Constructor con apellido
    public Persona(String nombre, String apellido, int edad, float estatura) {
        this(nombre + " " + apellido, edad, estatura);
    }

    // Constructor con sexo
    public Persona(String nombre, int edad, float estatura, Sexo sexo) {
        this.nombre = nombre;
        this.edad = edad;
        this.estatura = estatura;
        this.sexo = sexo;
    }

    // Constructor nombre + apellido + sexo
    public Persona(String nombre, String apellido, int edad, float estatura, Sexo sexo) {
        this(nombre + " " + apellido, edad, estatura, sexo);
    }

    @Override
    public String toString() {
        return "Persona [nombre=" + nombre +
               ", edad=" + edad +
               ", estatura=" + estatura +
               ", sexo=" + sexo + "]";
    }
}

🔍 Observaciones

  • El sexo por defecto depende del constructor utilizado.
  • El enumerado mejora la legibilidad y evita valores incorrectos.
  • No es necesario usar import al estar en el mismo paquete.

🏙️ Clase Ciudad

En la clase principal se crean personas usando distintos constructores y se muestra su información por pantalla.

package Ejercicios.ejercicio2;

public class Ciudad {

    public static void main(String[] args) {

        Persona pepe = new Persona();
        Persona paco = new Persona("Paco");

        Persona ana = new Persona("Ana", 22, 1.65f, Sexo.MUJER);
        Persona juan = new Persona("Juan", "Pérez", 30, 1.80f, Sexo.HOMBRE);

        System.out.println(pepe);
        System.out.println(paco);
        System.out.println(ana);
        System.out.println(juan);
    }
}

✅ Conclusión

  • Se ha creado y utilizado un enumerado.
  • Se ha ampliado la clase Persona con un nuevo atributo.
  • Se han sobrecargado constructores para incluir el sexo.
  • Se ha comprobado el valor por defecto del nuevo atributo.