Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: toni_apr en 16 de Junio 2014, 16:09
-
Hola envío el ejercicio CU00633B
/**
* @author (Toni)
* @version (0)
* Atributos de la clase Medico...
* nombre, apellidos, edad, casado, numeroDNI y especialidad
*/
public class Medico {
String nombre;
String apellidos;
int edad;
boolean casado;
String numeroDNI;
String especialidad;
/**
* Constructor inicializador
*/
public Medico()
{
nombre = "DesConocido";
apellidos = "DesConocidos";
edad = 0;
casado = false;
numeroDNI = "DesConocido";
especialidad = "DesConocido";
}
//Métodos para establecer atributos
public void setNombre (String valorNombre) {
System.out.println ("El médico conocido por < " + nombre +
" > se ha cambiado el nombre por el de < " + valorNombre + " >.");
nombre = valorNombre;
}
public void setApellidos (String valorApellidos) {
apellidos = valorApellidos;
System.out.println ("Al médico de nombre < " + nombre +
" > le corresponden los apellidos < " + apellidos + " >.");
}
public void setEdad (int valorEdad) {
edad = valorEdad;
System.out.println ("Se hace saber que el médico < " + nombre + " " + apellidos +
" > tiene una edad de < " + edad + " > años.");
calculoParaMultiploEdad();
}
public void setCasado (boolean valorCasado) {
casado = valorCasado;
System.out.println ("Se nos ha comunicado que el médico < " + nombre + " " + apellidos +
" > está casado, y hemos de decir que eso es < " + casado + " >.");
}
public void setNumeroDNI (String valorNumeroDNI) {
numeroDNI = valorNumeroDNI;
System.out.println ("Terminados los procesos de verificación, certificamos que el DNI " +
"del médico < " + nombre + " " + apellidos + " > es: \n" + numeroDNI);
}
public void setEspecialidad(String valorEspecialidad){
especialidad = valorEspecialidad;
System.out.println("Ejectivamente, tras cotejar las titulaciones aportadas, " +
"aseguramos que el médico < " + nombre + " " + apellidos + " > tiene la especialidad de: < " +
especialidad + " >");
}
//Métodos para leer atributos
public String getNombre () { return nombre; }
public String getApellidos () { return apellidos; }
public int getEdad () { return edad; }
public boolean getCasado () { return casado; }
public String getNumeroDNI () { return numeroDNI; }
public String getEspecialidad () { return especialidad; }
//Años que faltan para tener una edad múltiplo de 5
public void calculoParaMultiploEdad () {
int tempEdad = edad;
int faltanAños = 0;
faltanAños = 5 - (tempEdad % 5);
System.out.println ("\tAtención. \nAl médico < " + nombre + " " + apellidos + " > \n" +
"Con especialidad en < " + especialidad + " > le faltan < " + faltanAños + " > años para que su edad sea múltiplo de 5.");
}
}
Y también el ejercicio CU00634B (evaluación de expresiones)
Dadas las variables de tipo int con valores A = 5, B = 3, C = -12 indicar si la evaluación de estas expresiones daría como resultado verdadero o falso:
EVALUACION EXPRESION
<True> a) A > 3
<True> b) A > C
<False> c) A < C
<False> d) B < C
<True> e) B != C
<False> f) A == 3
<True> g) A * B == 15
<False> h) A * B == -30
<True> i) C / B < A
<False> j) C / B == -10
<True> k) C / B == -4
<False> l) A + B + C == 5
<True> m) (A+B == 8) && (A-B == 2)
<True> n) (A+B == 8) || (A-B == 6)
<False> o) A > 3 && B > 3 && C < 3
<True> p) A > 3 && B >= 3 && C < -3
Saludos.
-
Lo veo todo bien! Salu2!!
-
Hola Sniper. Gracias por tu comentario.
Permíteme una pregunta.
Yo he probado el código y me funciona, supongo que tu has hecho lo mismo, o compruebas que las instrucciones están bien escritas.
En cuanto a la evaluación de las expresiones ¿Tienes una plantilla de respuestas o algo asi?
Dime algo Sniper. Saludos.
-
Hola Sniper. Gracias por tu comentario.
Permíteme una pregunta.
Yo he probado el código y me funciona, supongo que tu has hecho lo mismo, o compruebas que las instrucciones están bien escritas.
En cuanto a la evaluación de las expresiones ¿Tienes una plantilla de respuestas o algo asi?
Dime algo Sniper. Saludos.
No me fue necesaria una plantilla de respuesta para identificar si las expresiones están correctas o no, solo basta con dominar el tema y evaluar cada expresion una por una.
En mi primera respuesta solo evalué las expresiones y pase por alto verificar el código de tu clase Medico, para la cual tengo los siguientes comentarios:
El código compila sin errores y cumple su cometido con relación al ejercicio, no obstante hay (errores) si así se les podría llamar, los cuales el compilador java no reconoce como errores ni entra en disputa a la hora de compilar, para explicarme mejor un ejemplo seria este:
numeroDNI = "DesConocido";
en ves de numeroDNI el cual interpretado logicamente se podria interpretar como numeroDocumentoNumeroIdentidad deverias de usar numeroDI que aria referencia a numeroDocumentoIdentidad o abreviado en ingles IDN identificationDocumentNumber o cualquier otro nombre dentro de lo que cabe, que se relacione mas con lo que se quiere plantear, en numeroDNI haces reseña dos veces a la palabra numero.
En esta parte:
public void setNombre (String valorNombre) {
System.out.println ("El médico conocido por < " + nombre +
" > se ha cambiado el nombre por el de < " + valorNombre + " >.");
nombre = valorNombre;
}
el cotejo de el mensaje que devuelve el método al recibir una cambio sobre su valor por defecto, pareciera como si un usuario esta usando el programa para consultar información sobre el medico, cuando lo correcto es que el medico esta usando el programa para actualizar sus datos y el programa le indica en un mensaje de tiempo real acerca de cada cambio en especifico una ves realizado dicho cambio, podría ser una secretaria quien use el programa para actualizar los datos del doctor, el caso es que dicho mensaje debe estar orientado a quien se supone que este realizando los cambios y no a alguien que este solicitando el valor de los cambios ya pre establecidos. esto se nota mas en este fragmento de tu código:
public void setEdad (int valorEdad) {
edad = valorEdad;
System.out.println ("Se hace saber que el médico < " + nombre + " " + apellidos +
" > tiene una edad de < " + edad + " > años.");
calculoParaMultiploEdad();// este metodo dentro de este setter es imnecesario!!!
}
donde seria mas logico System.out.println
("ha cambiado la edad del médico < " + nombre + " " + apellidos +" > " + " su nueva edad es < " + edad + " > años.");
Estos (errores) que en lo personal para mi no son errores, sino variables y mensajes lógicamente mal expresados, no afectan en lo mas mínimo el buen funcionamiento del código, pero podría conllevar a confusiones tanto para el programador que puede ver el código (numeroDNI) como para el usuario que ínter actúa con el programa
("Se nos ha comunicado que el médico juan perez esta casado")
Espero que ayas captado la idea! salu2!!
-
Hola Sniper, gracias por tus comentarios detallados.
Tienes razón. Para evaluar las expresiones, si dominas el tema, basta con evaluar cada expresión y ver si está bien o no. Espero conseguir un dominio así en un futuro próximo.
En cuanto a tus comentarios sobre la clase Medico, he aquí mi punto de vista.
Lo del nombre de las variables <numeroDNI>, puede que no sea apropiado, pero ese detalle solo lo vemos tu y yo al ver el código. El usuario que ejecuta el programa, ignora estos detalles.
Por otro lado, si las salidas por consola, no son adecuadas, o no son las las esperadas, pues que quieres que te diga. Un programa como este, listo para ser usado, tendría un propósito: Que lo use el médico, o un administrador, o distintas personas. Habría que decidir bien que respuestas da el programa.
Para mí en este momento, el primer propósito era dar respuesta por consola de los cambios, naturalmente, lo he hecho a mi manera, me parecía demasiado seco poner:
System.out.println ("El nombre del médico es: " + nombre); .
Acepto que mis respuestas (las que da el programa) puedan dar lugar a error (nunca engaño).
Gracias por tu punto de vista. Yo, nunca habría llegado a esas conclusiones.
Sal U2