Autor Tema: Clases con dos o más constructores - Ejercicio (CU00640B)  (Leído 957 veces)

Magore

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Buenas tardes.

Adjunto código con mi propuesta de solución para el ejercicio (CU00640B).

Por cierto, quisiera hacer una pregunta al respecto del contenido de este tema: ¿Qué utilidad práctica puede tener el declarar dos (o más) constructores con el mismo nombre?

Código: [Seleccionar]
public class Profesor {
    private String nombre;
    private String apellidos;
    private int edad;
    private boolean casado;
    private boolean especialista;
   
// Constructores:
    public Profesor (String valorNombre, String valorApellidos, int valorEdad,
                     boolean valorCasado, boolean valorEspecialista) {
        nombre = valorNombre;
        apellidos = valorApellidos;
        edad = valorEdad;
        casado = valorCasado;
        especialista = valorEspecialista;
    }
   
    public Profesor () {
        nombre = "";
        apellidos = "";
        edad = 0;
        casado = false;
        especialista = false;
    }
   
// Setters:
    public void setNombre (String valorNombre) {
        nombre = valorNombre;
    }
    public void setApellidos (String valorApellidos) {
        apellidos = valorApellidos;
    }
    public void setEdad (int valorEdad) {
        edad = valorEdad;
    }
    public void setCasado (boolean valorCasado) {
        casado = valorCasado;
    }
    public void setEspecialista (boolean valorEspecialista) {
        especialista = valorEspecialista;
    }
   
// Getters:
    public String getNombre() {
        return nombre;
    }
    public String getApellidos() {
        return apellidos;
    }
    public int getEdad() {
        return edad;
    }
    public boolean getCasado() {
        return casado;
    }
    public boolean getEspecialista() {
        return especialista;
    }
}

Un saludo,

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Clases con dos o más constructores - Ejercicio (CU00640B)
« Respuesta #1 en: 28 de Mayo 2023, 21:17 »
Hola Magore.

La utilidad es proporcionar al programador opciones y posibilidades, y el ya luego las usará como le convenga.

Tú ahora estás viendo ejemplos básicos y sencillos como crear un Empleado, un Alumno, un Profesor, una Asignatura.... son entidades sencillas de modelar que podrán tener más o menos atributos, pero en cualquier son ideas simples.

Pero luego irás viendo que es posible crear clases tan complejas como el programador quiera y pueda..., y poder disponer de múltiples constructores agiliza mucho la creación de objetos y reduce el código necesario.

Veamos un ejemplo concreto.
Vamos a la documentación de la API de Java y fijémonos en una clase, por ejemplo la clase JLabel

Un JLabel, es una "etiqueta" que se usa en la construcción de aplicaciones con interfaz gráfica.
Permite poner en pantalla un texto, o también una imagen a modo de icono.

A priori, parece un elemento sencillo, pero si miramos su documentación veremos que tiene hasta 6 constructores distintos:


Los constructores:
  • Sin argumentos. Crea una etiqueta vacía que luego habrá que añadirle elementos con los setters si queremos que tenga alguna utilidad.
  • Objeto de tipo Icon. Recibe la imagen que ha de mostrar en pantalla
  • Objeto de tipo Icon y un int. Además de la imagen, recibe un entero que indica como ha de alinearse en su eje horizontal(izquierda, centro o derecha)
  • Objeto de tipo String. Recibe una cadena con el texto que ha de mostrar en pantalla.
  • Objeto de tipo String, un tipo Icon y un int. Recibe un texto y una imagen para mostrar en pantalla, además de un entero indicando su alineación horizontal
  • Objeto de tipo String y un int. Recibe el texto a mostrar y el entero que indica como debe alinearse horizontalmente.

Sí, todo esto podría hacerse con un único constructor sin argumentos y luego usar getters para establecer todo lo demás.

Pero es que gracias a esos constructores, en lugar de usar dos o tres líneas de código para construir un JLabel, podemos hacerlo solo con una línea de código.

Y dirás, bueno, tampoco es tanto ahorro...
Pero es que una interfaz gráfica no tiene solamente un JLabel..., puede tener diez, veinte, cincuenta...o muchas más etiquetas.
Mira esta captura, prácticamente cada texto en pantalla es una etiqueta, unas con imagen, otras solo texto, algunas centradas, otras alineadas a la izquierda...


Todas son etiquetas, pero aún siendo de la misma clase, cada una es distinta de la otra y requieren construirse de formas distintas.

Y no es lo mismo escribir "solo" 50 líneas de código para crear 50 etiquetas, que tener que escribir 150 porque tras cada constructor hay que llamar además a dos o tres getters según lo que necesite cada etiqueta.


Por eso disponer de distintos constructores, donde cada uno se adapta a las necesidades de cada objeto concreto, resulta muy útil.
« Última modificación: 28 de Mayo 2023, 21:19 por Kabuto »
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Magore

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re: Clases con dos o más constructores - Ejercicio (CU00640B)
« Respuesta #2 en: 29 de Mayo 2023, 15:27 »
Entendido, Kabuto.

Muchas gracias por dedicarnos tu tiempo para facilitar una aclaración con tanto detalle.

Un saludo.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".