[Java] Vector en attribut ?
Résolu
péchou
-
Marco la baraque Messages postés 996 Date d'inscription Statut Contributeur Dernière intervention -
Marco la baraque Messages postés 996 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- [Java] Vector en attribut ?
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
2 réponses
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 ?
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.
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û
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: