Autor Tema: Java cómo se deben inicializar los campos de una clase Ejercicio CU00632B curso  (Leído 3975 veces)

javalopez

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Buenas tardes, les envío el código que realicé, me gustaría si pueden verlo y opinar si está bien.

Gracias!

Código: [Seleccionar]
public class Medico{
    private String nombre;
    private String apellido;
    private int edad;
    private boolean casado;
    private String numDni;
    private String especialidad;

    // creamos el constructor
    public Medico(){
        nombre="Complete nombre...";
        apellido="Complete apellido...";
        edad=0;
        casado=false;
        numDni="Complete con DNI";
        especialidad="Complete especialidad...";
    }

    //Metodos para asignar valores
    public void setNombre (String valorNombre){
        nombre=valorNombre;
    }

    public void setApellido (String valorApellido){
        apellido=valorApellido;
    }

    public void setEdad (int valorEdad){
        edad=valorEdad;
    }

    public void setCasado (boolean valorCasado){
        casado=valorCasado;
        System.out.println("El estado civil del doctor " + apellido + ", " + nombre + " ha cambiado a casado= " + casado);
    }

    public void setDni (String valorDni){
        numDni=valorDni;
    }

    public void setEspecialidad (String valorEspecialidad){
        especialidad=valorEspecialidad;
        System.out.println("La especialidad del Doctor " + apellido + ", " + nombre + " ha cambiado a: " + especialidad);
    }

    //Metodos para obtener valores
    public String getNombre(){return nombre;}
    public String getApellido() {return apellido;}
    public int getEdad() {return edad;}
    public boolean getEstado(){return casado;}
    public String getnumDni(){return numDni;}
    public String getespecialidad(){return especialidad;}
}
« Última modificación: 28 de Mayo 2015, 08:14 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:Ejercicio CU00632B
« Respuesta #1 en: 28 de Mayo 2015, 01:23 »
Hola javalopez:

Tu ejercicio está muy bien, has organizado muy bien el código!
Sin embargo ten en cuenta dos observaciones:

Cuando en la consigna del ejercicio se pide que a los valores de los atributos se inicilicen a valores de defecto: está muy bien que al campo casado lo inicilices a false y al campo edad a 0. Pero deberías inicilizar los campos tipo String a "", es decir sin ninguna cadena de caracteres.
De esta manera, el constructor te quedaría:

Código: [Seleccionar]
public Medico(){
        nombre="";
        apellido="";
        edad=0;
        casado=false;
        numDni="";
        especialidad="";
}

Por último: ten en cuenta la convención de nombrar los métodos. Así como nombraste muy bien a los métodos getApellido(), getNombre(), getEdad(), getEstado(), deberías renombrar los dos métodos restantes como: getNumDni() y getEspecialidad().
De esta manera seguimos la convención de que las segundas, terceras, cuartas, etc. palabras del nombre del método comiencen con mayúsculas, logrando así una mejor legibilidad.

Sigue adelante, lo has hecho muy bien.

ronal.d87

  • Principiante
  • **
  • Mensajes: 72
    • Ver Perfil
Hola buena noche, este es mi codigo para el ejercicio propuesto

Código: [Seleccionar]
package ejemplo;

public class Medico {
    String nombre, apellido;
    String numeroDocumentoIdentidad;
    String especialidad;
    int edad;
    boolean casado;
    Medico med1 = new Medico();
    //metodo constructor
    public Medico(){
        nombre = "";
        apellido = "";
        numeroDocumentoIdentidad = "";
        especialidad = "";
        edad = 0;
        casado = false;
    }
    //metodos setters
    public void setNombreApellido(String insertarNombre, String insertarApellido){
        nombre = insertarNombre;
        System.out.println("Se ha cambiado el nombre anterior por"+nombre);
        apellido = insertarApellido;
        System.out.println("se ha cambiado el apellido anterior por"+apellido);       
    }
   
