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

avec Java Discussion :

mes objets n'évoluent pas comme ils le devraient


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 156
    Points : 102
    Points
    102
    Par défaut mes objets n'évoluent pas comme ils le devraient
    Salut à tous et à toutes et merci d'avance.
    je suis sur un exercice qui consiste à simuler un monde qui contient 2
    populations, une de fleurs noirs et une de fleurs blanches, chacun des 3
    disposant de caractéristiques propre(température, quantité de population)
    ainsi que la possibilité de déclencher un événement, qui influencerait la
    température ou le nombre de fleurs d'un type...
    j'ai donc pensé faire cela en une class monde, une class popnoir et une autre popblanc, ainsi qu'une class evenement qui extends toutes les 3 de la class monde.

    mon problème est que le monde seul peut exister mais pas les sous class
    et il n'y a qu'un seul monde pour les 3 sous class.
    j'ai essayé de faire de plusieurs façon mais à chaque fois j'obtiens une
    erreur ou un résultat non désiré.
    le main:
    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
    public class Main {
     
        public static void main(String[] args) {
            monde terre = new monde();
            populationblanc popblanc = new populationblanc();
            populationnoir popnoir = new populationnoir();
            terre.setPop(popblanc.getPopb()+popnoir.getPopn());
     
        //    for(int i = 0; i < 10; i ++){
                terre.setTemp((popblanc.getPopb()*(terre.getTemp()-1)+popnoir.getPopn()*(terre.getTemp()+1))/(popblanc.getPopb()+popnoir.getPopn()));
                System.out.println("température du monde: "+terre.getTemp());
                terre.setPop(popblanc.getPopb()+popnoir.getPopn());
                System.out.println("population total: "+terre.getPop());
                System.out.println("ratio blanc/noir: "+(popblanc.getPopb()*100/terre.getPop())+" / "+(popnoir.getPopn()*100/terre.getPop()));
                popblanc.reproduit();
                popblanc.meurt();
                popnoir.reproduit();
                popnoir.meurt();
        //    }
     
        }
     
    }
    les class

    monde:
    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
    public class monde {
        protected float temp=10;
        protected int limitpop = 15000;
        protected int pop;
     
        public monde() {
        }
        public float getTemp() {
            return temp;
        }
        public int getLimitpop() {
            return limitpop;
        }
        public int getPop() {
            return pop;
        }
        public void setPop(int pop) {
            this.pop = pop;
        }
        public void setTemp(float temp) {
            this.temp = temp;
        }   
    }
    popblanc:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    public class populationblanc extends monde{
        protected int popb = 5000;
        protected int tempideal = 12;
        protected int tempmaxsup = 20;
        protected int tempminsup = 5;
     
        public populationblanc() {
        }
        public int getPopb() {
            return popb;
        }
        public int getTempideal() {
            return tempideal;
        }
        public int getTempmaxsup() {
            return tempmaxsup;
        }
        public int getTempminsup() {
            return tempminsup;
        }
     
        public void setPopb(int pop) {
            this.popb = pop;
        }
     
        public void meurt(){
           if(super.getTemp()>getTempmaxsup() || super.getTemp()<getTempminsup()){
               setPopb(getPopb()/2);
           }else{
               setPopb((getPopb()*80)/100);
           }
        }
        public void reproduit () {
           float result = super.getTemp()-getTempideal();
           if(result<0){ result = result*(-1);}
           if(result>7){
               setPopb((getPopb()*105)/100);
           }else if(result>4){
               setPopb((getPopb()*11)/10);
           }else{
               setPopb((getPopb()*125)/100);
           }      
        }
    }
    popnoir et quasi identique à popblanc juste les valeurs des variables de class
    qui sont légèrement différentes.

    evenement est encore au début de sa construction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class evenement extends monde{
     
            protected String nomeve = "";
            protected String typeve = "";
            protected int valueve = 0;
     
            public void evenement(String nom, String type, int value){
                nomeve = nom;
                typeve = type;
                valueve = value;
            }
    }
    avec ceci le monde n'évolue pas alors que les population devrait évoluer.
    William RICHARD

    Développeur web et logiciel, à Troyes, Aube

  2. #2
    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
    remarques d'architecture

    -> popblanc et popnoir c'est la même chose avec des valeur différentes. Donc une seule classe instanciée deux fois devrais suffire, inutile de dupliquer du code
    -> pas de raison que popblanc/popnoir/evenement étende monde, ca n'a pas de sens. Mois être humaine je ne suis pas le monde, j'en fais juste partie


    par rapport à ton problème: quel résultat obtiens-tu vs quel résultat aurais-tu du obtenir.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 156
    Points : 102
    Points
    102
    Par défaut
    je me suis rendu compte de mon erreur de class inutile ce matin, en faisant un puissance 4 qui m'a été inspiré par une autre discussion.
    j'ai donc changé pour une seul class population (avec les 2 instances) qui n'extends plus de monde. et bizarrement ça fonctionne mieux!!lol
    bon je n'en suis pas encore au résultat final mais au moins j'ai avancé.
    merci pour le coup de main.
    William RICHARD

    Développeur web et logiciel, à Troyes, Aube

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

Discussions similaires

  1. Mes objets ne s'ajoutent pas à l'ArrayList comme prévu
    Par Alcooline dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 28/11/2010, 12h58
  2. Mes objets ne veulent pas se « ré-enfiler »
    Par Alcooline dans le forum Langage
    Réponses: 3
    Dernier message: 05/08/2010, 14h31
  3. Mes objets ne sont pas persistés
    Par JulienZ dans le forum JPA
    Réponses: 1
    Dernier message: 16/08/2009, 14h47
  4. Réponses: 1
    Dernier message: 01/08/2008, 09h34
  5. Réponses: 5
    Dernier message: 08/12/2005, 22h40

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