Autor Tema: Duda Ejercicio COD. CU00632B "Aprender programación en java desde cero"  (Leído 5838 veces)

emma

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 22
    • Ver Perfil
Según el enunciado del problema que dice así.
"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."[...]

Yo pensé utilizar alguna estructura de selección, pero como todavía no se vió dichas estructuras en el curso, como desafío sería correcto poder solucionarlo sin utilizar ninguna de ellas. ¿Sería correcto? ..Gracias.!

emma

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 22
    • Ver Perfil
Ejercicio COD. CU00632B "Aprender programación en java desde Cero"
« Respuesta #1 en: 18 de Marzo 2015, 00:52 »
Bueno gente les dejo el ejercicio, que al final lo resolví de la manera en yo me lo había planteado.!

Código: [Seleccionar]
public class Medico
{
//Atributos
    private String nombre;
    private String nomAnt;
    private String apellido;
    private String apeAnt;   //Atributos en donde almaceno el estado anterior
    private int edad;
    private int edadAnt;
    private boolean casado;
    private boolean casadoAnt;
    private String numeroDocumentoIdentidad;
    private String numeroAnt;
    private String especialidad;
    private String espAnt;
   
    //Constructor
        public Medico(){
           
            nombre = "Desconocido";
            apellido = "Desconocido";
            edad = 0;
            casado = false;
            numeroDocumentoIdentidad = "Vacio";
            especialidad = "Desconocido";
           
           
        }
        //Getters
        public String getNombre(){
       
            System.out.println("El nombre del medico "+ nomAnt+ " ha cambiado por: " +nombre);
            return nombre;
        }
       
        public String getApellido(){
           
System.out.println("El apellido "+ apeAnt +" del medico llamado "+ nombre +" ha cambiado por: " +apellido);
            return apellido;
           
        }
       
        public int getEdad(){
            System.out.println("La edad "+ edadAnt +" del medico llamado "+ apellido +" "+ nombre +" ha cambiado por: " +edad);
            return edad;
           
        }
       
        public boolean getCasado(){
            System.out.println("El estado civil "+ casadoAnt +" del medico "+ nombre + " ha cambiado por: " +casado);
            return casado;
        }
       
        public String getNumeroDocumentoIdentidad(){
            System.out.println("El numero de documento "+ numeroAnt +" del medico " +nombre+ " ha cambiado por: " +numeroDocumentoIdentidad);
            return numeroDocumentoIdentidad;
           
        }
       
        public String getEspecialidad(){
            System.out.println("La especialidad "+ espAnt + " del medico "+ nombre +" ha cambiado por: " +especialidad);
            return especialidad;
        }
//Setters
            public void setNombre(String nom){
                nomAnt = nombre;
                nombre = nom;
               
               
            }
           
            public void setApellido(String ape){
                apeAnt = apellido;
                apellido = ape;
            }
           
            public void setEdad(int edadPersona){
                edadAnt = edad;
                edad = edadPersona;
               
            }
           
            public void setCasado(boolean estadoCivil){
                casadoAnt = casado;
                casado = estadoCivil;
               
            }
           
            public void setNumeroDocumentoIdentidad(String dni){
                numeroAnt = numeroDocumentoIdentidad;
                numeroDocumentoIdentidad = dni;
            }
           
            public void setEspecialidad(String esp){
                espAnt = especialidad;
                especialidad = esp;
               
            }         
}

Gracias.!

Jorge lopez

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

Citar
Yo pensé utilizar alguna estructura de selección, pero como todavía no se vio dichas estructuras en el curso, como desafío sería correcto poder solucionarlo sin utilizar ninguna de ellas. ¿Sería correcto? ..Gracias.!

Por un lado te comento que estas en lo correcto, lo recomendable es seguir el ritmo del curso para obtener mejores resultados al final del mismo.