    public void setNumeroDocumento(String insertarNDI){
        numeroDocumentoIdentidad = insertarNDI;
        System.out.println("Se ha cambiado el numero de documento por"+numeroDocumentoIdentidad);
    }
   
    public void setEspecialidad(String insertarEspecialidad ){
        especialidad = insertarEspecialidad;
        System.out.println("se ha cambiado la especialidad por"+especialidad);
    }
   
    public void setEdad(int insertarEdad){
        edad = insertarEdad;
        System.out.println("Se ha cambiado la edad anterior"
                + " por la edad actual"+edad);
    }
   
    public void setEstadoCivl (boolean cambiarEstadoCivil){
        casado = cambiarEstadoCivil;
        System.out.println("Se ha cambiado el estado civil"+casado);
    }
       //metodos getters
    public String getNombre(){
        return nombre;               
    }
   
    public String getApellido(){
        return apellido;
    }
   
    public String getNumeroDocumento(){
        return numeroDocumentoIdentidad;
    }
   
    public String getEspecialidad(){
        return especialidad;
    }
   
    public int getEdad(){
        return edad;
    }
   
    public boolean getEstadoCivil(){
        return casado;
    }   
   
    /*public static void main(String Args []){
         
    }
    */
   
}
« Última modificación: 03 de Junio 2015, 09:03 por Alex Rodríguez »
Ronald Mosquera Mancilla

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Hola Ronald!

Veo que eres nuevo en el foro, así que me toca hacer las veces de anfitrión: Bienvenido!  :D

Antes de meternos directamente con el código que has publicado quisiera pedirte lo siguiente:
cuando quieras poner en los foros tu solución para un ejercicio crea un Nuevo Tema. De ese modo mantenemos más ordenado el foro evitando mezclar respuestas de personas distintas en un mismo hilo.
¿Cómo hacer para crear un Nuevo Tema?. Una vez que te logueas en el foro, entras en "Aprender a programar desde cero", y haz click en "NUEVO TEMA".
No olvides de escribir en el título del nuevo tema a qué ejercicio se refiere tu publicación.

En otro orden de cosas (pero también por cuestiones de orden), cuando publiques los códigos, asegúrate que el código vaya entre las etiquetas [ code ] [ /code ] .
Puedes leer este link https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se explica muy bien cómo realizar una publicación en el foro.

Ahora sí, vayamos al código que has enviado.
Al código lo veo muy bien, está bien estructurado y has tenido en cuenta la convención para nombrar los campos y los métodos, muy bien por ello!
El Constructor también está perfecto , incializando todos los campos de instancia a valor por defecto.

He de hacerte una observación con respecto a la declaración de los campos de instancia. Tu declaración de campos de instancia es:

Código: [Seleccionar]
public class Medico {
    String nombre, apellido;
    String numeroDocumentoIdentidad;
    String especialidad;
    int edad;
    boolean casado;
    Medico med1 = new Medico();

¿Por qué incluyes aquí la línea ?

Código: [Seleccionar]
Medico med1 = new Medico();
No deberías crear un objeto tipo Medico en esta parte del programa, no hay razón para ello. Te sugiero la elimines.

Y para finalizar, quisiera apuntarte algo respecto del método setNombreApellido de tu código

Código: [Seleccionar]
    public void setNombreApellido(String insertarNombre, String insertarApellido){
        nombre = insertarNombre;
        System.out.println("Se ha cambiado el nombre anterior por"+nombre);
        apellido = insertarApellido;
        System.out.println("se ha cambiado el apellido anterior por"+apellido);       
    }

No sería correcto tener un método set que modificara dos campos de instancia a la vez.
Así como luego defines un método tipo función getNombre() que devuelve el campo nombre del objeto, y un método tipo función getApellido() que devuelve el campo apellido del objeto, pues entonces es correcto tener un método setNombre y un método setApellido que asignen valores a sus respectivos campos de manera independiente.
Te sugiero que desdobles esa función en dos funciones tipo procedimiento: una llamada setNombre y la otra llamada setApellido.


 

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