Bonjour à tous,
J'ai le modèle suivant :
Livre étends Article
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 ArticleC { private int reference; private String designation; private double prix;
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;
et la classe Personne possède une liste oeuvresList qui indique les œuvres de cette personne
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;
Dans le main qui se trouve dans une autre classe j’instancie des objets Livre de cette façon :
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 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 : 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); }
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 : 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()));
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public ArrayList<ArticleC> getoeuvresList() { return oeuvresList; }
Comment faire si quelq'un a une idée Merci
Partager