Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/08/2012, 11:07
amadeo123
 
Fecha de Ingreso: diciembre-2011
Mensajes: 134
Antigüedad: 12 años, 10 meses
Puntos: 5
problema muy extraño con creación de objetos en Java.

Me estoy volviendo loco. Ya no se que más mirar ni donde buscar.

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
  1. package UsuariosHospital;
  2.  
  3. public class Paciente extends Persona {
  4.    
  5.     private String enfermedad;
  6.     private String tipoEnfermedad;
  7.     private String tratamiento;
  8.    
  9.    
  10.     public  Paciente (String nombre, String apellidos, String dni, String tfno, String direccion, String email , String enfermedad,
  11.             String tipoEnfermedad , String tratamiento)
  12.     {
  13.         super(nombre, apellidos, dni, tfno, direccion, email);
  14.        
  15.         setEnfermedad(enfermedad);
  16.         setTipoEnfermedad(tipoEnfermedad);
  17.         setMedicacion(tratamiento,tipoEnfermedad);
  18.        
  19.     }
  20.  
  21.    
  22.    
  23.     public void setEnfermedad (String enfermedad)
  24.     {
  25.         if (validarEnfermedad(enfermedad))
  26.             this.enfermedad = enfermedad;
  27.         else
  28.             this.enfermedad = "¡¡Enfermedad no valida!!";
  29.     }
  30.    
  31.     public void setTipoEnfermedad(String tipoEnfermedad)
  32.     {
  33.         if (validarTipoEnfermedad(tipoEnfermedad))
  34.             this.tipoEnfermedad = tipoEnfermedad;
  35.         else
  36.             this.tipoEnfermedad ="¡¡Tipo enfermedad no valida!!";
  37.     }
  38.    
  39.     // introducimos 2 valores al metodo validarMedicacion ya que nos hace falta conocer el tipo de enfermedad para poder medicar con criterio
  40.     public void setMedicacion (String tratamiento, String tipoEnfermedad)
  41.     {
  42.         if(validarTratamiento(tratamiento ,tipoEnfermedad)== 1)
  43.             this.tratamiento  = tratamiento;
  44.         else
  45.             this.tratamiento ="¡¡ Medicacion no valida !!";
  46.     }
  47.    
  48.     public String getEnfermedad ()
  49.     {
  50.         return this.enfermedad;
  51.     }
  52.    
  53.     public String getTipoEnfermedad ()
  54.     {
  55.         return this.tipoEnfermedad;
  56.     }
  57.    
  58.     public String getMedicacion()
  59.     {
  60.         return this.tratamiento;
  61.     }
  62.    
  63.     public String getPaciente()
  64.     {
  65.         return super.getPersona() + " \n"+ this.enfermedad + " "+ this.tipoEnfermedad +" " + this.tratamiento;
  66.     }
  67.    
  68.    
  69.     // metodos de la clase paciente
  70.     //--------------------------------------------------------------------------------------------------------------------------
  71.    
  72.     private Boolean validarEnfermedad (String enfermedad)
  73.     {
  74.         if (enfermedad.length() <= 2)
  75.             return false;
  76.         return true;
  77.     }
  78.    
  79.     private Boolean validarTipoEnfermedad (String tipoEnfermedad)
  80.     {
  81.         if(tipoEnfermedad =="A" || tipoEnfermedad =="a")
  82.             return true;
  83.         if(tipoEnfermedad =="B" || tipoEnfermedad =="b")
  84.             return true;
  85.         if(tipoEnfermedad =="C" || tipoEnfermedad =="c")
  86.             return true;
  87.         if(tipoEnfermedad =="D" || tipoEnfermedad =="d")
  88.             return true;
  89.        
  90.         return false;
  91.     }
  92.    
  93.     private int validarTratamiento (String tratamiento, String tipoEnfermedad)
  94.     {  
  95.         int result = 0;
  96.        
  97.        
  98.         if ((tipoEnfermedad == "A" || tipoEnfermedad == "a") && (tratamiento == "reposo" || tratamiento == "dieta blanda"))
  99.             result =1;
  100.         if ((tipoEnfermedad == "B" || tipoEnfermedad == "b") && (tratamiento == "aspirina" || tratamiento == "jarabe"))
  101.             result =1;
  102.         if ((tipoEnfermedad == "C" || tipoEnfermedad == "c") && (tratamiento == "calmantes" || tratamiento == "somniferos"))
  103.             result =1;
  104.         if ((tipoEnfermedad == "D" || tipoEnfermedad == "d") && tratamiento == "quirofano")
  105.             result =1;
  106.        
  107.         return  result ;
  108.     }
  109.    
  110. }



y como trabajo con la clase paciente en la ventana grafica

Código Javascript:
Ver original
  1. //creo la lista de pacientes
  2.         listaPacientes = new ArrayList<Paciente>();
  3.        
  4.         btnAnyadirPaciente = new Button(shell, SWT.NONE);
  5.         btnAnyadirPaciente.addSelectionListener(new SelectionAdapter() {
  6.             @Override
  7.             public void widgetSelected(SelectionEvent e) {
  8.                
  9.                 listaPacientes.add(new Paciente(textNombre.getText(), textApellidos.getText(),
  10.                         textDni.getText(), textTfno.getText(), textDireccion.getText(), textEmail.getText(),
  11.                         textEnfermedad.getText(),textTipoEnfermedad.getText(), textTratamiento.getText()));
  12.                 int coeficiente = 0;
  13.                
  14.                 lblVisorPacientes.setText(lblVisorPacientes.getText()+"\n" +listaPacientes.get(coeficiente).getPaciente());
  15.                 coeficiente ++;
  16.             }
  17.         });
  18.         btnAnyadirPaciente.setBounds(29, 312, 172, 25);
  19.         btnAnyadirPaciente.setText("A\u00F1adir paciente");