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 :

notions de variables static


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut notions de variables static
    Bonjour,

    Voici le code d'une classe nommée "CARTE".
    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
     
     
    import java.io.*;
    import javax.swing.*;
    public class Carte {
     
    	int couleur;// couleur de la carte du jeu(carreau, pique,coeur,trèfle)
    	int figure;// figure de la carte tire de "As" à "Roi"
    	static String[]nomCouleur = {"pique", "coeur","carreau","trefle"};
    	static String[]nomFigure = {"AS","deux","trois","quatre","cinq","six","sept","huit","neuf","dix","valet","dame","roi"};
    		// tableau nomFigure initialisé de éAs" à "Roi"
     
    	Carte(int c, int f)
    	{
    		this.couleur = c;
    		this.figure = f;
     
    	}
    	public int getPoint(){
    		if(this.figure>=10)
    		{return 10;
    		} 
    		else
    		{
    			return this.figure +1;
    		}
    		}// fin de méthode getPoint qui permet de connaître le nombre de pont que rappoete chaque carte
     
    	public static Carte choisirCarte()
    	{
    		int c = (int) (Math.random()*4);
    		int f = (int) (Math.random()*13);
    		return new Carte(c,f);
     
    	}
     
     
    	public String afficherCarte()
    	{
    	 return (nomFigure[figure]+ " de " +nomCouleur[couleur]);	
    	}
     
    }// fin de classe Carte
    Pouvez vous répondre à ces questions concernant ce code :

    1-Que change le fait de déclarer les variables [] nomCouleur et []nomFigure en tant que variables statiques.

    Le seul endroit où la méthode affichercarte est appelée est la méthode
    afficher joueur de la classe joueur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public  void afficherjoueur(){
     
     
    		for(int i =0;i<=nbreTirage-1;i++)
    		{
    			this.texte_cartes_tirees=this.texte_cartes_tirees +" "+ tabCarte[i].afficherCarte(); ;
    				}// fin de for 
     
     
    		 this.texte_final_joueur = this.texte_final_joueur + "le joueur "+this.nom+ " a obtenu  "+ this.totalPoint + " points  avec les cartes  "+ this.texte_cartes_tirees;
     
     
    		}// fin de méthode afficherJoueur
    2-Si la méthode getPoint était déclarée private, pouvez vous me confirmer qu'elle ne pourrait pas être appelée en dehors de la classe carte

    Merci beaucoup de votre aide.
    Cordialement.

    Nathalie

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par harbonne Voir le message
    1-Que change le fait de déclarer les variables [] nomCouleur et []nomFigure en tant que variables statiques.
    Les variables statiques dépendent de la classe en général et non d'une instance de cette classe en particulier.
    Donc ici, tu auras une seule instance du tableau nomCouleur et une seule instance du tableau nomFigure (instanciées au moment de la première instanciation d'un objet Carte). Si tu modifies un de ces tableaux il sera modifié pour tous les objets Carte (cependant je doute qu'ils soient appelés à être modifiés ; tu pourrais donc même les déclarer final).
    A contrario, les champs couleur et figure ne sont pas statiques : leur valeur est propre à chaque Carte.

    Citation Envoyé par harbonne Voir le message
    2-Si la méthode getPoint était déclarée private, pouvez vous me confirmer qu'elle ne pourrait pas être appelée en dehors de la classe carte
    oui

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut variables statiques
    Je te remercie de ta réponse.
    Cependant, comme tu le dis dans ta réponse, peut on parler d'instanciation ou plutôt de création en mémoire des tableaux nomCouleur et nomFigure, puisqu'il ne s'agit pas de variables d'instance.
    Donc ici, tu auras une seule instance du tableau nomCouleur et une seule instance du tableau nomFigure (instanciées au moment de la première instanciation d'un objet Carte).
    Merci encore de ta réponse.

    Cordialement.

    Nathalie

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par harbonne Voir le message
    peut on parler d'instanciation ou plutôt de création en mémoire des tableaux nomCouleur et nomFigure, puisqu'il ne s'agit pas de variables d'instance
    Un tableau est un objet. Il peut donc (et doit, d'ailleurs ou sinon c'est un tableau null et ça ne sert à rien :p) être instancié. Instanciation = création en mémoire du tableau.
    Je ne comprends pas la question

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 171
    Par défaut
    non, tu peux instancier se que tu veux dans ta class, mais le mot satic indique que la variable declarer static n'appartient a une instance comme les autre, mais a la class, c'est a dire a tout les instance a la fois.

    par exemple si la valeur d'une variable static est changé par une instance quelconque, elle le sera pour tous les instances.

    c'est en fait une chause collectif entre tous les objets d'une class. tu avais rêson de mettre couleur de carte Static, car tous les cartes on l'une de ses couleur

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut variables statiques
    Bonjour et merci beaucoup de vos réponses.

    Pour ce qui est de la dernière réponse, peux tu me donner un exemple où une variable statique est changée depuis une instance d'une classe.
    Normalement une variable statique n'est pas accessible depuis une variable d'instance puisque c'est une variable de classe et pour y acceder on écrit Nomdeclasse.nom_variable_statique.

    Merci à vous de vos réponses.

    Cordialement.
    Nathalie

Discussions similaires

  1. [C++] Pb avec les variable static dans les classe
    Par quantik-revolution dans le forum C++
    Réponses: 3
    Dernier message: 03/03/2006, 18h40
  2. [C#] Variable static
    Par fremsoi dans le forum Windows Forms
    Réponses: 12
    Dernier message: 25/01/2006, 21h07
  3. [VB6]Initialiser une variable Static dans un évenement
    Par loverdose dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 20/01/2005, 14h57
  4. [héritage] héritage d'une variable static
    Par yaya44 dans le forum Langage
    Réponses: 14
    Dernier message: 29/09/2004, 13h36
  5. Variable static avec thread
    Par oxor3 dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 27/08/2004, 11h45

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