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

Langage Java Discussion :

Problème de compréhension d'une classe


Sujet :

Langage Java

  1. #1
    Membre du Club Avatar de goldorax113
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 111
    Points : 64
    Points
    64
    Par défaut Problème de compréhension d'une classe
    bonsoir,

    dans la classe suivante est ce que vous trouvez comment un object Request peut il être crée avec comme attribut code : code = NONE ?

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package shiptrafficcontrol;
     
    public class Request {
        private Ship ship;
        private int code;
        public static final int LEAVE=0, DOCK=1, SET_SAIL=2, ARRIVE=3, NONE=4;
     
        public Request(java.util.Random random, Cluster seaShips, Cluster waitingShips, Cluster dockShips){
            int randCode;
            Cluster cluster;
     
            // pick a request with preference to docking from the queue
     
            if (!waitingShips.isEmpty() && random.nextFloat()>0.5){
                randCode = NONE;
                ship = null;
            } else {
                randCode = random.nextInt(3);
     
                // if there's no ship to go with the request
                // then make the request be arrive with a new ship
                // else pick a ship that could have made the request
     
                cluster = workOutClusterFor(randCode, seaShips, dockShips);
                if (cluster.isEmpty()) {
                    code = ARRIVE;
                    ship = new Ship();
                } else {
                    code = randCode;
                    ship = (Ship) cluster.pickOne(random);
                }
            }
        }
     
        public static Cluster workOutClusterFor(int randCode, Cluster seaShips, Cluster dockShips){
                    /* @ requires: randCode == LEAVE || randCode == DOCK || randCode == SET_SAIL;
                     * @ ensures: \return != null
                     */
     
            if (randCode == LEAVE || randCode == DOCK)
                return seaShips;
            else
                return dockShips;
        }
     
        public String toString(){
            String message;
            if (code==NONE)
                return "-- no message --";
            else {
                switch (code){
                    case LEAVE: message = "Can I leave the area?"; break;
                    case DOCK: message = "Can I dock?"; break;
                    case SET_SAIL: message = "Can I set sail from the dock?"; break;
                    case ARRIVE: message = "Can I enter the area?";  break;
                    default: message = ""; break;
                }
                return "<"+ship.toString()+"> :"+message;
            }
        }
     
        public Ship getShip(){
            return ship;
        }
     
        public int getCode(){
            return code;
        }
    }
    Parce que moi, je ne trouve pas

    Merci

  2. #2
    Membre régulier Avatar de Thor Tillas
    Inscrit en
    Octobre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 113
    Points : 90
    Points
    90
    Par défaut
    Question conne, mais est ce que tu peux modifier par après cet objet. Genre un setCode() ou est ce qu'il y a une autre méthode qui pourrait modifier le contenu de code et ainsi le mettre à NONE...

    Parce que dans ce cas là, le test serait utile pour vérifier si quelqu'un n'a pas modifier l'attribut en NONE et la création ne retournerais jamais de Request NONE.

    Pour ta question, j'ai pas eu beaucoup de temps pour étudier très précisement chaque ligne, mais c'est vrai que je ne vois pas non plus un NONE dans cette methode... je regarde plus en détail ce soir (ben quoi avec 8h de décalage il est 13:38 chez moi)

  3. #3
    Membre du Club Avatar de goldorax113
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 111
    Points : 64
    Points
    64
    Par défaut
    Salut,

    Non il n'y a pas de methode pour motifier cet object ensuite.

    Je pense que ce c'est pas possible de le creer avec comme attribut code : code = NONE, mais certaines personnes disent que oui....

    c'est pour cela que je viens demander de l'aide

    Merci pour ta réponse Thor Tillas

  4. #4
    Membre régulier Avatar de Thor Tillas
    Inscrit en
    Octobre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 113
    Points : 90
    Points
    90
    Par défaut
    Et ce que par hasard ca ne serait pas une simple erreur dans les première lignes :

    Remplacer randCode par code... parce que je vois pas l'utilité d'initialiser randCode puisqu'on sort du constructeur juste après et que la variable est déclarée localement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (!waitingShips.isEmpty() && random.nextFloat()>0.5){
                randCode = NONE;
                ship = null;
            }
    Encore une fois.... je fais ca pendant que mon C++ compile... donc j'ai pas beaucoup de temps à chaque fois

  5. #5
    Membre du Club Avatar de goldorax113
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 111
    Points : 64
    Points
    64
    Par défaut
    oui j'ai bien pensé a cela, mais bon je l'ai fais et puis mon prof m'a dit que je ne comprenais pas bien ce que faisait la classe... pourtant des que je remplace randCode par code et bah comme par miracle tout mes problèmes disparaissent...

    Merci

  6. #6
    Membre régulier Avatar de Thor Tillas
    Inscrit en
    Octobre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 113
    Points : 90
    Points
    90
    Par défaut
    De rien... pis n'oublie pas... c'est pas parce qu'un prof te dit quelque chose qu'il a forcément raison....

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

Discussions similaires

  1. Problème de chargement d'une classe
    Par Kuroro dans le forum Général Java
    Réponses: 4
    Dernier message: 28/11/2006, 16h36
  2. Réponses: 8
    Dernier message: 16/10/2006, 12h28
  3. problème d'accès dans une classe dérivée!
    Par chrono23 dans le forum C++
    Réponses: 47
    Dernier message: 10/10/2006, 11h22
  4. Problème de construction d'une classe
    Par AraBorLeg dans le forum Langage
    Réponses: 2
    Dernier message: 05/12/2005, 19h07
  5. Réponses: 12
    Dernier message: 01/07/2004, 11h03

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