Autor Tema: Ejercicio CU00632B mostrar mensajes por consola java  (Leído 5147 veces)

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Ejercicio CU00632B mostrar mensajes por consola java
« en: 19 de Agosto 2014, 07:15 »
Adjunto mi código.......y de Antemano muchas Gracias por la ayuda.

Código: [Seleccionar]
/* 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. */


public class Medico{
    String nombre;
    String apellidos;
    int edad;
    boolean casado;
    String id;
    String especialidad;
 
    public Medico (){
        nombre = "";
        apellidos = "";
        edad = 20;
        casado = false;
        id = "me00000";
        especialidad= "cirujano";
    }
    public String nombre (String dijiteNombre){
        System.out.println ("ha cambiado el nombre del medico por " + dijiteNombre);
        dijiteNombre = dijiteNombre;
        System.out.println ("El nuevo nombre es " + dijiteNombre);
        return "El metodo devuelve " + dijiteNombre;
    }
    public String apellidos (String dijiteApellidos){
        System.out.println ("han cambiado los apellidos por " + dijiteApellidos);
        dijiteApellidos = dijiteApellidos;
        System.out.println ("Los nuevos apellidos son " + dijiteApellidos);
        return "El metodo devuelve " + dijiteApellidos;
    }
    public int edad (int dijiteEdad){
        System.out.println ("Ha cambiado la edad por " + dijiteEdad);
        dijiteEdad = dijiteEdad;
        System.out.println ("La nueva edad es " + dijiteEdad + " años");
        return dijiteEdad;
    }
    public boolean casado (boolean casadoFoV){
        System.out.println ("es Casado? " + casadoFoV);
        casadoFoV = casadoFoV;
        System.out.println ("la respuesta a si es casado ahora es " + casadoFoV);
        return casadoFoV;
    }
    public String id (String dijiteID){
        System.out.println ("Ha cambiado la ID por " + dijiteID);
        dijiteID = dijiteID;
        System.out.println ("la nueva ID es " + dijiteID);
        return "El metodo devuelve " + dijiteID;
    }
    public String especialidad (String dijiteEsp){
        System.out.println (" ha cambiado la espacialidad por " + dijiteEsp);
        dijiteEsp = dijiteEsp;
        System.out.println ("la nueva especialidad es " + dijiteEsp);
        return "El metodo devuelve " + dijiteEsp;
    }
   }
       
   
       
   
   


« Última modificación: 31 de Agosto 2014, 10:48 por Alex Rodríguez »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Ejercicio CU00632B
« Respuesta #1 en: 19 de Agosto 2014, 10:17 »
Hola, tienes varias cosas que mejorar en este código.

En el constructor:

    public Medico (){
        nombre = "";
        apellidos = "";
        edad = 20;
        casado = false;
        id = "me00000";
        especialidad= "cirujano";
    }

Lo normal es inicializar a valores false, 0 ó vacío, por tanto un médico recién creado no tendría 20 años de edad, sino el valor 0 que sirve para saber que no ha sido establecida su edad.

Lo más normal sería esto:

    public Medico (){
        nombre = "";
        apellidos = "";
        edad = 0;
        casado = false;
        id = "";
        especialidad= "";
    }

Y el problema principal: no tienes métodos get y set. El enunciado te pide:

"los métodos para poder establecer y obtener los valores de los atributos"

Los métodos que has definido no están bien planteados.

Vuelve a leer los contenidos del curso y los ejemplos del curso sobre los métodos get y set.

Fíjate también en cómo lo han resuelto otros compañeros en el foro: https://www.aprenderaprogramar.com/foros/index.php?topic=1132

Una vez hayas releído y revisado lo ideal es que trates de escribir tú mismo el código, si eres capaz de hacerlo será que habrás entendido bien los conceptos, que es lo interesante...

Saludos
Responsable de departamento de producción aprenderaprogramar.com

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Re:Ejercicio CU00632B
« Respuesta #2 en: 20 de Agosto 2014, 08:13 »
Aqui nuevamente el codigo; Gracias por tu tiempo y corregir mi ejercicio.


Código: [Seleccionar]

public class Medico{
    String nombre;
    String apellidos;
    int edad;
    boolean casado;
    String id;
    String especialidad;
 
