Heritage et Collections [RESOLU]

Heritage et Collections [RESOLU] - Java - Programmation

Marsh Posté le 16-10-2012 à 21:44:35    

Bonjour,
  j'ai un petit problème et j'aurais besoin des conseils avisés de la communauté  hardware.fr
 
je vous expose la situation:
 
j'ai Trois Classes:
Personne
Patient
Professionnel
 
Comme vous vous en doutez,
Patient et Professionnel héritent de la Classe Personne.
La classe Personne est Abstraite
 
j'ai une collection de Personne (ArrayList<Personne> ) contenant des Objets Patient et des Objets Professionnel.
 
le Probleme:
Après une déssérialisation, je recupere un Collection de personne,
et j'aimerais récupérer dans une ArrayList<Patient> tout les patients Contenu dans la ArrayList<Personne>
 
j'espère m'être exprimé a peut-près correctement. merci d'avance pour l'aide que vous pourrez m'apporter.
 
 
ps: voici l'extrait de code JAVA qui me pose problème:

Code :
  1. public Collection<PatientDTO> listerPatients() throws CabinetTechniqueException{
  2.  Collection<PatientDTO> listePatientDTO = new ArrayList<PatientDTO>();
  3.  Collection<Personne> listePersonne = new ArrayList<Personne>();
  4.  Collection<Patient> listePatient = new ArrayList<Patient>();
  5.  listePersonne = (ArrayList<Personne> )PersonneDAOFichier.findAllPersonne();
  6.  for (Personne unePersonne : listePersonne){
  7.   //ici le code qui permet de mettre les patients de listePersonne dans ListePatient
  8.   //merci de votre aide
  9.  }
  10.  //ici le code que j'ecrirais pour remplir la ListePatientDTO
  11.  return listePatientDTO;
  12. }


 
 
 
Edit : pour ceux que sa intéresserais( sait-on jamais chez les debutants comme moi), je poste la solution que j'ai trouvé :

Code :
  1. public Collection<PatientDTO> listerPatients() throws CabinetTechniqueException, HelperException{
  2.  Collection<PatientDTO> listePatientDTO = new ArrayList<PatientDTO>();
  3.  Collection<Personne> listePersonne = new ArrayList<Personne>();
  4.  Patient unPatient = new Patient();
  5.  listePersonne = (ArrayList<Personne> )PersonneDAOFichier.findAllPersonne();
  6.  for (Personne unePersonne : listePersonne){
  7.   unPatient = (Patient)unePersonne;
  8.   listePatientDTO.add(HelperPatient.toPatientDTO(unPatient));
  9.  }
  10.    return listePatientDTO;
  11. }


Message édité par veobryn le 16-10-2012 à 22:16:15
Reply

Marsh Posté le 16-10-2012 à 21:44:35   

Reply

Marsh Posté le 16-10-2012 à 22:36:05    

Bonjour !
 
Votre code paraît dangereux dans la mesure où votre cast de unePersonne en Patient peut échouer et renvoyer une exception ...
 
Il serait plus avisé de tester d'abord, puis ensuite ajouter, ce qui pourrait donner (aux erreurs de syntaxe près, je n'ai plus fait de Java depuis une éternité ... :) )
 

Code :
  1. listePersonne = (ArrayList<Personne> )PersonneDAOFichier.findAllPersonne();
  2. for (Personne unePersonne : listePersonne){
  3.   if (unePersonne instanceof Patient){
  4.    unPatient = (Patient) unePersonne;
  5.    listePatientDTO.add(HelperPatient.toPatientDTO(unPatient));
  6.   }
  7. }


 
 
Par ailleurs, pourquoi créer une instance de Patient dans la ligne "Patient unPatient = new Patient();" ?
 
Bonne continuation !
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed