Utilisation d'un attribut dans une autre classe

Fermé
Xenthys - 8 mars 2013 à 23:55
 Xenthys - 9 mars 2013 à 12:40
Bonjour,

En fait, je souhaite faire quelque chose qui est basique mais je ne m'y prends pas bien et ça ne marche pas du tout. J'ai un projet dans lequel j'ai créé plusieurs classes: il y a une classe 1 qui définit Carte et je crée un tableau public de Cartes[i] que j'initialise.

J'ai une deuxième classe paquet dans laquelle je veux distribuer un paquet de cartes en donnant les cartes du paquet qui vont aller dans les Cartes[i]. Le problème est que quand je fais cela, java me demande de déclarer Cartes[i] comme attribut et ça me gêne parce que j'ai l'impression de refaire le même travail et surtout, j'ai l'impression que les Cartes[i] de la classe Paquet ne sont pas celles de la classe Carte. Le pire est que je vais redevoir utiliser ces objets dans une troisième classe, la classe principale.

Que dois-je faire?

Merci beaucoup

3 réponses

totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 200
9 mars 2013 à 00:01
tu as utilisé les setters ?
0
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
9 mars 2013 à 08:04
Pour ce genre de problèmes il est toujours intéressant de nous communiquer la dernière version de ton code (au moins en partie).
Lors d'une discussion précédente (ici), tu avais une ArrayList<Carte> cartes; dans ta classe Paquet donc on peux faire p.cartes.get(i) pour récupérer la carte i du paquet p.
0
Ah, je viens de comprendre grâce à ce que tu as écrit. Quand on crée une classe Carte par exemple et qu'on construit un ensemble de cartes Cartes[][] et qu'on fait une classe Paquet où on distribue les cartes du paquet dans les boutons cartes Cartes[][] définis dans la classe carte, il faut utiliser comme attribut C=new Carte() puis faire C.Cartes[][] pour montrer que Cartes[][] dans Paquet est le même que dans la classe Cartes. Un peu comme tu as fait pour paquet p, où p.cartes montre que la ArrayList cartes est celle définie dans Paquet. C'est bien ça?

Par contre, comme le totodunet, java me demande d'utiliser des setters mais je n'en ai jamais entendu parler. À quoi ça sert?
0
En fait, c'est parce que j'avais rajouté un static aux Cartes[][] et qu'il n'a pas apprécié. J'ai l'impression que ça marche mais si j'ai dit une bêtise ci-dessus, corrigez-moi.
0
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
9 mars 2013 à 11:46
"il faut utiliser comme attribut C=new Carte() puis faire C.Cartes[][] pour montrer que Cartes[][] dans Paquet est le même que dans la classe Cartes"
Pas du tout, ou alors je n'ai rien compris (ou les deux...)

"ça me gêne parce que j'ai l'impression de refaire le même travail "
En effet,tu es en train de tourner en rond, car tout ça on l'a déjà traité il y a un mois !

Si tu veux un tableau de cartes tu fais : Carte[] tab = new Carte[52];
Mais attention, dans ta classe Paquet ce sont des ArrayList<Carte> que tu manipules, il faut donc rester cohérent... mais en aucun cas tu ne devrais avoir C=new Carte() et C.Cartes[][], ça ne veut rien dire.

"utiliser des setters mais je n'en ai jamais entendu parler. À quoi ça sert?"
Tu en as déjà parlé dans ta discussion précédente :
Il faudrait revoir tes cours de Java, ce sont les bases ! En plus c'était le titre de ta discussion précédente : Création d'une classe-liste et surcharge de get()
Un getteur (resp. un setteur) est une méthode qui permet de récupérer (resp.modifier) tout ou partie de la valeur d'un attribut.

Par exemple, quand on fait p.cartes.get(i), get(i) est un getteur pour l'ArrayList cartes, car ça nous permet d'accéder à sa ième valeur.
0
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
9 mars 2013 à 11:49
"En fait, c'est parce que j'avais rajouté un static aux Cartes[][]"
Là encore on en a déjà parlé il y a un mois (toujours dans la même discussion), tu devrais peut-être le relire pour te rafraîchir les idées !
Pour le static on en parlait dans les messages 5,6,7,et 8...
0
Merci, je vais vraiment tout revoir. J'ai beaucoup de mal avec les concepts et quand je crois que je les ai compris, je les utilise mal. Bref, je vais reprendre nos discussions précédentes. Merci pour ta patience! ;-)
0