Autor Tema: ¿Para qué recibe parámetros un constructor Java? Inicializar objetos CU00640B  (Leído 2989 veces)

ronal.d87

  • Principiante
  • **
  • Mensajes: 72
    • Ver Perfil
Hola he aqui el desarrollo de la actividad CU00640B del tutorial de programación orientada a objetos entorno Java de aprenderaprogramar.com

Citar
Define una clase Profesor considerando los siguientes atributos de clase: nombre (String), apellidos (String), edad (int), casado (boolean), especialista (boolean). Define un constructor que reciba los parámetros necesarios para la inicialización y otro constructor que no reciba parámetros. Crea los métodos para poder establecer y obtener los valores de los atributos. Compila el código para comprobar que no presenta errores, crea un objeto usando un constructor y luego otro objeto usando el otro constructor. Comprueba que se inicializan correctamente consultando el valor de sus atributos después de haber creado los objetos.

Código: [Seleccionar]
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ejemplo01;

/**
 *
 * @author Ronnie
 */
public class ProfesorCU00640B {
    private String nombre, apellidos;
    private int edad;
    private boolean casado, especialista;

    public ProfesorCU00640B(String nombre, String apellidos, int edad,
            boolean casado, boolean especialista) {
        nombre = "Juan Diego";
        apellidos = "Mosquera Herrera";
        edad = 18;
        casado = true;
        especialista = true;
    }

    public ProfesorCU00640B() {
        nombre = "";
        apellidos = "";
        edad = 0;
        casado = false;
        especialista = false;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public void setCasado(boolean casado) {
        this.casado = casado;
    }

    public void setEspecialista(boolean especialista) {
        this.especialista = especialista;
    }

    public String getNombre() {
        return nombre;
    }

    public String getApellidos() {
        return apellidos;
    }

    public int getEdad() {
        return edad;
    }

    public boolean isCasado() {
        return casado;
    }

    public boolean isEspecialista() {
        return especialista;
    }
   
       
}
« Última modificación: 04 de Junio 2020, 18:04 por Alex Rodríguez »
Ronald Mosquera Mancilla

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 985
    • Ver Perfil
Re:Respuesta CU00640B
« Respuesta #1 en: 04 de Septiembre 2018, 01:04 »
Hola.

El motivo de que un constructor reciba parámetros, es utilizar dichos parámetros para incializar el objeto.
Así que este constructor:
Código: [Seleccionar]
public ProfesorCU00640B(String nombre, String apellidos, int edad,
            boolean casado, boolean especialista) {
        nombre = "Juan Diego";
        apellidos = "Mosquera Herrera";
        edad = 18;
        casado = true;
        especialista = true;
    }

No tendría sentido.
Lo que tiene sentido es recuperar los valores de esos parámetros y adjudicarselos a los atributos del objeto. Tal que así:

Código: [Seleccionar]
public ProfesorCU00640B(String nombre, String apellidos, int edad,
            boolean casado, boolean especialista) {
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.edad = edad;
        this.casado = casado;
        this.especialista = especialista;
    }

Puesto que los parámetros tienen exactamente el mismo nombre, es necesario usar la palabra reservada this. para que el compilador sepa distinguirlos.
Los que está precedidos de this. corresponden a los atributos del objeto.
Los que no, corresponden a los parámetros del constructor.


Si los parametros tuvieran nombres distintos de los atributos, no sería necesario usar la palabra reservada this. ya que el compilador de Java ahora no tendría problemas para diferenciar los atributos de los parámetros por llamarse diferente.
Mucha gente sigue usando el this. igualmente en estos casos, eso ya depende del gusto de cada uno, pero no sería necesario y el siguiente ejemplo funcionaría perfectamente:

Código: [Seleccionar]
public ProfesorCU00640B(String nom, String ape, int ed,
            boolean cas, boolean espe) {
        nombre = nom;
        apellidos = ape;
        edad = ed;
        casado = cas;
        especialista = espe;
    }
« Última modificación: 04 de Septiembre 2018, 01:08 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

 

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".