Autor Tema: Ejercicio CU00632B imprimir por consola System.out.println java  (Leído 9005 veces)

jga

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 31
    • Ver Perfil
Hola que tal , sigo aprendiendo con el curso de java , aqui envio la posible solucion de este ejercicio , que de nuevo espero se me corrija si es erroneo

Código: [Seleccionar]
//creando la clase

public class Medico
{
    String nombre ;
    String apellidos ;
    int edad ;
    boolean casado ;
    String dni ;
    String especialidad ;
   
    // constructor
    public Medico ()
   
    {
   
        nombre = "Carlos";
        apellidos = "Garcia";
        edad = 34 ;
        casado = false ;
        dni = "3445678g" ;
        especialidad = "traumatologo";
   
    }
        //cierre del constructor
   
        //metodos de procedimiento
   
        public void setNombre ( String valueNombre)
     
                    {  nombre = valueNombre;
   
                    }
 
        public void setApellidos ( String valueApellidos)
     
                    {   apellidos= valueApellidos;
   
                    }                     
                   
        public void setEdad( int valueEdad)
     
                    {   edad= valueEdad;
   
                    }
 
        public void setCasado ( boolean valueCasado)
     
                    {  casado = valueCasado;
   
                    }
 
        public void setDni ( String valueDni)
     
                    {   dni= valueDni;
   
                    }
                   
        public void setEspecialidad ( String valueEspecialidad)
     
                    { 
                        System.out.println ("La especialidad del doctor " + nombre + "  " + apellidos + " es " + especialidad); //se informa de la especialidad
                       
                        especialidad = valueEspecialidad; // se transforma y almacena el valor con nuevo valor ajustado por el informatico
                       
                       
                       
                        System.out.println ("Ha cambiado la especialidad del doctor " + nombre + "  " + apellidos +  " . " + "La nueva especialidad es : " + especialidad);
                       
                        // imprime la informacion
   
                    }
                    // fin de metodos de procedimiento
                   
                   
                    // metodos de funcion ( para obtener valor de los atributos )
                   
         public String getNombre ()   
                   
                    {
                    return nombre ; 
                   
                    }
           
         public String getApellidos ()   
                   
                    {
                    return apellidos ;
                   
                    }       
           
         public int getEdad ()   
                   
                    {
                    return edad ;
                   
                    }
         
         public boolean getCasado ()   
                   
                    {
                    return casado ;
                   
                    }         
         
         public String getDni ()   
                   
                    {
                    return dni ;
                   
                    }           
                   
         public String getEspecialidad ( String valueEspecialidad)         
                   
                    {
                    return valueEspecialidad ;
                   
                    }         
                   
                   
} // cierre de la clase

me surge una duda , con lo de la notación de punto en esta parte :

" En el caso de un objeto Taxi, una invocación de un método podría ser taxi1.getDistrito(). Esta invocación devuelve una cadena, por lo que podríamos escribir: System.out.println (“El distrito del taxi 1 es “ + taxi1.getDistrito() );   "

para poder imprimir el distrito de un taxi que no fuera el taxi1, ¿ el metodo getDistrito valdria para obtener los distritos de otros taxis  ? si no es asi ¿ tendria que ir escribiendo un metodo para obtener el valor de cada atributo en cada taxi en el codigo de la clase ?


espero haberme expresado bien ,gracias y un fuerte abrazo .
« Última modificación: 05 de Septiembre 2014, 19:14 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:Ejercicio CU00632B imprimir por consola System.out.println java
« Respuesta #1 en: 05 de Septiembre 2014, 19:15 »
Hola, lo primero recordar que para pegar código se debe pulsar el botón # del foro y cuando aparezcan las etiquetas [ code ] ... [ / code ] pegar el código entre ambas etiquetas. Luego pulsar el botón previsualizar para comprobar que se vea bien, si está todo bien pulsar en publicar.

Y sobre el código y las preguntas:

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:Ejercicio CU00632B imprimir por consola System.out.println java
« Respuesta #2 en: 05 de Septiembre 2014, 19:22 »
Y sobre el código y las preguntas:

Cuando termines de escribir el código pulsa en BlueJ la opción Edit - > Auto Layout para que mejore la ordenación y espaciado del código.

Para inicializar valores en vez de:

       nombre = "Carlos";
        apellidos = "Garcia";
        edad = 34 ;
        casado = false ;
        dni = "3445678g" ;
        especialidad = "traumatologo";

Lo normal sería:

       nombre = "";
        apellidos = "";
        edad = 0;
        casado = false ;
        dni = "" ;
        especialidad = "";

Es decir, por consenso se suele inicializar a cadena vacía, 0, false, etc. para después establecer los atributos. Si no, todos los objetos que crearas tendrían como atributo nombre "Carlos", como atributo apellidos "García", etc.

