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

Java Discussion :

Comment déclarer cette variable


Sujet :

Java

  1. #1
    Membre averti Avatar de rabDev
    Homme Profil pro
    Ingénieur développement logiciels, Concepteur et développeur de JMerise
    Inscrit en
    Mars 2011
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels, Concepteur et développeur de JMerise

    Informations forums :
    Inscription : Mars 2011
    Messages : 106
    Points : 328
    Points
    328
    Par défaut Comment déclarer cette variable
    Bonjour à tous,
    Dans ma conception je suis confronté à un problème de ce genre.
    j'ai une classe 'Mere' et deux classes Filles 'Fille_1' et 'Fille_2'.
    dans la classe Mere j'ai une variable 'tab' qui est un tableau static.
    Nom : accessibilite.png
Affichages : 57
Taille : 1,6 Ko

    le problème :
    je veux avoir deux variables static aussi tab1 et tab2 dans les classes filles et ces deux variables vont contenir les valeurs de la variable tab de la classe Mere. La difficulté est quand je rajoute une valeur dans tab (variable de la classe Mere), cette valeur sera rajouter dans tab1 et tab2. A l’inverse si je rajoute une valeur dans tab1 ou tab2 elle sera visible (sera rajouté) que dans tab1 ou tab2.
    Exemple :
    tab = [1,2,3]
    tab1 = [1,2,3]
    tab2 = [1,2,3]
    si je rajoute 4 dans tab2 :
    tab = [1,2,3]
    tab1 = [1,2,3]
    tab2 = [1,2,3,4]
    et si je rajoute 5 dans tab : je veux que 5 soit visible dans tab1 et tab2
    tab = [1,2,3,5]
    tab1 = [1,2,3,5]
    tab2 = [1,2,3,4,5]

    comment dois je déclarer tab, tab1 et tab2 ? sachant qu’elle sont des variables static
    Bonne journée à tous

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    tu ne peux pas faire ça avec des tableaux, pas en java en tout cas.

    Déjà, qu'entends tu par ajouter une valeur à un tableau ?
    Un tableau en java à une taille fixe. Éventuellement, on peut le combiner avec un variable qui gère un curseur, mais tu ne pourras pas le faire grandir, sans le recréer. Autant utiliser une ArrayList, qui en fait fonctionne comme ça en interne

    Ensuite 2 tableaux ne partagent pas d'éléments...

    Impossible de gérer ça par simple déclaration de variables...

    Pour résoudre ce genre de problématique,
    je ferais une classe A, qui gère en interne une List : la variable tab de la classe mère serait de ce type.
    je ferais une classe B qui gère en interne une List et qui wrappe l'instance tab de la classe mère, et les variables tab1 et tab2 serait du type B

    A et B pourrait hériter de la même abstraction qui gèrerait la liste en interne et proposerait une méthode abstraite getValues(), dont l'implémentation retournerait la liste interne dans le cas de A, et la fusion avec unicité des valeurs des deux listes dans le cas de B (les deux listes = la liste dans B et la liste de l'instance wrappée, donc tab). Il faudra évidement ajouter à l'abstraction la méthode permettant d'ajouter une valeur
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je rajoute un truc: les champs / méthodes statique ne sont PAS hérités, il est donc impossible de les surcharger!

  4. #4
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 122
    Points : 327
    Points
    327
    Par défaut
    pour tab1 et tab2, tu declare un fonction

    public static tab1 addValeur(Type valeur);
    public static tab2 addValeur(Type valeur);

    et pour la mere;

    public static tab addValeur(Type valeur, fille tab1, fille tab2){
    //ajouter la valeur à la mere
    ---------
    //ajouter la valeur aux filles
    tab1.addValeur(valeur);
    tab2.addValeur(valeur);
    }

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par AASProni Voir le message
    pour tab1 et tab2, tu declare un fonction

    public static tab1 addValeur(Type valeur);
    public static tab2 addValeur(Type valeur);

    et pour la mere;

    public static tab addValeur(Type valeur, fille tab1, fille tab2){
    //ajouter la valeur à la mere
    ---------
    //ajouter la valeur aux filles
    tab1.addValeur(valeur);
    tab2.addValeur(valeur);
    }
    Salut,

    hum, il parle de déclaration de variables tableau et toi tu parles de méthodes (enfin fonction...)

    tes deux premières n'ont pas de corps, donc déjà problème syntaxique, ensuite c'est quoi le type de retour tab ?

    et dans la dernière, pareil, retour de type tab, mais pas de return.
    et puis déclarer dans la classe mère une méthode qui dépend de classe fille, c'est un peu contraignant comme modèle : toute classe devrait exister de manière indépendante des classes qui pourraient l'étendre
    S'il faut en plus passer les instances des classes à une méthode pour les modifier, c'est lourdingue.
    Sans parler du fait qu'il n'est demandé nulle part de pouvoir modifier le tableau des deux classes fille en un seul appel...

    c'est un peu n'importe quoi ta proposition
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Je rajoute un truc: les champs / méthodes statique ne sont PAS hérités, il est donc impossible de les surcharger!
    Oui. J'en avais pas parlé, parce que @rabDev nommait ses variables tab, tab1 et tab2, donc je supposais que ce n'était pas nécessaire.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 249
    Points : 349
    Points
    349
    Par défaut
    rabDev , je pense que la solution est de raisonner avec des méthodes, des listes et des unions

    Chacune de tes trois classes contient sa propre liste statique.
    Chacune de tes trois classes contient un getter pour obtenir la liste ; dans la classe mère ce getter renvoie simplement la liste, mais dans les classes filles elle renvoie l'union (liste fille + liste mère).

  8. #8
    Membre averti Avatar de rabDev
    Homme Profil pro
    Ingénieur développement logiciels, Concepteur et développeur de JMerise
    Inscrit en
    Mars 2011
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels, Concepteur et développeur de JMerise

    Informations forums :
    Inscription : Mars 2011
    Messages : 106
    Points : 328
    Points
    328
    Par défaut
    Bonjour à tous,

    c'est un problème de raisonnement et de conception.
    Merci pour toutes vos réponses.

    Bonne journée à tous

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2006, 02h56
  2. Comment déclarer une variable binaire?
    Par Pragmateek dans le forum C++
    Réponses: 12
    Dernier message: 22/03/2006, 17h35
  3. Réponses: 5
    Dernier message: 20/09/2005, 22h48

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