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 :

Utiliser une classe dans une autre


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 18
    Points
    18
    Par défaut Utiliser une classe dans une autre
    Bonjour,

    En fait, je refais l'exercice d'un cours que je n'ai pas tellement suivi .. hum.
    Je crois que cela sera plus parlant en utilisant mon exemple.

    Je dois faire un jeu de puissance 4 (sans interface graphique). Voici ma classe Jeton :

    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
     
    package puissance4;
     
    public class Jeton {
     
        private char couleur;
     
        public Jeton(char couleur) {
            if ((couleur !='R')&&(couleur!='J')&&(couleur!='.')){
                throw new IllegalArgumentException ("Jeton invalide");
             }
            else{
                this.couleur=couleur;
            }
         }
     
        public char getCouleur() {
            return couleur;
        }
     
        public void setCouleur(char couleur) {
            this.couleur = couleur;
        }
     
     
        public String toString(){
            return "Voici le jeton : "+couleur;
        }
    }
    Jusque la rien de compliqué. J'ai aussi un classe Grille, qui utilise ma classe Jeton. En effet, dans ce cas, une Grille est un tableau 2Dimensions contisituer de 6x7 jetons.

    Voici ce que j'ai écris :

    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
    package puissance4;
    
    public class Grille {
    
        Jeton [][] jeu = new Jeton [6][7];
    
        public Grille() {
            for (int i=0;i<6;i++){
                for (int j=0;i<7;j++){
                    jeu[i][j]= ???;
                }
            }
        
        }
    Et voila, je suis bloqué ici. En effet, je n'arrive pas à mettre un jeton ici. J'avais penser faire :

    Jeton.setCouleur('.');

    Mais j'ai une erreur comme quoi c'est un char, et qu'il attend un jeton.

    Alors, comment puis-je faire pour que ma Grille jeu soit remplie de Jeton ayant pour char '.' ?


    D'avance, merci

  2. #2
    Membre éprouvé
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Points : 1 042
    Points
    1 042
    Par défaut
    Salut
    Ton constructeur de Jeton prend un char en paramètre et pour créer un jeton tu dois appeler ce constructeur
    tu auras donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jeu[i][j]= new Jeton('.');
    Docteur en informatique
    Freelance R&D, Web
    Activité freelance : https://redinnov.fr
    Page perso : https://michel-dirix.com/

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Merci parfait

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Je continue sur ce post, histoire de ne pas gaspiller du topic.

    J'ai un autre problème, plutot bizar. Je copie mon code :

    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
    public class Jeton {
     
        private static char couleur;
     
        public Jeton(char couleur) {
            if ((couleur !='.')&&(couleur!='J')&&(couleur!='R')){
                throw new IllegalArgumentException ("Jeton invalide");
             }
            else{
                this.couleur=couleur;
            }
         }
     
        public static char getCouleur() {
            return couleur;
        }
     
        public void setCouleur(char couleur) {
            this.couleur = couleur;
        }
     
     
        public static void Affiche(Jeton j){
            System.out.println(j.getCouleur());
        }
     
     
     
    }
    Et la classe Grille :

    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 Grille {
     
        Jeton [][] jeu = new Jeton [6][7];
     
        public Grille() {
            for (int i=0;i<6;i++){
                for (int j=0;j<7;j++){
                    jeu[i][j]= new Jeton('.');
                }
            }
     
        }
     
        public Jeton[][] getJeu() {
            return jeu;
        }
     
        public void setJeu(Jeton[][] jeu) {
            this.jeu = jeu;
        }
     
        public static void Affiche (){
            for (int i=0;i<6;i++){
                for (int j=0;j<7;j++){
                    System.out.print(Jeton.getCouleur()+" ");
                }
                System.out.println("");
            }
        }
     
    }
    Si je tape ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Jeton monjeton = new Jeton('R');
            Jeton.Affiche(monjeton);
    Il m'affiche un '.' et non un 'R' . A quoi est-ce du? Comment puis-je rectifier cela?

    Merci

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Points : 29
    Points
    29
    Par défaut
    Lis ton cours sur les variables de classe et d'instance.

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par weautus Voir le message
    Si je tape ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Jeton monjeton = new Jeton('R');
            Jeton.Affiche(monjeton);
    Il m'affiche un '.' et non un 'R' . A quoi est-ce du? Comment puis-je rectifier cela?
    Selon le code il affiche bien 'R' !
    Dans un main tu écris les deux lignes que a mis et tu verra ça fonctionne.

    Donne plutôt le code tel que tu l'a écris, et on pourra te dire quel est le problème.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    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
    public class Jeton {
     
        private static char couleur;
     
        public Jeton(char couleur) {
            if ((couleur !='.')&&(couleur!='J')&&(couleur!='R')){
                throw new IllegalArgumentException ("Jeton invalide");
             }
            else{
                this.couleur=couleur;
            }
         }
     
        public static char getCouleur() {
            return couleur;
        }
     
        public void setCouleur(char couleur) {
            this.couleur = couleur;
        }
     
     
        public static void Affiche(Jeton j){
            System.out.println(j.getCouleur());
        }
     
     
     
    }
    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
    public class Grille {
     
        Jeton [][] jeu = new Jeton [6][7];
     
        public Grille() {
            for (int i=0;i<6;i++){
                for (int j=0;j<7;j++){
                    jeu[i][j]= new Jeton('.');
                }
            }
     
        }
     
        public Jeton[][] getJeu() {
            return jeu;
        }
     
        public void setJeu(Jeton[][] jeu) {
            this.jeu = jeu;
        }
     
        public static void Affiche (){
            for (int i=0;i<6;i++){
                for (int j=0;j<7;j++){
                    System.out.print(Jeton.getCouleur()+" ");
                }
                System.out.println("");
            }
        }
    /*    public void add (Jeton j, int colonne){
            int i = 5;
            Jeton test = new Jeton ('.');
            while ((i>=0)||(jeu[i][colonne]!=test)){
                i=i-1;
            }
            if(i==-1){
                System.out.println("Colonne pleine, choississez une autre !");
            }
            else{
                i++;
                System.out.println("Votre pion a bien été placé en ligne "+i+" et colonne "+colonne);
            }
           }
    */
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Main {
     
     
        public static void main(String[] args) {
            Jeton monjeton = new Jeton('R');
            Grille jeu = new Grille ();
            Jeton.Affiche(monjeton);
            jeu.Affiche();
           // jeu.add(monjeton, 3);
        }
     
    }
    Et voila ce qu'il m'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    run:
    .
    . . . . . . . 
    . . . . . . . 
    . . . . . . . 
    . . . . . . . 
    . . . . . . . 
    . . . . . . . 
    GÉNÉRATION TERMINÉE (durée totale* 0 secondes)

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    private static char couleur;

    sans le static ça donne quoi ?

  9. #9
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    il ne faut pas mettre du static partout comme ca !

    Ta classe jeton est a revoir !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    a oui j'ai même pas fini de lire mais en fait il y a plein de static qui font que ça ne marche pas

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Si j'enlève les statics, ma méthode affiche de Grille ne fonctionne plus.

  12. #12
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    La méthode affiche de grille, c'est à revoir aussi !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Ok j'ai trouvé. Il fallait bien retiré les static. J

    Alors question la dessus, quand utilisé correctement un static ? (Que je note cela quelque part pour ne plus faire n'importe quoi).

  14. #14
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    le main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		Jeton monjeton = new Jeton('R');
    		monjeton.Affiche();
    		Grille jeu = new Grille();
    		jeu.Affiche();
    	}
    ta grille :
    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
     
    public class Grille {
     
    	Jeton[][] jeu = new Jeton[6][7];
     
    	public Grille() {
    		for (int i = 0; i < 6; i++) {
    			for (int j = 0; j < 7; j++) {
    				jeu[i][j] = new Jeton('.');
    			}
    		}
     
    	}
     
    	public Jeton[][] getJeu() {
    		return jeu;
    	}
     
    	public void setJeu(Jeton[][] jeu) {
    		this.jeu = jeu;
    	}
     
    	public void Affiche() {
    		for (int i = 0; i < 6; i++) {
    			for (int j = 0; j < 7; j++) {
    				System.out.print(jeu[i][j].getCouleur() + " ");
    			}
    			System.out.println("");
    		}
    	}
     
    }
    le jeton :
    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
     
    public class Jeton {
     
    	private char couleur;
     
    	public Jeton(char couleur) {
    		if ((couleur != '.') && (couleur != 'J') && (couleur != 'R')) {
    			throw new IllegalArgumentException("Jeton invalide");
    		} else {
    			this.couleur = couleur;
    		}
    	}
     
    	public char getCouleur() {
    		return couleur;
    	}
     
    	public void setCouleur(char couleur) {
    		this.couleur = couleur;
    	}
     
    	public void Affiche() {
    		System.out.println(getCouleur());
    	}
     
    }
    maintenant relie bien tes cours car y a encore du boulo
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    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 weautus Voir le message
    Alors question la dessus, quand utilisé correctement un static ? (Que je note cela quelque part pour ne plus faire n'importe quoi).
    Pour les constantes et pour le public static void main(String[]).

    Les static sont utilisés pour les variables et méthodes de classe, c'est-à-dire que contrairement aux non-static, elles ne sont pas associées à une instance d'objet précise, mais à toute la classe.
    Au début, une telle chose ne t'intéresse presque pas. Ça sert à définir des constantes, et le main(). Tu verras plus tard quand tu auras besoin de faire des classes utilitaires, des factory statiques et autres choses de ce genre. Pour l'instant, la bonne façon de s'en servir, c'est les constantes et rien d'autre, car c'est totalement contradictoire avec la programmation objet.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/04/2011, 10h32
  2. utilisation d'une variable d'une class dans une autre class
    Par the watcher dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2010, 14h01
  3. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  5. utiliser les attribut d'une classe dans une autre classe
    Par kaissaoui dans le forum Langage
    Réponses: 11
    Dernier message: 18/07/2007, 15h13

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