Bonjour à tous,
J'ai le modèle suivant :
Livre étends Article

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
public class ArticleC  
 { 
     private int reference; 
     private String designation; 
     private double prix;
La classe Livre possède un champ auteur de type classe Personne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
public class LivreC3 extends ArticleC 
 { 
     private String isbn; 
     private int nbPages; 
     private PersonneC auteur;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
public class PersonneC  
 { 
     private String nom; 
     private String prenom; 
     private LocalDate date_nais; 
     private ArrayList<ArticleC> oeuvresList;
et la classe Personne possède une liste oeuvresList qui indique les œuvres de cette personne

Dans le main qui se trouve dans une autre classe j’instancie des objets Livre de cette façon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
public class Exo4 {
public static void main(String[] args) {
		ArticleC a,a1;
		LivreC3 l;
		DvdC3 d;
        PersonneC p,p1;
 
l=new LivreC3();
        l.setReference(001);
        l.setDesignation("Le Pigeon0");
        l.setPrix(20.54);
        l.setIsbn("1245879215");
        l.setNbPages(254);
        l.setAuteur(p=new PersonneC("Zone3","Eric3",LocalDate.of(1983, 12,11),l.getReference(),l.getDesignation(),l.getPrix()));
Le constructeur de Personne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 public PersonneC(String n,String p,LocalDate d,int ref,String des,double prx) //ajoute ref et des dans liste des oeuvres
     { 
         this.nom=n; 
         this.prenom=p; 
         this.date_nais=d;
         ArticleC oeuvre;
         oeuvre=new ArticleC();
         oeuvre.setReference(ref); 
         oeuvre.setDesignation(des); 
         oeuvre.setPrix(prx);
         oeuvresList=new ArrayList<>();
         oeuvresList.add(oeuvre);           
 
     }
permet de créer un nouvel Auteur et d'ajouter une œuvre dans sa liste d’œuvre.
Dans la classe Livre j'ai un champ auteur de type classe Personne, la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
l.setAuteur(p=new PersonneC("Zone3","Eric3",LocalDate.of(1983, 12,11),l.getReference(),l.getDesignation(),l.getPrix()));
dans le main permet d'associer un nom d'auteur pour un Livre, la fonction setAuteur se décline comme ça dans la classe Livre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
public void setAuteur(PersonneC auteur) { 
        	              this.auteur = auteur; 
        	             ArrayList<ArticleC> lst; 
        	             lst=auteur.getoeuvresList();
        	          if (!lst.contains(this)) 
        	            { 
        	                lst.add(this); 
        	            } 
        	        }
si l'oeuvre crée n'est pas connue dans la liste des oeuvres de cette personne l'oeuvre est rajoutée dans la liste; c'est la fonction getoeuvresList qui renvoit l'info :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
public ArrayList<ArticleC> getoeuvresList()  
     { 
       return oeuvresList; 
     }
LE problème que j'ai est que la valeur de lst se perd quand je reviens dans le main du coup l'oeuvre est toujours rajoutée.
Comment faire si quelq'un a une idée Merci