Bonjour à tous,
J'ai le modèle suivant :
Livre étends Article
La classe Livre possède un champ auteur de type classe Personne :Code:
1
2
3
4
5
6 public class ArticleC { private int reference; private String designation; private double prix;
Code:
1
2
3
4
5
6 public class LivreC3 extends ArticleC { private String isbn; private int nbPages; private PersonneC auteur;
et la classe Personne possède une liste oeuvresList qui indique les œuvres de cette personneCode:
1
2
3
4
5
6
7 public class PersonneC { private String nom; private String prenom; private LocalDate date_nais; private ArrayList<ArticleC> oeuvresList;
Dans le main qui se trouve dans une autre classe j’instancie des objets Livre de cette façon :
Le constructeur de Personne :Code:
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()));
permet de créer un nouvel Auteur et d'ajouter une œuvre dans sa liste d’œuvre.Code:
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); }
Dans la classe Livre j'ai un champ auteur de type classe Personne, la ligne
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:
1
2 l.setAuteur(p=new PersonneC("Zone3","Eric3",LocalDate.of(1983, 12,11),l.getReference(),l.getDesignation(),l.getPrix()));
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:
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); } }
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.Code:
1
2
3
4
5 public ArrayList<ArticleC> getoeuvresList() { return oeuvresList; }
Comment faire si quelq'un a une idée Merci