El mensaje de cambio que has incluido está bien, pero te falta incluir los mensajes de cambio en el resto de métodos set. El enunciado dice "En cada método, incluye una instrucción para que se muestre por consola un mensaje informando del cambio."

¿ el metodo getDistrito valdria para obtener los distritos de otros taxis  ?

Sí, por ejemplo si otro objeto es taxi2 se usaría taxi2.getDistrito();

La creación de objetos mediante código y el uso de métodos sobre esos objetos se van viendo a medida que se avanza con el curso, así que lo irás trabajando a medida que vayas avanzando.

Salu2!

jga

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 31
    • Ver Perfil
Re:Ejercicio CU00632B imprimir por consola System.out.println java
« Respuesta #3 en: 05 de Septiembre 2014, 23:04 »
Gracias por todo !!! , seguiré tus consejos.

saludos y un abrazo!!

Beginer

  • Sin experiencia
  • *
  • Mensajes: 9
    • Ver Perfil
    • CENTRAL COOPERATIVA NACIONAL LTDA. "CREDICOOP"
Re:Ejercicio CU00632B imprimir por consola System.out.println java
« Respuesta #4 en: 09 de Septiembre 2014, 20:13 »
Buenas tardes he estado viendo los ejemplos varios del foro por lo que he realizado el siguiente:
Código: [Seleccionar]
public class Medico
{
    // instanciar variables -
    private String nombre;
    private String apellido;
    private int edad;
    private boolean casado;
    private String numeroDocIdentidad;
    private String especialidad;
    private String oldEspecialidad;

    /**
     * Constructor para los objetos de la clase Medico
     */
    public Medico()
    {
      nombre = "";
      apellido = "";
      edad = 0;
      casado = false;
      numeroDocIdentidad = "";
      especialidad = "";
      oldEspecialidad = "";
    }

    // metodos para establecer los objetos
    public void setNombre (String valorNombre){
        nombre = valorNombre;
        System.out.println ("Ha cambiado el nombre del Medico a: " + nombre);
    }
     public void setApellido (String valorApellido){
        apellido = valorApellido;
        System.out.println ("Ha cambiado el apellido del Medico a: " + apellido);
    }
       public void setEdad (int valorEdad){
        edad = valorEdad;
         System.out.println ("Ha cambiado la edad del Medico ahora es: " + edad);
    }
     public void setCasado (boolean valorCasado){
        casado = valorCasado;
    }
    public void setNumeroDocIdentidad (String valorNumeroDocIdentidad){
        numeroDocIdentidad = valorNumeroDocIdentidad;
    }
    public void setEspecialidad (String valorEspecialidad){
        System.out.println ("La especialidad del doctor: " + nombre + " " + apellido + " es: " + especialidad);
        oldEspecialidad = getEspecialidad();
        especialidad = valorEspecialidad;
        System.out.println ("Ha cambiado la especialidad del doctor: " + nombre + " " + apellido + " De: " +oldEspecialidad + "  A: " + especialidad);
    }
   
    // metodos para establecer los valores de los atributos
    public String getNombre () {return nombre;}
    public String getApellido () {return apellido;}
    public int getEdad () {return edad;}
    public boolean getCasado () {return casado;}
    public String getNumeroDocIdentidad () {return numeroDocIdentidad;}
    public String getEspecialidad (){return especialidad;}
}

muchas Gracias..

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 imprimir por consola System.out.println java
« Respuesta #5 en: 09 de Septiembre 2014, 23:10 »
Hola Beginer, el código está bien. Unicamente hay una cosa que no lo está: no debes tener un atributo especialidad y otro oldEspecialidad a no ser que tengas necesidades específicas para hacerlo, y el ejercicio no dice nada de esto.

Para recuperar un atributo de la clase no te hace falta usar getEspecialidad();

Puedes hacerlo simplemente escribiendo especialidad

El método setEspecialidad podrías dejarlo así:

    public void setEspecialidad (String valorEspecialidad){
        System.out.println ("La especialidad del doctor: " + nombre + " " + apellido + " es: " + especialidad);
        System.out.println ("Ha cambiado la especialidad del doctor: " + nombre + " " + apellido + " De: " +especialidad + "  A: " + valorEspecialidad);
        especialidad = valorEspecialidad;
    }


En resumen:

- Eliminar el atributo oldEspecialidad por no ser necesario

- Modificar el método setEspecialidad, no es necesario hacer uso de oldEspecialidad

Saludos
Responsable de departamento de producción aprenderaprogramar.com

Beginer

  • Sin experiencia
  • *
  • Mensajes: 9
    • Ver Perfil
    • CENTRAL COOPERATIVA NACIONAL LTDA. "CREDICOOP"
Re:Ejercicio CU00632B imprimir por consola System.out.println java
« Respuesta #6 en: 10 de Septiembre 2014, 14:30 »
Excelente.. muchas gracias por la corrección.
Sólo quería imprimir la antigua y la nueva especialidad.
Gracias.. ;)