    public Medico (){
        nombre = "";
        apellidos = "";
        edad = 0;
        casado = false;
        id = "00000000";
        especialidad= "";
    }
    public void setNombre (String dijiteNombre){
        System.out.println ("ha cambiado el nombre del medico por " + dijiteNombre + " .El nuevo nombre es " + dijiteNombre);
        nombre = dijiteNombre;         
    }
    public void setApellidos (String dijiteApellidos){
        System.out.println ("han cambiado los apellidos por " + dijiteApellidos + " Los nuevos apellidos son " + dijiteApellidos);
        apellidos = dijiteApellidos;
    }
    public void setEdad (int dijiteEdad){
        System.out.println ("Ha cambiado la edad por " + dijiteEdad + " La nueva edad es " + dijiteEdad + " años");
        edad = dijiteEdad;
    }
    public void setCasado (boolean casadoFoV){
        System.out.println ("es Casado? " + casadoFoV + " La respuesta a si es casado ahora es " + casadoFoV );
        casado = casadoFoV;
    }
    public void setID (String dijiteID){
        System.out.println ("Ha cambiado la ID por " + dijiteID + " La nueva ID es " + dijiteID);
        id = dijiteID;
    }
    public void setEspecialidad (String dijiteEsp){
        System.out.println (" ha cambiado la espacialidad por " + dijiteEsp + " La nueva especialidad es " + dijiteEsp);
        especialidad = dijiteEsp;
    }
    public String getNombre() {return nombre;}
    public String getApellidos() {return apellidos;}
    public int getEdad () {return edad;}
    public boolean getCasado(){return casado;}
    public String getID (){return id;}
    public String getEspecialidad (){return especialidad;}
   }



Tengo una pregunta acerca de los metodos get y set
Quedo en duda acerca de la funcion de estos metodos porque si borro los prefijos get y set de mis metodos, esto en relaidad no afecta en nada el codigo; me explico:

por ejemplo

para la orden
                       public void setNombre (String dijiteNombre) ---- para modificar Nombre
y                     public String getNombre (){return nombre;} --- para consultar

pero si en cambio dejo el codigo asi
                       public void Nombre (String dijiteNombre) ---- para modificar Nombre
y                     public String Nombre (){return nombre;} --- para consultar

las dos funcionan y el código no presenta error; es como si no fuera estrictamente necesario usar get o set. entonces mi pregunta es. ¿ se utilizan los setters o getters simplemente para facilitar el entendimiento del código, como guia de donde se modifica y donde se consulta ? o si no es asi ¿ me podrían explicar por ejemplo q pasa si simplemente no los uso?...


César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Ejercicio CU00632B
« Respuesta #3 en: 20 de Agosto 2014, 12:01 »
Ahora el código está ok  :)

Lo de los métodos get y set es tal y como tú dices: no es estrictamente necesario usar get y set, se puede cambiar el nombre y el método sigue funcionando. ¿Por qué se usan esos nombres? Porque es una convención o acuerdo entre todos los desarrolladores (de lenguajes, programadores, etc.), no una obligación. Piensa por ejemplo que tú escribes de izquierda a derecha, pero podrías escribir de derecha a izquierda y también podría entenderse. No es estrictamente necesario que escribas de izquierda a derecha, pero lo haces porque todo el mundo lo hacemos y así nos entendemos mejor que si cada uno hiciera las cosas a su manera.

¿Qué pasa si no usas los get y set? Pues lo mismo que si escribes de derecha a izquierda, en realidad pasar pasar no pasa nada, pero los demás no te van a entender  ::)

Saludos
Responsable de departamento de producción aprenderaprogramar.com

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:Ejercicio CU00632B
« Respuesta #4 en: 20 de Agosto 2014, 12:49 »
Hola me gustaría aportar una cosilla... Como bien ha comentado Cesar, esto de llamar set a los métodos modificadores y get a los consultores se produce por consenso, y debido a esto, hay muchos frameworks, como JSF(java server faces), hibernate, spring, etc que hacen uso de esta filosofía, y mediante técnicas de introspección(http://es.wikipedia.org/wiki/Introspecci%C3%B3n_de_tipos) llaman a estos métodos para crear objetos en tiempo de ejecución.

Por tanto, es importante que te acostumbres a usarlo ahora con estas convenciones, por que en el futuro en algunos casos si te será necesario disponer de estos métodos con estos nombres.

Y nada un saludo!   

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Re:Ejercicio CU00632B
« Respuesta #5 en: 21 de Agosto 2014, 23:32 »
Muchas gracias por las respuestas a mis preguntas.
Ahora considero muy importante usar los get y set. Por mi bien y el bien de la comunidad de Aprendices y Programadores.  :D

 

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