Estoy haciendo una especie de programa de gestión de un hospital para estudiar y he creado una clase Persona la cual es padre de la Clase Paciente y Empleado.
En la clase Persona he colocado los atributos nombre, dni, telefono etc . Todos ellos con sus metodos get y set, asi como algunos metodos de validacion (dni correcto, telefonio corecto, 2 apellidos ) que los llamo antes de definir los atributos del objeto ( o sea, antes de igualar this.x = x en el metodo set de cada atributo )
luego para trabajar con herencias, la clase paciente y la clase empleado tienen sus propios atributos con sus metodos get y set y sus metodos de validacion.
El problema viene en la clase paciente. He creado los atributos enfermedad, tipoEnfermedad y tratamiento. La idea era que solo existiesen 4 tipos de enfermedades, A B C Y D, y dependiendo de una enfermedad un tratamiento podria ser valido o no. Me explico, si la enfermedad es tipo A solo podrá ser valido reposo o dieta blanda, si es tipo B solo aspirina o jarabe ...
Las clases me funcionan bien, he creado un panel de pruebas y perfecto, me funcionan todos los metodos. El problema viene cuando en otra ventana pretendo crear objetos en tiempo real.
he creado unos text a los cuales les introduzco los parametros que deseo y tras pulsar un boton creo los objetos. pues los atributos heredados de persona se introducen perfectamente (o no, dependiendo de si son validos o no ), pero los de la clase paciente, solo se introduce bien el primero (enfermedad), y tipoEnfermedad y tratamiendo no se introducen bien.
La putada es que si borro el textTipoEnfermedad.getText() y añado "A " (o sea, borro el metodo del text donde recojo lo escrito por el usuario y le doy un valor fijo), si que me funciona bien.
¿ Alguien me ha entendido? ¿ Alguien tiene una mínima idea de que puede suceder?
os pongo la clase paciente
Código Javascript:
Ver original
package UsuariosHospital; public class Paciente extends Persona { private String enfermedad; private String tipoEnfermedad; private String tratamiento; public Paciente (String nombre, String apellidos, String dni, String tfno, String direccion, String email , String enfermedad, String tipoEnfermedad , String tratamiento) { super(nombre, apellidos, dni, tfno, direccion, email); setEnfermedad(enfermedad); setTipoEnfermedad(tipoEnfermedad); setMedicacion(tratamiento,tipoEnfermedad); } public void setEnfermedad (String enfermedad) { if (validarEnfermedad(enfermedad)) this.enfermedad = enfermedad; else this.enfermedad = "¡¡Enfermedad no valida!!"; } public void setTipoEnfermedad(String tipoEnfermedad) { if (validarTipoEnfermedad(tipoEnfermedad)) this.tipoEnfermedad = tipoEnfermedad; else this.tipoEnfermedad ="¡¡Tipo enfermedad no valida!!"; } // introducimos 2 valores al metodo validarMedicacion ya que nos hace falta conocer el tipo de enfermedad para poder medicar con criterio public void setMedicacion (String tratamiento, String tipoEnfermedad) { if(validarTratamiento(tratamiento ,tipoEnfermedad)== 1) this.tratamiento = tratamiento; else this.tratamiento ="¡¡ Medicacion no valida !!"; } public String getEnfermedad () { return this.enfermedad; } public String getTipoEnfermedad () { return this.tipoEnfermedad; } public String getMedicacion() { return this.tratamiento; } public String getPaciente() { return super.getPersona() + " \n"+ this.enfermedad + " "+ this.tipoEnfermedad +" " + this.tratamiento; } // metodos de la clase paciente //-------------------------------------------------------------------------------------------------------------------------- private Boolean validarEnfermedad (String enfermedad) { if (enfermedad.length() <= 2) return false; return true; } private Boolean validarTipoEnfermedad (String tipoEnfermedad) { if(tipoEnfermedad =="A" || tipoEnfermedad =="a") return true; if(tipoEnfermedad =="B" || tipoEnfermedad =="b") return true; if(tipoEnfermedad =="C" || tipoEnfermedad =="c") return true; if(tipoEnfermedad =="D" || tipoEnfermedad =="d") return true; return false; } private int validarTratamiento (String tratamiento, String tipoEnfermedad) { int result = 0; if ((tipoEnfermedad == "A" || tipoEnfermedad == "a") && (tratamiento == "reposo" || tratamiento == "dieta blanda")) result =1; if ((tipoEnfermedad == "B" || tipoEnfermedad == "b") && (tratamiento == "aspirina" || tratamiento == "jarabe")) result =1; if ((tipoEnfermedad == "C" || tipoEnfermedad == "c") && (tratamiento == "calmantes" || tratamiento == "somniferos")) result =1; if ((tipoEnfermedad == "D" || tipoEnfermedad == "d") && tratamiento == "quirofano") result =1; return result ; } }
y como trabajo con la clase paciente en la ventana grafica
Código Javascript:
Ver original
//creo la lista de pacientes listaPacientes = new ArrayList<Paciente>(); btnAnyadirPaciente = new Button(shell, SWT.NONE); btnAnyadirPaciente.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { listaPacientes.add(new Paciente(textNombre.getText(), textApellidos.getText(), textDni.getText(), textTfno.getText(), textDireccion.getText(), textEmail.getText(), textEnfermedad.getText(),textTipoEnfermedad.getText(), textTratamiento.getText())); int coeficiente = 0; lblVisorPacientes.setText(lblVisorPacientes.getText()+"\n" +listaPacientes.get(coeficiente).getPaciente()); coeficiente ++; } }); btnAnyadirPaciente.setBounds(29, 312, 172, 25); btnAnyadirPaciente.setText("A\u00F1adir paciente");