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 :

Réécrire un programme utilisant la classe static avec d'autres lignes de code ?


Sujet :

avec Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 16
    Points : 3
    Points
    3
    Par défaut Réécrire un programme utilisant la classe static avec d'autres lignes de code ?
    Bonjour,

    Je jure toujours par le langage C mais quelqu'un a réussi à me convaincre de passer d'abord par la case Java.

    Je dois ré-écrire un programme utilisant la classe Static et le switch avec ce que je connais, mais je ne suis pas encore arrivée à ce stade.

    Quelqu'un saurait-il m'indiquer quelle est la finalité de la classe Static ainsi que celle du switch dans ces portions de programme ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     public class Course {
        // La liste des coureurs.
        static String coureur[];
        static int positionCoureur[];
        static int derniereArrivee = 0;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     // Si le n° de dossard est correct, on enregistre l'evenement.
            else {
                switch (evenement) {
                    // En cas d'arrivee on enregistre l'ordre d'arrivee.
                    case 2:
                        if (positionCoureur[dossardCoureur - 1] > 0) {
                            Terminal.ecrireStringln("Le coureur n° " + dossardCoureur
                                                    + " est déjà arrivé.");
                        }
    ainsi que
    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 static void realiserCourse() {
            int choix = 1;
     
            // Saisie des evenements de courses, y compris la fin de la course.
            while (choix != 5) {
                // Affichage des actions possibles.
                Terminal.sautDeLigne();
                Terminal.ecrireString ("Choisissez une action :\n"
                                       + "[1] Afficher classement\n"
                                       + "[2] Enregistrer une arrivée\n"
                                       + "[3] Enregistrer un abandon\n"
                                       + "[4] Enregistrer une disqualification\n"
                                       + "[5] Finir la course\n");
     
                // Realisation de l'action choisie.
                choix = Terminal.lireInt();
                switch (choix) {
                    case 1:
                    case 5:
                        listerCoureurs();
                        break;
                    case 2:
                    case 3:
                    case 4:
                        enregistrerEvenement(choix);
                        break;
                    default:
                        Terminal.ecrireStringln("Action " + choix + "inconnue");
                }
            }
        }
    Merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Avatar de olivier.pitton
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 355
    Points : 2 814
    Points
    2 814
    Par défaut
    Bonjour,

    Quand tu parles de classes static tu parles simplement du mot-clé static sur des variables / méthodes ou des classes static internes ?

    Au vu de ton code je dirai qu'il s'agit des méthodes / variables, bien que le principe soit le même avec les classes.

    Java et C n'utilisent pas le mot-clé static pour définir la même chose. En Java, il existe les "propriétés" (variables / méthodes) d'instance et de classe. Une variable static est partagée par toutes les instances de cette classe. Ainsi si tu écris cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Test {
     
      static public int cpt = 0;
     
      public Test() {
        cpt++;
      }
    }
    A chaque instanciation de la classe Test avec le mot-clé new, le compteur sera incrémenté. Donc si tu fais 3 fois new Test(), la variable cpt vaudra 3.

    En revanche, pour une variable d'instance, elle vaudra 1 pour les 3 instances.

    Pour ce qui est des méthodes, elles sont accessibles depuis la classe et non l'instance. Ainsi tu n'as pas besoin de créer une instance pour accéder à ta méthode. Par exemple avec ton code tu peux faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static void main(String[] args) {
      Course.realiserCourse();
    }
    au lieu de cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public static void main(String[] args) {
      new Course().realiserCourse();
    }
    Aussi, pourriez-vous m'indiquer quelle est la finalité de la classe Static ainsi que celle du switch dans ces portions de programme ?
    Puisque tout est static dans ton code (variables ...) tu n'as pas besoin de créer d'instances de Course. Toutes les méthodes peuvent être appelées comme je l'ai fais précédemment. De plus, comme les variables sont static, elles sont partagées pour toutes les instances. Ainsi si tu crées 3 objets Course, leurs variables static seront identiques.

    Dans ton code, tu n'utilises pas la notion d'orienté objet, tu es dans du pur code C où les méthodes (non static) peuvent être accessibles depuis n'importe quel fichier, et où les variables globales sont partagées par tout le monde. C'est identique, mais il faut ajouter 'Course.' devant.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 16
    Points : 3
    Points
    3
    Par défaut Réécrire un programme utilisant la classe static avec d'autres lignes de code ?
    Bonjour, Olivier Pitton.

    Je te remercie pour ta réponse.

    Il se trouve que le programme est sensé être du Java et non du C. Et je n'ai pas le droit d'utiliser un langage tourné objet.

    Je vais avoir l'air ridicule, mais qu'est-ce qu'une instance ?

    Je te remercie d'avance pour ta réponse et les autres pour celles qu'elles voudraient également me faire.

    Cordialement,

    Cal.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Ilsarae Cal Voir le message
    Et je n'ai pas le droit d'utiliser un langage tourné objet.
    Java est un langage tourné objet.

    Citation Envoyé par Ilsarae Cal Voir le message
    Je vais avoir l'air ridicule, mais qu'est-ce qu'une instance ?
    L'apprentissage de langages tournés Objet comme Java, C++ ou C#, ne peut pas se faire en quelques mots. Tu vas devoir prendre un bouquin, des cours, quelque chose de sérieux. Poser des questions ce sera après.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre émérite
    Avatar de olivier.pitton
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 355
    Points : 2 814
    Points
    2 814
    Par défaut
    Plop,

    Comme le dit thelvin, il va être assez compliqué de t'expliquer la notion d'orienté objet sur un forum. Je t'invite à aller regarder les cours présents sur developpez.com comme celui-ci.

    Expliquer les notions comme instanciation, ... à quelqu'un n'ayant jamais fait d'objet est plutôt difficile.

    Bon courage !

Discussions similaires

  1. utiliser la class FLVPlayerBack avec flashdevelop ?
    Par saradevelop dans le forum ActionScript 3
    Réponses: 11
    Dernier message: 08/03/2015, 12h35
  2. Réponses: 0
    Dernier message: 19/07/2014, 19h35
  3. Utiliser la classe map dans une autre classe
    Par Zaza91280 dans le forum Débuter
    Réponses: 3
    Dernier message: 04/06/2010, 08h34
  4. [RegEx] Utiliser une classe négative avec un mot entier
    Par gael dans le forum Langage
    Réponses: 15
    Dernier message: 08/07/2009, 14h53
  5. Réponses: 3
    Dernier message: 03/12/2006, 13h08

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