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 :

Java et structure POO


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 44
    Par défaut Java et structure POO
    Bonjour
    Je dois me tromper dans ma structure car je ne trouve pas la solution à mon problème de programmation Objet :
    voila, tres simplifié la structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class Animal {
     
    	public Cortex cortex = new Cortex();
     
    	public void main{
     
    			this.cortex.calorie.besoin.manger.go();
    	}
    }
     
    public class Cortex{
    	public Etats calorie = new Etats();
    	public Etats hydride  = new Etats();
    }
     
    public Class Etats{
    	public int valeur=0;
    	public Besoins besoin = new Besoin();
     
    }
     
    public Class Besoins{
    	public Actions manger = new Manger();
    }
     
    public class Manger extends Actions();
     
    		public void go(){
    			// méthode modifiant la variable valeur
    	}
    }
    Comment faire pour pouvoir utiliser et modifier ma variable valeur de l'Objet Etats ?

    Evidement la commande go est differente pour chaque Actions attribuées par le Cortex, ces actions modifiant les variables des différents Etats !!
    dois-je la passer par des variables globales ? mais alors on est plus dans de la POO !!

    merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Regarde ce tutoriel et surtout le paragraphe sur les accesseurs.

    A+.

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet, développeur .net
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet, développeur .net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Par défaut
    tu peux éventuellement passer ton état dans les constructeurs :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    public Class Etats{
    	public int valeur=0;
    	public Besoins besoin = new Besoins(this);
     
    }
     
    public Class Besoins{
     
     
    	public Actions manger;
     
    	public Besoins(Etats monEtat){
    		manger = new Manger(monEtat);
    	}
    }
     
    public class Manger extends Actions();
     
    		private Etats monEtat
     
    		public Manger(Etats monEtat){
    			super()
    			this.monEtat = monEtat;
    		}
     
     
    		public void go(){
    			// méthode modifiant la variable valeur
    	}
    }

    cela dit, n'ayant pas bien compris ce qu'était sensé faire ton programme, ce n'est peut être pas la solution la plus "propre".

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 44
    Par défaut
    Merci

    @ ElSpopo :
    oui mon scripte est très simplifié.
    le principe du programme est de "simuler" la vie d'une entité.

    Cette entité contient un Objet Etats qui est un ensemble d'états (Energie, eau, température etc..)
    Chaque état contient pleins d'attributs et de méthodes différentes d'un état à l'autre.(seuil de souffrance, sensation de faim, etc).
    L'une des méthodes renvoi un objet Besoin (besoin de MANGER si faim, SE_PROTEGER, COMBATTRE, SE REPRODUIRE etc...)

    Ce Besoin contient un Objet Action ( MANGE, BOIT, SE_REPRODUIT etc...)
    et cet Objet d'Action, contient toutes les methodes qui valide la faisabilité de l'action (Y a t il de la nourriture pour manger, un partenaire pour me reproduire, de l'eau, etc ...) ainsi que une Action Alternative (CHERCHER de L'EAU, un partenaire etc...). et Enfin toutes les Actions ont une methode go() qui effectue l'action en question... bien évidement cette Action peut modifier tous les attributs de l'ensemble d'états (eau energie température).

    L'entité lance sont action mais ne sais pas ce que l'action modifie.
    J'ai envoyé le message cette nuit et j'ai trouvé en dormant la même solution que toi, envoyer l'objet Etats dans la methode go(etats); go() peut acceder et modifier ce qu'elle veut, ensuite elle doit me renvoyer cet Etats que je copie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public Class Animal{
        public Etats etats = new Etats();
        public Actions action_en_cours = this.etats.getAction();
     
         // je fait l'action
         this.etats = action_en_cours.go(this.etats);
     
    }
    suis-je sur la bonne voie ?

    @ andry.aime
    merci pour ton lien, évidement la plupart des mes attributs et methodes sont protected et on des get_ et set_ mais la pour simplifier je ne l'ai pas mis, a quoi tu pensais quand tu m'as parlé d'eux ?

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    En mettant tes attributs en public, ils sont exposés dans tous le projet. Ce qui peut être dangereux car un développeur pourrait le modifier par inadvertance ou même volontairement pour détourner des fonctionnalités.
    Les accesseurs permettent la cohérence des données et simplifient le développement avec les IDE. Les accesseurs peuvent être générés par les IDE mais ne pense pas que tu perdras de temps pour les saisir.

    A+.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 44
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    En mettant tes attributs en public, ils sont exposés dans tous le projet. Ce qui peut être dangereux car un développeur pourrait le modifier par inadvertance ou même volontairement pour détourner des fonctionnalités.
    Les accesseurs permettent la cohérence des données et simplifient le développement avec les IDE. Les accesseurs peuvent être générés par les IDE mais ne pense pas que tu perdras de temps pour les saisir.

    A+.
    En faite ce que je voulais te dire, c'est que effectivement tous mes attributs sont déjà encapsulé et que c'est pour simplifier mon propos que je l'ai mis en public. tu as parfaitement raison !! mais même en étant public, mais méthode ne peuvent pas acceder aux attributs car j'avais la mauvaise structure.

  7. #7
    Membre confirmé
    Homme Profil pro
    Chef de projet, développeur .net
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet, développeur .net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Par défaut
    Citation Envoyé par sirius911 Voir le message
    L'entité lance sont action mais ne sais pas ce que l'action modifie.
    J'ai envoyé le message cette nuit et j'ai trouvé en dormant la même solution que toi, envoyer l'objet Etats dans la methode go(etats); go() peut acceder et modifier ce qu'elle veut, ensuite elle doit me renvoyer cet Etats que je copie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public Class Animal{
        public Etats etats = new Etats();
        public Actions action_en_cours = this.etats.getAction();
     
         // je fait l'action
         this.etats = action_en_cours.go(this.etats);
     
    }
    suis-je sur la bonne voie ?

    En procédant ainsi tu pourras bien modifier les valeurs comme tu le souhaite et tu devrais donc arriver à tes fins.

    Cela dit, je ne peu pas te garantir que ta structure soit la plus élégante.
    Au vu de ce que tu explique plus haut, je me demande si tu ne devrais pas essayer d'appliquer le pattern listener, vu que tu semble gérer des "événements" (le fait qu'un état change pouvant déclencher la création d'un besoin et donc d'une action ...).

Discussions similaires

  1. probléme avec ma structure POO
    Par piver2012 dans le forum Langage
    Réponses: 7
    Dernier message: 06/05/2013, 17h57
  2. [Débutant] POO(java) est identique à POO(vb.net) ?
    Par wikiele dans le forum VB.NET
    Réponses: 6
    Dernier message: 15/07/2011, 16h41
  3. Implémentation en java de structures de données
    Par wafiwafi dans le forum Général Java
    Réponses: 15
    Dernier message: 05/04/2011, 15h42
  4. JDSL (Java Data Structures Library)
    Par khayyam90 dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 30/12/2010, 16h56
  5. [débutant][Conception] Structure dynamique avec Java
    Par blaiseac dans le forum Général Java
    Réponses: 5
    Dernier message: 18/11/2004, 23h00

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