Utilisation d'un attribut dans une autre classe
Xenthys
-
Xenthys -
Xenthys -
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
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
A voir également:
- Utilisation d'un attribut dans une autre classe
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Dans le code de la page, modifiez la couleur de fond de la classe .pix. un code de 4 chiffres doit apparaître dans la grille. lequel ? - Forum Réseaux sociaux
- Family link temps d'utilisation ne fonctionne pas - Forum Contrôle parental
- Retrouver la liste des élèves d'une classe - Forum Discussions générales
3 réponses
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.
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.
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?
Par contre, comme le totodunet, java me demande d'utiliser des setters mais je n'en ai jamais entendu parler. À quoi ça sert?
"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.
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.