Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: umadara en 27 de Junio 2016, 18:52
-
Hola, esta es mi solución para el ejercicio planteado
/**
* Clase de medico.
* @author (umadara)
* @version (1.0)
*/
public class medico
{ //nombre de la clase
//atributos de la clase
public String nombre; //nombre del medico
public String apellidos; //apellidos del medico
public int edad; //edad del medico
public boolean casado; //casado o no
public String numeroDNI; //numero documento de identidad
public String especialidad; //tipo de especialidad
//constructor
public medico () {
nombre = "Iván";
apellidos = "Soldado";
edad = 30;
casado = true;
numeroDNI = "12345678";
especialidad = "anestesia";
} //fin del constructor
//metodos para establecer variables
//metodo nombre
public void setNombre (String valorNombre) {
nombre = valorNombre;
System.out.println ("el nombre del médico cambia a " + getNombre());
}
//metodo apellido
public void setApellidos (String valorApellidos) {
apellidos = valorApellidos;
System.out.println ("el apellido del médico " + getNombre() + " cambia a " + getApellidos());
}
//metodo edad
public void setEdad (int valorEdad) {
edad = valorEdad;
System.out.println ("la edad del médico " + getNombre() + " cambia a " + getEdad());
}
//metodo casado
public void setCasado (boolean valorCasado) {
casado = valorCasado;
System.out.println ("el estado matrimonial del médico " + getNombre() + " a cambiado a " + getCasado());
}
//metodo numero DNI
public void setNumeroDNI (String valorNumeroDNI) {
numeroDNI = valorNumeroDNI;
System.out.println ("el numero de DNI del médico " + getNombre() + " ha cambiado a " + getNumeroDNI());
}
//metodo especialidad
public void setEspecialidad (String valorEspecialidad) {
especialidad = valorEspecialidad;
System.out.println ("la especialidad del médico de nombre " + getNombre() + " ha cambiado a " + getEspecialidad());
}
//metodo obtener variables
//metodo nombre
public String getNombre () {return nombre; }
//metodo apellidos
public String getApellidos () {return apellidos; }
//metodo edad
public int getEdad () {return edad; }
//metodo casado
public boolean getCasado () {return casado; }
//metodo numero DNI
public String getNumeroDNI () {return numeroDNI; }
//metodo especialidad
public String getEspecialidad () {return especialidad; }
}
Decir que lo que no he conseguido hacer es sacar una frase coherente para la variante boleana ya que creo que en el curso todavía no hemos visto como afrontar esto todavía.
Un saludo.
-
Hola Umadara, cómo estás?
A mi entender me parece que el código es correcto, pero esperemos que lo confirme alguien con más conocimientos que yo ;)
Aprovecho para hacer una consulta, en los métodos para establecer los valores (set) llamar al un método get no es más "laborioso" que tomar la información directamente de la variable?
Intentando no ser tan confuso, llamar a una variable es directo para obtener la información mientras que llamar a un método implica ubicar el método, ocupar un espacio adicional de memoria y devolver el valor.
Si le pifio en mi apreciación disculpas pero estoy aprendiendo ;)
Saludos,
Edu.
-
El tema que no podes llamar a una variable directo si vas a instancia cuando crea un nuevo objeto desde el main primero tenes que crear el objeto para usar sus métodos.
Es decir cuando va a asignar un valor primero nombra al objeto que creaste y después el método set para agregar. No se si me entender.
-
Hola umadara: no te preocupes por la frase coherente pues efectivamente tienes que ir basándote en lo que se va explicando en el curso.
Sobre la consulta de Edudardo: Java tiene una filosofía basada en no permitir el acceso directo a los atributos de un objeto. Es cierto que dentro de la propia clase puedes acceder a sus atributos directamente, pero como ha indicado DRANXZ88 no podrás acceder cuando estés realizando desarrollos de programación más complejos. El origen de esta filosofía busca evitar "los líos" que se creaban en la programación tradicional cuando desde cualquier punto de un programa se podía tener acceso a variables y modificar su contenido (lo que creaba efectos colaterales y al final todo se podía convertir en un auténtico lío). Java intenta evitar este lío con una perspectiva de restringir los accesos a los datos y forzar a que se hagan a través de get y set. Incluso en Java podrías saltarte esto (hay formas de hacerlo) pero sería ir en contra de la filosofía de este tipo de programación. Más adelante podrás ver variantes y más opciones.
Saludos