Autor Tema: Ejercicio CU00632B - Imprimir por consola en Java System.out concatenar cadenas  (Leído 4263 veces)

luispdl

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Buenas, queria saber si hice bien este ejercicios.
Código: [Seleccionar]
class Medico {
    String nombre;
    String apellido;
    int edad;
    boolean casado;
    String DNI;
    String especialidad;
   
    public Medico(){
        nombre = "";
        apellido = "";
        edad = 0;
        casado = false;
        DNI = "";
        especialidad = "";
    }
   
    public void setNombre( String valorNombre) {
        System.out.println("Ha cambiado el nombre del medico de nombre "+ nombre + apellido + " a "+ valorNombre );
        nombre = valorNombre;
    }
   
    public void setApellido ( String valorApellido) {
        System.out.println("Ha cambiado el apellido del medico de nombre "+ nombre + apellido + " a "+ valorApellido );
        apellido = valorApellido;
    }
   
    public void setEdad (int valorEdad) {
        edad = valorEdad;
        System.out.println("Ha cambiado la edad del medico de nombre "+ nombre + apellido + " a "+ valorEdad );
    }
   
    public void setCasado (boolean valorCasado) {
        casado = valorCasado;
        System.out.println("Ha cambiado el estado de casado del medico de nombre "+ nombre + apellido + " a "+ valorCasado );
    }
   
    public void setDNI (String valorDNI) {
        DNI = valorDNI;
        System.out.println("Ha cambiado el DNI del medico de nombre "+ nombre + apellido + " a "+ valorDNI );
    }
   
    public void setEspecialidad (String valorEspecialidad) {
        especialidad = valorEspecialidad;
        System.out.println("Ha cambiado la especialidad del medico de nombre "+ nombre + apellido + " a "+ valorEspecialidad );
    }
   
    public String getNombre (){
        return nombre;
    }
   
    public String getApellido () {
        return apellido;
    }
   
    public int getEdad () {
        return edad;
    }
   
    public boolean getCasado () {
        return casado;
    }
   
    public String getDNI () {
        return DNI;
    }
   
    public String getEspecialidad () {
        return especialidad;
    }
   
}
   

Les comento igual que cambie el nombre de la variable numeroDocumentoIdentidad por DNI(Documento Nacional de Identidad, en Argentina), para que no quede tan largo. Muchas gracias.
« Última modificación: 06 de Octubre 2014, 07:55 por Alex Rodríguez »

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
 Hola  luispdl!

Tu ejercicio cumple con lo requerido en el enunciado de este ejercicio, sin embargo hay unos cuantos puntos a comentar.

1ro: Has declarado "class Medico" esto es valido pero no recomendable, lo correcto seria "public class Medico" si no le indicas al compilador que la clase es publica mediante el controlador de acceso "public" quien mire tu codigo podria pensar que has olvidado incluir esta palabra clave ya que lo normal es declarar:
(tipodeacceso class NombreDeLaClase) public class Medico.

2do: Has inicializado las variables correctamente, cada una con su valor por defecto, pero analizando tu codigo se puede observar que tiene una deficiencia. Cuando por ejemplo invocamos el metodo setNombre(String valorNombre) este nos muestra el siguiente mensaje por pantalla (ejemplo): "Ha cambiado el nombre del medico de nombre  a juan. Cuando tiene en su cuerpo la siguiente sintaxis:
Código: [Seleccionar]
System.out.println("Ha cambiado el nombre del medico de nombre "+ nombre + apellido + " a "+ valorNombre );
Fíjate que tu intención es primero mostrar el nombre  y apellido actual del medico y luego el nombre al que se acaba de actualizar (valorNombre) la variable nombre, seria algo asi como: "Ha cambiado el nombre del medico de nombre jose perez a juan"

Solo esta saliendo el nombre al que acaba de actualizar la variable nombre, porque sucede esto? Es lógico que suceda porque se esta mostrando por pantalla el primer valor de las variables nombre y apellido, el cual según las has inicializado es: ""; (una cadena de texto vacía).

Prueba a inicializar los valores iniciales de nombre y apellido de la siguiente manera: nombre = "Desconocido"; apellido = "Desconocido"; y ahora invoca tu metodo setNombre(String valorNombre);

No notas algo mas lógico?

Conclusión: inicializar variables con su valor por defecto, siempre ha de ser lo mas correcto, a menos que se nos presenten situaciones especiales como estas, donde lo mas logico es asignar como primer valor (inicializar) a las variables nombre, apellido y DNI un valor como "Desconocido"; y especialidad con valor "Desconocida";

Tu constructor quedaría mas o menos asi:
Código: [Seleccionar]
public Medico(){
        nombre = "Desconocido";
        apellido = "Desconocido";
        edad = 0;
        casado = false;
        DNI = "Desconocido";
        especialidad = "Desconocida";
    }
Y tu metodo setNombre(String valorNombre); quedaría mas o menos asi:
Código: [Seleccionar]
public void setNombre( String valorNombre) {
        System.out.println("Ha cambiado el nombre del medico de nombre "+ nombre + " " + apellido + " a "+ valorNombre + " " + apellido);
        nombre = valorNombre;
    }

Segun avances en el curso te daras de cuenta que no es necesario que un método set realice otras tareas aparte de su tarea original (redefnir el valor de una variable), como lo es mostrar un mensaje por pantalla ext..

También mas adelante veras la forma correcta de delarar las variables, cuya sintaxis es:
"tipoDeAcceso tipoDeLaVariable nombreDeLaVariable" (private String nombre) ext.. Pero todo a su tiempo, así que continua avanzando que vas bien.

Saludos!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

luispdl

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Muchas gracias por la respuesta, ahí lo corregí.
Después cuando aplique la clase vi que eso iba a estar mal, aunque no supe como ponerlo.
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".