Por otro lado, te sugiero que cuando abras un tema, no abras otro nuevo tema relacionado con el anterior, he notado que abriste un "nuevo" tema (https://www.aprenderaprogramar.com/foros/index.php?topic=2156.0) relacionado a este mismo. Lo correcto es que en lugar de crear otro tema, publiques tu código en este mismo tema (hilo) utilizando la opción responder para asi evitar confusiones a quien lee tu segundo tema, quien tal vez no leyo tu primer tema y por lo tanto no sabe a que te refieres cuando dices:
Citar
Bueno gente les dejo el ejercicio, que al final lo resolví de la manera en yo me lo había planteado.!

Respecto al ejercicio, pues te respondere en el "otro" tema  ;)

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

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicio COD. CU00632B "Aprender programación en java desde Cero"
« Respuesta #3 en: 18 de Marzo 2015, 02:46 »
 Aquí tienes dos puntos importantes a tener en cuenta.

1ro: Según lo que especifica en el enunciado de este ejercicio, has declarado algunas variables de mas. Tu intención es guardar el valor anterior a un cambio sobre una variable, creando una variable adicional que guarde dicho anterior valor. Esto se puede conseguir utilizando solo una variable (las variables como: nomAnt no son necesarias) y mas adelante te mostrare como hacerlo.

2do: Si analizas lo que se pide en el ejercicio, te darás cuenta que los mensajes a mostrar por pantalla, debiste de incluirlos en los métodos setters y no en los getters como has hecho, aunque mas adelante, conforme avances en el curso, te darás cuenta que tanto los métodos getters como los métodos setters ningunos deben de mostrar mensajes por pantalla al ser invocados, sino que mas bien, deben de limitarse a realizar única y exclusivamente su tarea. Por ahora esta "mala practica" se presenta en esta entrega del curso, con la finalidad de ir familiarizando al alumno con lo que es imprimir mensajes por pantalla.

A continuación dejo un código de ejemplo, para que lo analices y tengas una idea de como imprimir ambos estados (pasado y presente) de una variable:
Código: [Seleccionar]
public class Medico
{
     //Atributo de clase
     private String nombre;
     //Constructor general
     public Medico()
     {
        nombre = "Desconocido";
     }
     //Setter
     public void setNombre(String nom)
     {
        System.out.println("Ha cambiado el nombre del medico: "+ nombre);//Esta linea imprime el valor de la variable nombre antes de que cambie su valor
        nombre = nom;//Esta linea cambia el valor de la variable nombre
        System.out.println("El nuevo nombre es: " + nombre);//Esta linea imprime el nuevo valor de la variable nombre en la misma linea
     }     
//Getter
public String getNombre()

        return nombre;//Un metodo getter solo debe devolver un valor especifico y no realizar ninguna otra tarea.
     }               
}//Fin de la clase

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

emma

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 22
    • Ver Perfil
Re:Ejercicio COD. CU00632B "Aprender programación en java desde Cero"
« Respuesta #4 en: 18 de Marzo 2015, 02:53 »
Gracias...Jorge..!! por tus consejos..!!

emma

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 22
    • Ver Perfil
Re:Ejercicio COD. CU00632B "Aprender programación en java desde Cero"
« Respuesta #5 en: 18 de Marzo 2015, 02:58 »
Había pensado, lo mismo. Estaba por incluirlos en los setters..pero bueno..! Ahh y con respecto a las variables, en tu caso el valor, se pierde al sobreescribirlo ¿claro esta..no? Yo lo hice pensando, en que el valor anterior pueda ser utilizado en otro proceso.¿Me explico?
« Última modificación: 18 de Marzo 2015, 08:19 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Emma, la repetición de temas es altamente indeseable tal y como te ha explicado Jorge. No lo hagas por favor.

Y Jorge, cuando se da esta situación los moderadores podemos usar la opción que nos aparece en la parte inferior "Combinar temas" para fusionar los temas. También podemos borrar mensajes, etc. Si te parece bien haz tú mismo la combinación de estos temas, lo único que te hace falta es indicar el id del otro tema a combinar, en este caso sería el 2156 (ya que la url termina en 2156).

Saludos

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
  Copiado Alex!  Thanks ;)

Entiendo tu punto emma, digamos que es tu decision hacerlo de una u otra forma y según tus necesidades, lo importante es que domines el tema  :)

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

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
ok Jorge  ;)

 

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