[Java] Vector en attribut ?
Résolu/Fermé
péchou
-
25 mai 2008 à 18:37
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 26 mai 2008 à 20:23
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 26 mai 2008 à 20:23
A voir également:
- [Java] Vector en attribut ?
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel football - Télécharger - Jeux vidéo
- Java jre - Télécharger - Langages
- Jeux java itel 5360 ✓ - Forum Mobile
2 réponses
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
25 mai 2008 à 18:50
25 mai 2008 à 18:50
pourquoi ne fais-tu pas un tableau de CCuve ?
peut etre plus simple non ? sinon au niveau de la déclaration du vector es-tu sur de dire de quel type il est ?
moi j'aurais fait private Vector liste_cuves;
//dans le constructeur liste_cuves = new Vector();
vu qu'un vector prend des object en parametre, c'est générique et tu peux tout mettre dedans donc meme des CCuve, voila j'espere t'avoir aider
bon courage
tchû
peut etre plus simple non ? sinon au niveau de la déclaration du vector es-tu sur de dire de quel type il est ?
moi j'aurais fait private Vector liste_cuves;
//dans le constructeur liste_cuves = new Vector();
vu qu'un vector prend des object en parametre, c'est générique et tu peux tout mettre dedans donc meme des CCuve, voila j'espere t'avoir aider
bon courage
tchû
Merci pour tes précisions qui m'ont bien aidées !
Je voudrais savoir une chose : pourquoi mets-tu private ? Car dans mon cas, cela ne conviendra pas du tout ! Y a t'il un risque en laissant l'attribut vector public ?
Je voudrais savoir une chose : pourquoi mets-tu private ? Car dans mon cas, cela ne conviendra pas du tout ! Y a t'il un risque en laissant l'attribut vector public ?
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
328
26 mai 2008 à 20:23
26 mai 2008 à 20:23
Hello,
En général, il faut toujours mettre tes attributs en private, pour des raisons de sécurité.
Ainsi, la portée de tes attributs est limitée à ta classe, et ça te permet d'éviter que quelqu'un de l'extérieur de puisse les lire, ou encore pire, les modifier.
Evidemment, il arrive très souvent qu'on veuille étendre l'accessibilité (comme dans ton cas), et donc on utilise des getters et setters (mais en général, quand tu définis des getters et des setters, c'est que tu as un réel besoin fonctionnel derrière, et tu ne prends pas l'habitude de tout déclarer en public).
Le seul cas qui a, selon moi, du sens lors de la déclaration d'attribut en public est dans le cas d'attributs static final, car tu peux les utiliser sans instancier de classe (exemple : Math.PI). A part ce cas, il faut prendre l'habitude de déclarer en private.
En général, il faut toujours mettre tes attributs en private, pour des raisons de sécurité.
Ainsi, la portée de tes attributs est limitée à ta classe, et ça te permet d'éviter que quelqu'un de l'extérieur de puisse les lire, ou encore pire, les modifier.
Evidemment, il arrive très souvent qu'on veuille étendre l'accessibilité (comme dans ton cas), et donc on utilise des getters et setters (mais en général, quand tu définis des getters et des setters, c'est que tu as un réel besoin fonctionnel derrière, et tu ne prends pas l'habitude de tout déclarer en public).
Le seul cas qui a, selon moi, du sens lors de la déclaration d'attribut en public est dans le cas d'attributs static final, car tu peux les utiliser sans instancier de classe (exemple : Math.PI). A part ce cas, il faut prendre l'habitude de déclarer en private.
25 mai 2008 à 19:00
Si je fais un tableau, je peux pas accéder directement a mon objet non ? Alors qu'avec vector, oui (objet.vector.get ()...)
peut etre plus simple non ? sinon au niveau de la déclaration du vector es-tu sur de dire de quel type il est ?
moi j'aurais fait private Vector liste_cuves;
//dans le constructeur liste_cuves = new Vector();
Il n'y aura que des objets du type CCuve (Cuve_pl, Cuve_gpl, Cuve_vl), pourquoi tu fais private ? parce que je ne pourrais pas l'utiliser dans mon main, si ?
vu qu'un vector prend des object en parametre, c'est générique et tu peux tout mettre dedans donc meme des CCuve, voila j'espere t'avoir aider
Ma question est : si je mets un vector en attribut dans une classe A, et que je fais trois objets de cette classe, je peux avoir trois vecteurs différents ? qui n'auront pas le même contenu ? Et comment les initialiser ?
bon courage
tchû
25 mai 2008 à 20:53
Tu as un nullPointerException parce que ton vecteur n'est pas instancié.
Vector implémente l'interface List, donc il est préférable de manipuler ton objet liste_cuves (sans majuscule de préférence) à travers une interface, même si c'est un objet de type Vector.
Mettre la visibilité à private te permettra d'accéder à ton objet dans toute ta classe (et uniquement dans celle-ci : pas dans les classes héritant ta classe, pas par les classes du même package... rien du tout, juste ta classe).
Donc si ton main est défini dans ta classe, tu peux y accéder sans problème.
Ma question est : si je mets un vector en attribut dans une classe A, et que je fais trois objets de cette classe, je peux avoir trois vecteurs différents ? qui n'auront pas le même contenu ? Et comment les initialiser ?
La classe vecteur ne peut contenir que des objets de même type (utilisation de la généricité avec <>).
Si tu veux contenir des objets de types différents, il faut utiliser une superclasse commune de ces objets. Si tu n'en a pas défini toi-même, tu peux utiliser Object, car en Java, toutes les classes héritent de la classe Object: