Autor Tema: qué cosas deben ser atributos de las clases Java cómo decidir propiedad CU00633B  (Leído 2536 veces)

Hquinn

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 23
    • Ver Perfil
Primer ejercicio con el que me lío...  Aquí lo dejo y si alguien tiene tiempo y ganas me dice que he hecho mal xD que será bastante, porque no me sale.

Luego seguiré investigando! Gracias!

Código: [Seleccionar]
//Esta clase representa a un médico
public class Medico{ //Nombre de la clase
   
    //primero declaramos los atributos
    private String nombre;
    private String apellido;
    private int edad;
    private boolean casado;
    private String numeroDNI;
    private String especialidad;
   
    //Constructor. Cuando se cree un objeto medico se ejecutará este código
    public Medico(){
     nombre = "";
     apellido = "";
     edad = 0;
     casado = false;
     numeroDNI = "";
     especialidad = "";
    } //Cierre del constructor
   
    //Método SETTER. Establece el nombre del médico
    public void setNombre (String valorNombre){
        nombre = valorNombre;
        System.out.println("Se ha cambiado el nombre del médico.  El nuevo nombre es: "+nombre);
    }
   
    //Método SETTER. Establece el apellido del médico
    public void setApellido (String valorApellido){
        apellido = valorApellido;
        System.out.println("Se ha cambiado el apellido del médico.  El nuevo apellido es: "+apellido);
    }
   
    //Método SETTER. Establece la edad del médico
    public void setEdad (int valorEdad){
        edad = valorEdad;
        System.out.println("Se ha cambiado la edad del médico.  La nueva edad es: "+edad);
    }
   
    //Método SETTER. Establece el estado civil del médico
    public void setCasado (boolean valorCasado){
        casado = valorCasado;
        System.out.println("Se ha cambiado el estado civil del médico.  El médico está casado: "+casado);
    }
   
    //Método SETTER. Establece el DNI del médico
    public void setNumeroDNI (String valorNumeroDNI){
        numeroDNI = valorNumeroDNI;
        System.out.println("Se ha cambiado el DNI del médico.  El nuevo DNI es: "+numeroDNI);
    }
   
    //Método SETTER. Establece la especialidad del médico
    public void setEspecialidad (String valorEspecialidad){
        especialidad = valorEspecialidad;
        System.out.println("Se ha cambiado la especialidad del médico.  La nueva especialidad es: "+especialidad);
    }
   
    //Método GETTER. Devuelve el nombre del médico
    public String getNombre(){
        return nombre;
    }
   
    //Método GETTER. Devuelve el nombre del apellido
    public String getApellido(){
        return apellido;
    }
   
    //Método GETTER. Devuelve la edad del médico
    public int getEdad(){
        return edad;
    }
   
    //Método GETTER. Devuelve el estado civil del médico
    public boolean getCasado(){
        return casado;
    }
   
    //Método GETTER. Devuelve el DNI del médico
    public String getNumeroDNI(){
        return numeroDNI;
    }
   
    //Método GETTER. Devuelve la especialidad del médico
    public String getEspecialidad(){
        return especialidad;
    }
}
« Última modificación: 23 de Noviembre 2015, 08:55 por Alex Rodríguez »

Hquinn

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 23
    • Ver Perfil
He conseguido que me salga el ejercicio pero creo que he hecho algo muy churro:

Código: [Seleccionar]
public class Medico{ //Esta clase representa un médico
    private String nombre;
    private String apellidos;
    private int edad;
    private boolean casado;
    private String numeroDocumentoIdentidad;
    private String especialidad;
    private int multiplo;
    private int resto;
    private int resultado;
   
   //Constructor.  Cuando se cree un objeto tipo Medico, se ejecutará este código
    public Medico(){
        nombre = "";
        apellidos = "";
        edad = 0;
        casado = false;
        numeroDocumentoIdentidad = "";
        especialidad = "";
        multiplo = 5;
        resto = 0;
        resultado = 0;
    }
   
    //Método SETTER. Establece el nombre del médico
    public void setNombre (String valorNombre){
        nombre = valorNombre;
    }
   
   
    //Método SETTER. Establece la edad del médico
    public void setEdad (int valorEdad){
        edad = valorEdad;
    }
   
    //Método SETTER. Establece la especialidad del médico
    public void setEspecialidad (String valorEspecialidad){
        especialidad = valorEspecialidad;
    }
       
    //Método SETTER. Establece el resto de la división
    /*public void setResto (int valorResto){
        valorResto = multiplo % edad;
        resto = valorResto;
    }*/
   
    //Método SETTER. Establece el resultado de los años restantes para que la edad del médico sea múltiplo de 5
    public void cualEs (String valorCualEs){
        System.out.println("El médico de nombre " + nombre + " con especialidad " + especialidad + " tendrá una edad múltiplo de 5 dentro de " + resultado + " años.");
    }
   
    //Método GETTER. Devuelve el nombre del médico
    public String getNombre(){
        return nombre;
    }
   
    //Método GETTER. Devuelve la edad del médico
    public int getEdad(){
        return edad;
    }
   
    //Método GETTER. Devuelve la especialidad del médico
    public String getEspecialidad(){
        return especialidad;
    }
   
    //Método GETTER. Devuelve el resto de la división entre la edad y el multiplo.
    public int getResto(){
        resto = edad%multiplo;
        return resto;
    }
   
    //Método GETTER. Devuelve el resultado de la resta entre el multiplo y el resto.
    public int getResultado(){
        resultado = multiplo-resto;
        return resultado;
    } 

}

Cuando le doy al método extraño ese que he hecho de cualEs, me da a elegir entre el nombre del médico y la especialidad, y le de al resultado que le de, me sale la respuesta bien.

A ver si alguien me dice que he hecho mal xD

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Hquinn

Te comento las cosas que tendrías que cambiar o mejorar:

Una clase representa algo, en este caso un médico, y un médico es caracterizado por sus atributos. Por ejemplo el nombre es un atributo, le podríamos preguntar al médico, ¿cuál es tu nombre? Sin embargo un médico no tiene un resto, no tiene sentido que le preguntemos ¿cuál es tu resto?

Todo lo que no tenga sentido que sean atributos no deben ser atributos (serán variables locales u otra cosa). En tu caso no tiene sentido que sean atributos multiplo, resto ni resultado.

Para orientarte en posibles soluciones a este ejercicio introduce el código CU00633B en el buscador del foro. En particular puedes orientarte por este hilo: https://www.aprenderaprogramar.com/foros/index.php?topic=2145.0 Revísalo y trata de comprender todo lo que hace para después plantear tú mismo la solución al ejercicio.

Si tienes dudas después de todo ello, consúltalas

Saludos

 

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