IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

[Debutant][Collection] Création d'un vecteur de type d'une classe


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [Debutant][Collection] Création d'un vecteur de type d'une classe
    Bonjour à vous,

    voila mon problème:

    Je dois faire un projet sur un jeu de planche(Bantumi) pour ceux que ca interesse voici l'enoncé http://pittt.free.fr/docs/labosJava/projet2-2p.pdf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Damier{
            private Case [] cases;     //Le plateau du jeu
            ...
    }
     
    public class Case{
           private int nbGraines;      // Nombre de graines dans cette case
           ...
    }
    Moi ce que j'avais compris lors de la déclaration d'un tableau c'etais du genre int, double,string,... mais d'une classe la j'arrive pas a suivre.

    Et meme si c'étais de type de la classe, je vois pas comment l implementer...

    Merci pour ceux qui pris la peine de lire...

  2. #2
    Membre actif
    Inscrit en
    Avril 2004
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 238
    Points : 265
    Points
    265
    Par défaut
    Ton tableau cases te permet de stocker des objets de type Case, c'est tout.
    Comme un tableau de type int te perment de stocker des entiers.

    C'est juste une façon de stocker des objets (en l'occurence pour toi des Case).

    Apres si tu parcours ton tableau tu vas récupérer des objets Case et tu pourra travailler dessus (grâce au méthodes qu'il y aura dans ta classe Case).
    "Quand le sage montre la lune,
    L'idiot regarde le doigt."

  3. #3
    Membre actif
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Points : 233
    Points
    233
    Par défaut
    Ce qu'il faut savoir c'est que t'on vecteur c'est un tableau d'Object Donc tu peut i metre tous ce que tu veut pourvu que ce soit un Object (odonc tou sauf int double boolean char ...) et ce qui en herite.

    Aprés quand tu veu récupere tes objet tu doit savoir ce que c'est si tu veut utiliser ces methodes. Il faut donc que tu cast ton Object en Case ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Exemple :
    Case c = (Case)monVector.elementAt(36);
    Si grande est la faiblesse d'une âme, dont la raison est partie!
    Ne jamais embrouiller ni abasourdir par une foule d'images le génie intérieur qui réside au fonde de sa poitrine,...
    L'ambition est le rfuge de l'échec. "Oscar Wild"

  4. #4
    Membre actif
    Inscrit en
    Avril 2004
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 238
    Points : 265
    Points
    265
    Par défaut
    Fait attention quand tu fais ton post... dans le sujet il est marqué Vecteur d'objet, et dans le code que tu montre tu parles de tableau.
    Et ya une difference entre les deux : cComme le dit Tao dans un vecteur on peut pas mettre des int, double... ; par contre dans un tableau oui.

    Soit clair dans ce que tu demandes ou ce que tu veux faire.
    "Quand le sage montre la lune,
    L'idiot regarde le doigt."

  5. #5
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Une remarque importante:

    - une tableau est un objet java de longueur statique, c'est-à-dire que le nombre d'éléments qu'il peut contenir est fixe !!!

    - un Vector est un tableau dynamique (genre liste chainée ou autre), c'est à dire que sa longueur fixée initialement à 10 est variable et non statique.

    ceci implique qu'il est conseillé d'utiliser des Vector plutôt que des tableaux. En effet dans un tableau tu est obligé de fixer une longueur optimale et donc réserver un espace mémoire conséquent, avec un Vector cet allocation est minimale et réajustable à tout moment !!!

    De plus l'utilisation de tableaux est déconseillée car elle ne s'inscrit pas dans la philosophie de l'approche objet (tout objet) de Java.

    Finalement il est plutôt conseillé d'utiliser la classe ArrayList (non synchronisée, dans la cas où tu n'as pas d'accès concurrents bien sûr...) et donc moins gourmande en temps CPU.

    Pour plus d'informations consulter la référence sur l'API Collections chez sun...

    http://java.sun.com/j2se/1.3/docs/guide/collections/


  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Pour plus d'informations consulter la référence sur l'API Collections chez sun...
    ou en francais et simplifie

    http://faqjava.developpez.com/?page=langage_donnees

  7. #7
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Moi j'suis bilingue

  8. #8
    Membre actif
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Points : 233
    Points
    233
    Par défaut
    Tu parle le Java et le francais
    Si grande est la faiblesse d'une âme, dont la raison est partie!
    Ne jamais embrouiller ni abasourdir par une foule d'images le génie intérieur qui réside au fonde de sa poitrine,...
    L'ambition est le rfuge de l'échec. "Oscar Wild"

  9. #9
    Candidat au Club
    Inscrit en
    Avril 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    eh ben merci bcp a toi de ta réponse clair et précise

  10. #10
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Juste quand même pour dire sur l'histoire des tableaux et des vecteurs.

    Ce que a dit thibault, n'est pas entièrement vrai.
    Il faut faire attention à son utilisation.
    Si dans une application, le nombre d'objet que tu as, est fixe, il est préférable que tu utilises un tableau.
    Pourquoi, parce que la classe Vector, comme la classe ArrayList, ne font qu'utiliser un tableau, dont ils augmentent la taille au fur et à mesure.

    Par contre, pour les variables fixés initialement dans le Vecteurs comme dans les Array, il existe un constructeur qui permettent de changer la valeur par défaut de 10, ainsi que son incrémentation. Et oui l'objet Vector va simplement s'initialiser avec un tableau d'objet de taille 10 donc fixe aussi ;-). Et il va s'incrémenter en fonction du besoin de 10 par défaut. Mais pour çà il va passer par des System.arraycopy.

    Donc pour ce qui est de l'utilisation de Vector, ou de tableau d'objet cela dépend des données.
    Pour ce qui est de l'espace mémoire lors de l'instanciation d'un tableau, tant que celui ci n'est pas initialisé cela reste un objet null (pas le vector, même vide).

    Citation Envoyé par thibaut
    De plus l'utilisation de tableaux est déconseillée car elle ne s'inscrit pas dans la philosophie de l'approche objet (tout objet) de Java.
    Et quand à cette citation ... ???? Je ne comprends pas bien ?

    Pour ce qui est de l'utilisation de l'ArrayList, elle est effectivement préférable en cas d'accès non concurrents. ;-)

    Voili, voilou,
    8) 8)

    PS : Ce n'est pas une attaque personnelle, mais simplement une vérité. Je suis actuellement confronté à des problèmes d'optimisation, et là on fait les frais des ArrayList et Vector. Pratique, mais des fois trop compliqué (pas en utilisation, mais en code. Test multiple pour gérer tous les cas possibles et imaginables), si le besoin est restreint.[/quote][/code]

  11. #11
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Bon tu as raison certes. Les Vector masquent l'implémentation sous-jacente sous forme de tableau, mais au moins ils fournissent des méthodes pour ajouter, supprimer ou parcourir... Ils fournissent une classe Iterator o combien précieuse qui masque l'implémentation du parcours d'un tableau... Certes vas-tu me dire, tu peux créer une classe Iterator sur un tableau... oui, oui mais pourquoi re-inventer la roue...

    En d'autre termes moi je conseille les Vector et consor par soucis de lisibilité et de simplification de compréhension (il n'y à rien de plus difficile à lire qu'un bout de code avec des tableaux partout: moi j'ai précédemment debuggé un bout de prog où le mec utilisait des tableaux de caractères pour stocker des chaînes de caractères, et ben bonjour l'angoisse)...

    Certes après tu dois te débrouiller poiur gérer le polymorphisme de tes données de ton tableau...

  12. #12
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Tout à fait d'accord avec toi thibaut.
    Y a aucun soucis avec çà !
    C'était simplement pour dire que cela dépendait des cas. Je viens moi même de tomber sur le cas, il n'y a qu'un mois çà pour cause d'optimisation.
    Et dans ces cas là, on regarde partout où on peut grapiller quelques millisecondes..... Et oui c'est çà aussi l'optimisation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. 2 objets de même type dans une classe
    Par _R3nO_ dans le forum Hibernate
    Réponses: 2
    Dernier message: 28/02/2007, 16h12
  2. Identifier le type d'une classe
    Par oodini dans le forum C++
    Réponses: 4
    Dernier message: 20/02/2007, 15h25
  3. Trouver le Type d'une classe template dynamiquement ?
    Par Serge Iovleff dans le forum Langage
    Réponses: 3
    Dernier message: 23/09/2005, 16h48
  4. Réponses: 11
    Dernier message: 31/01/2005, 17h48
  5. Déterminer le type d'une class dérivée
    Par LDDL dans le forum MFC
    Réponses: 3
    Dernier message: 10/12/2004, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo