Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: emma en 17 de Marzo 2015, 22:33

Título: Duda Ejercicio COD. CU00632B "Aprender programación en java desde cero"
Publicado por: emma en 17 de Marzo 2015, 22:33
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.!
Título: Ejercicio COD. CU00632B "Aprender programación en java desde Cero"
Publicado por: emma 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.!
Título: Re:Duda Ejercicio COD. CU00632B "Aprender programación en java desde cero"
Publicado por: Jorge lopez en 18 de Marzo 2015, 01:23
 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 (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!
Título: Re:Ejercicio COD. CU00632B "Aprender programación en java desde Cero"
Publicado por: Jorge lopez 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!
Título: Re:Ejercicio COD. CU00632B "Aprender programación en java desde Cero"
Publicado por: emma en 18 de Marzo 2015, 02:53
Gracias...Jorge..!! por tus consejos..!!
Título: Re:Ejercicio COD. CU00632B "Aprender programación en java desde Cero"
Publicado por: emma 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?
Título: Re:Duda Ejercicio COD. CU00632B "Aprender programación en java desde cero"
Publicado por: Alex Rodríguez en 18 de Marzo 2015, 08:26
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
Título: Re:Duda Ejercicio COD. CU00632B "Aprender programación en java desde cero"
Publicado por: Jorge lopez en 19 de Marzo 2015, 01:00
  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!
Título: Re:Duda Ejercicio COD. CU00632B "Aprender programación en java desde cero"
Publicado por: Alex Rodríguez en 19 de Marzo 2015, 09:18
ok Jorge  ;)