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

Java Discussion :

Classe Abstraite / Interface


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Points : 57
    Points
    57
    Par défaut Classe Abstraite / Interface
    Bonjour tout le monde !

    Juste une petite question de compréhension :
    Je suis pour le moment en train de développer un Stratego pour les cours en Java (oui, y'a bcp plus passionnant comme travail ...), et j'ai une petite question quant à l'organisation de mon code.

    J'ai fait une classe par pions, pions qui sont divisé en 2 catégories principales :
    Rouge et Bleus.
    Et chaque pions à sa propre image. (Quoi qu'il y'a parfois x colonels, y capitaine etc ...)

    Lors de la création du plateau, je dois placer les différents pions.
    La question est :

    Comment faire pour que je puisse appeler *1 seule* méthode qui placerait tout mes pions ?
    Je dois d'office instancier chaque type de pions, mais je ne vais pas faire pour chaque pions 1 constructeur spécifiant sa couleur, son image respective etc ... Et créer 1 par une chaque instance de pions ?!

    Je sens qu'il y'a une histoire de classe abstraite la dedans, mais je n'arrive pas à savoir comment l'appliquer ?

    Grand merci à ceux qui pourront me mettre sur la voie

    Ciao les amis !

  2. #2
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Il n'y a pas 2 catégories de pions. Il y en a une seule, qui a différentes caractéristiques : couleur, valeur, position, par exemple. Donc tu dois avoir une classe Pion, qui les encapsule, puis tu peux instancier un pion en disant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pion pion = new Pion (DEMINEUR, BLEU, 2, 5);
    par exemple, pas besoin de classe abstraite.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Points : 57
    Points
    57
    Par défaut
    Merci beaucoup de votre réponse !

    De fait, c'est 4000 * plus simple comme cela !

    Imaginons cependant que je souhaites créer un démnineur rouge, donc, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pion demineur = new Pion(demineur, rouge, 2, 1)
    Comme ferais-je pour instancier un objet démineur (de la classe démineur) ?

    Je ne peux pas faire un String démineur contenant la valeur démineur et faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new *String contenant la valeur démineur*
    ?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Demineur ici était vu comme un marker de type, pas comme une classe à passer.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public enum Couleur {ROUGE,BLEU}
    public enum Categorie {DEMINEUR,COLONEL,BOMBE, /*etc, je connais plus*/}
     
    et le constructeur:
     
    public Pion(Couleur couleur,Categorie categorie,int x, int y)
     
    et l'appel
    Pion p = new Pion (Couleur.ROUGE,Categorie.DEMINEUR,2,3);

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Points : 57
    Points
    57
    Par défaut
    Merci pour la réponse !

    En effet, je ne connaissais pas les enums.

    Une petite question par rapport à cela. J'ai donc créer les deux énumérations, l'une contenant le nom des pièces (maréchal, démineur etc ...) et l'autre contenant les couleurs.

    Est-il possible de lier mes classes Démineurs, Maréchal etc ... avec les énumérations ?

    En d'autres termes, comment créer des instances de mes classes Demineurs, Géneral etc ... A à partir des enums ?

    J'ai fait quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public enum CategoriePions {	
    	BOMBE(new JButton());  
    //	CAPITAINE, 
    //	etc ... 
     
    private CategoriePions(JButton b){
    		b.setIcon(new ImageIcon(getClass().getClassLoader().getResource("PionsBleus/10.gif")));
    	}
    }
    Afin de tester le fonctionemment du programme.

    J'appel le constructeur de pions dans la classe chargée de créer une Jframe afin de créer un pions, qui est un JButton auquel je rajoute l'image settée dans CategoriePion : (le tout est dans 2 boucles for)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabButtons[c][l] = new Pions(CategoriePions.BOMBE, c, l);
    Mais je n'obtiens pas de set de l'image ...

    Pourquoi ?

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Oulà, y a du mélange. Ca ne doit pas être le rôle de l'enum d'aller initialiser ton JButton. Et certainement pas dans son constructeur (les enume sont en quelque sorte des singletons).

    Ta logique dois plutot être du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public Pion(Couleur couleur,Categorie categorie,int x, int y){
       this.button = new JButton(getClass().getClassLoader().getResource("Pions"+couleur.name"+"/"+categorie.name()"+.gif");
    }
    Et d'avoir une image appelée du genre PionsBLEU/DEMINEUR.gif

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Points : 57
    Points
    57
    Par défaut
    Oui tout à fait,
    C'est ce que je viens de faire et tout marche nickel
    C'est parfait les enums !

    Tout grand merci pour votre aide ! (vos thread --> [] )

    Ciaao

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

Discussions similaires

  1. Classe abstraite ? Interface ?
    Par Gaetch dans le forum Modélisation
    Réponses: 1
    Dernier message: 17/10/2010, 20h45
  2. Réponses: 3
    Dernier message: 03/11/2008, 22h01
  3. Classe Abstraite, Interface....
    Par greatdonking dans le forum Langage
    Réponses: 6
    Dernier message: 07/11/2005, 17h19
  4. Réponses: 6
    Dernier message: 27/07/2005, 10h06
  5. [Debutant][Conception] Classes abstraites et interface.
    Par SirDarken dans le forum Langage
    Réponses: 4
    Dernier message: 29/10/2004, 01h02

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