Autor Tema: Java ¿Por qué inicializar los atributos tipo String a cadena vacía? CU00632B  (Leído 280 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 249
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola dejo el ejercicio del tema Java desde cero CU00632B del taller de programación Java desde cero de aprenderaprogramar.

Código: [Seleccionar]
//Declaracion de la clase
public class Medico{
    String nombre;                    //Nombre del medico
    String apellido;                  //Apellido del medico
    int edad;                         //Su edad
    boolean casado;                   //¿Esta casado?
    String numeroDNI;  //Su numero de identidad
    String especialidad;              //Su especialidad
    //Constructor y  atributos de la clase
    public Medico(){
        nombre= "Paquito";
        apellido= "El Chocolatero";
        edad= 0;
        casado= false;
        numeroDNI= "12305640-M";
        especialidad= "Novel";
    }
   
//Metodos setter
    public void setNombre(String valueName){
        System.out.println("Se ha cambiado el nombre del medico especialista " +  especialidad + " a : " +valueName);
        nombre= valueName;
    }

    public void setApellido(String valueApellido){
        System.out.println("Se ha cambiado el apellido del medico especialista  " + especialidad + " " +nombre +" a: "+valueApellido);
        apellido= valueApellido;
    }

    public void setEdad(int valueEdad){
        System.out.println("Se ha cambiado la edad del medico especialista "+ especialidad+ " "+ nombre +" "+ apellido +" a: "+valueEdad);
        edad= valueEdad;
    }

    public void setCasado(boolean valueCasado){
         System.out.println("El medico especialista " + especialidad +" "+ nombre +" "+ apellido +" ahora esta casado? : "+valueCasado);
         casado= valueCasado;
    }

    public void setnumeroDNI(String valuenumeroDNI){
        System.out.println("Se ha cambiado el numero de identidad del medico "+ nombre + " " +apellido + " de  "+numeroDNI +" a: "+valuenumeroDNI);
        numeroDNI= valuenumeroDNI;
    }

    public void setEspecialidad(String valueEspecialidad){
        System.out.println("Se ha cambiado la especialidad del medico "+nombre +" " + apellido +" de " + especialidad +" a: "+valueEspecialidad);
        especialidad= valueEspecialidad;
    }
//Metodos Getter
    public String getNombre(){ return nombre;}

    public String getApellido(){return apellido;}

    public int getEdad(){return edad;}

    public boolean getCasado(){return casado;}

    public String getnumeroDNI(){return numeroDNI;}

    public String getEspecialidad(){return especialidad;}
}

Gracias.
« última modificación: 27 de Abril 2019, 21:18 de Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2448
    • Ver Perfil
Re:Java desde Cero Ejercicio CU00632B
« Respuesta #1 : 26 de Septiembre 2018, 20:30 »
Buenas, el ejercicio está bien resuelto aunque el constructor no es adecuado porque los valores de defecto que has tomado no son lógicos tal y como he comentado en https://aprenderaprogramar.com/foros/index.php?topic=7101.0

Tal vez inicializando con 0, false y cadena vacía los mensajes por consola deberían plantearse de otra manera, pero esto tampoco tiene demasiada importancia (el ejercicio planteaba el ser capaz de utilizar los parámetros recibidos por un método y los atributos, y eso está logrado).

Y una vez más, repito lo ya indicado: pon nombre a los temas de los foros como se indica en https://aprenderaprogramar.com/foros/index.php?topic=1460.0, por favor.

Salu2

paramonso

  • Intermedio
  • ***
  • Mensajes: 249
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Re:Java desde Cero Ejercicio CU00632B
« Respuesta #2 : 27 de Septiembre 2018, 11:04 »
Hola Ogramar.

No se si es que yo no entiendo bien lo que quiere decir por defecto.
En la corrección del ejercicio me dices:
Citar
Buenas, el ejercicio está bien resuelto aunque el constructor no es adecuado porque los valores de defecto que has tomado no son lógicos tal y como he comentado en https://aprenderaprogramar.com/foros/index.php?topic=7101.0

Para mi por defecto puede ser que en el constructor los atributos se pueden iniciar con cualquier valor ya sea nulo, cadena vacía, cero o le ponga el valor que yo quiera.

Otra cosa sería iniciar los atributos en el constructor con sus valores nulos o sea a cero , false, cadena vacia o null.
Estos valores tambien son por defecto, pero en el ejercico pide:
Citar
Considera estás desarrollando un programa Java donde necesitas trabajar con objetos de tipo Medico (que representa a un médico de un hospital). Define una clase Medico considerando los siguientes atributos de clase: nombre (String), apellidos (String), edad (int), casado (boolean), numeroDocumentoIdentidad (String), especialidad (String). Define un constructor asignando unos valores de defecto a los atributos y los métodos para poder establecer y obtener los valores de los atributos. En cada método, incluye una instrucción para que se muestre por consola un mensaje informando del cambio. Por ejemplo si cambia la especialidad del médico, debe aparecer un mensaje que diga: “Ha cambiado la especialidad del médico de nombre … . La nueva especialidad es: …”. Compila el código para comprobar que no presenta errores, crea un objeto, usa sus métodos y comprueba que aparezcan correctamente los mensajes por consola. Para comprobar si es correcta tu solución puedes consultar en los foros aprenderaprogramar.com.

En lo que esta resaltado en negrita yo interpreto que tengo que poner por defecto algún valor dentro de los atributos, para que cuando yo modifique alguno de ellos aparezca en el mensaje el cambio que yo he echo.

Si inicio los atributos a nulos ("",False,0 etc) al presentar el cambio por pantalla no me aparecería el cambio del valor inicial con el que se hace o si ya que el valor inicial seria nulo("",false,0 etc..).
 
Gracias. ;)
Un saludo.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2448
    • Ver Perfil
Buenas, "por defecto" se refiere a que cualquier objeto que se cree tendrá siempre esos atributos, y para modificarlos habrá que hacerlo usando un procedimiento específico establecido para ello. En este ejercicio, si en el constructor de la clase defines nombre= "Paquito"; eso signfica que todas las instancias de la clase que se creen tendrán como atributo nombre "Paquito" y eso parece poco lógico. Es más lógico dejarlo como cadena vacía (que se puede interpretar como no establecido), o bien si quieres asignarle un valor podría ser "Desconocido", "No establecido", ó similar. Nada te impide usar "Paquito", el código compila, pero en general puede considerarse una mala práctica. Una solución correcta para este ejercicio podría ser la que se muestra en https://aprenderaprogramar.com/foros/index.php?topic=1300.0 Salu2

 

Esto es un laboratorio de ideas...
Aprender a programar

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