Guille

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:Ejercicio CU00632B imprimir por consola System.out.println java
« Respuesta #7 en: 27 de Septiembre 2014, 17:22 »
Saludos,

Me le pueden echar un vistazo ha este ejercicio.. funciona pero no supe como sacar el
Medico.nombre o .especialidad.
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 {

    private String nombre, apellidos,Id, especialidad;
    private int edad;
    private boolean casado;
   // private boolean cambio;

    public Medico() {
        nombre= "not asign yet";
        apellidos = "not asign yet";
        edad= 16;
        casado=false;
        Id="not asign yet";
        especialidad="not asign yet";
       // cambio=false; este era para definir un cambio en la especialialidad pero no pude
    }

    //Asignar datos a los objetos

    //Setters
    public void setNombre(String suNombre){

        nombre=suNombre;

    }

    public void setApellidos(String susApellidos){

        apellidos=susApellidos;

    }

    public void setEdad(int suEdad){

        edad=suEdad;

    }

    public void setCasado(boolean udCasado){

        casado=udCasado;

    }

    public void setId(String suId){

        Id=suId;

    }

    public void setEspecialidad(String suEspecialidad){

        especialidad=suEspecialidad;
        System.out.println( "Ha cambiado la especialidad del médico de nombre " + nombre + " La nueva especialidad es " + especialidad);

    }
    //Getters para sacar informacion
   

    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;

    }

    /*public void cambioDeEspecialidad.....no supe como hacerlo queria poner una condicion dentro de "public void setEspecialidad" para cuando cambiara
     * la especialidad asignar a cambio= true y poner el mensaje despues.
     */
« Última modificación: 27 de Septiembre 2014, 17:40 por Guille »

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicio CU00632B imprimir por consola System.out.println java
« Respuesta #8 en: 27 de Septiembre 2014, 18:55 »
 Hola Guille!

Primero te pongo en conocimiento: Cuando vallas a introducir código en el foro antes presiona el botón # (insertar código) que se encuentra arriba del campo de escritura, te saldrán unas etiquetas similares a estas: [cod][/cod]  y a continuación procede a pegar el código de tu clase en medio de esas etiquetas.
Ejemp: [cod]aquíElCódigoDeTuClase(){...}[/cod]

En cuanto a tu ejercicio, te comento los siguientes puntos a mejorar o corregir:

Constructor de la clase: Aquí has inicializado la variable int edad = 16; Lo correcto seria asignarle como valor inicial cero (0), así cada objeto medico que crees no nace con 16 años de edad, sino con 0 años de edad, y luego haciendo uso de su método set correspondiente, pues se le asigna un valor según sea necesario. También veo que has declarado una variable la cual no usas(private boolean cambio) por tanto, creo que no estaría de mas eliminarla o también ponerla como comentario, ya que tienes una duda o inquietud relacionada a esta variable ;).

En cuanto a tu comentario:
Citar
/*public void cambioDeEspecialidad.....no supe como hacerlo queria poner una condicion dentro de "public void setEspecialidad" para cuando cambiara  la especialidad asignar a cambio= true y poner el mensaje despues.
     */
Normalmente un método set no debería mostrar un mensaje por pantalla al ser invocado, lo correcto es que un método set solo cumpla su cometido el cual es realizar un procedimiento para asignar (o reasignar) un valor a una variable.

Tal vez te parezca confuso o contradictorio, cuando el propio enunciado del ejercicio pide lo siguiente:
Citar
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: …”.
pero mas adelante comprenderás el porque de las cosas (todo a su tiempo)

A modo de ejercicio se podría aceptar esta "mala practica", si analizas lo que querías hacer con la variable "cambio" lo has conseguido solo con incluir el mensaje:"Ha cambiado la especialidad del médico..." solo que esta es la forma directa y mas lógica de  expresar lo que quieres hacer, aunque entiendo perfectamente que es lo que quieres conseguir, esto lo dominaras cuando llegues a la entrega CU00636B que trata sobre estructuras condicionales (if con else vacio, if con else if, ect...) cuando domines esto veras cuan sencillo es lograr lo que "no has podido" lograr respecto a la variable "cambio"

Eso es todo de mi parte, y nada continua avanzando y así tu mismo encontraras las respuestas a muchas de las inquietudes que te surgen, pero que lo mas favorable en muchas ocasiones es que sean contestadas a su debido tiempo  ;)

Saludos!
« Última modificación: 27 de Septiembre 2014, 19:45 por Sniper »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

Guille

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:Ejercicio CU00632B imprimir por consola System.out.println java
« Respuesta #9 en: 28 de Septiembre 2014, 00:24 »
Muchas Gracias Sniper por contestar tan pronto!!!.

sigo adelante. mas adelante nos vemos!!!
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".