cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 2014
-
22 févr. 2007 à 13:18
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 2014
-
22 févr. 2007 à 14:20
Salut à tous, voilà je me tente dans un tout autre projet Java, mais je n'arrive pas à comprendre un trux : J4ai créer un fichier de nommé : Personnages.java à l'intérieur s'y trouve des class
j'usque là aucun pb, mon pb c'est que lorsque je veux importer la référence cela se passe bien mais je ne peux accéder aux objets qui sont à l'interieur car il me dit : "... n'est pas public" mais lorsque je place ma class personnage du package Personnages en public, il me dit "personnage doit être dans un fichier personnage.java" ... Snif, je pense que je m'y prend mal car en .Net je créer une classe contenant des classes et en public cela passe sans ouiné. Que dois-je faire et pourquoi ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 22 févr. 2007 à 13:37
En java, chaque classe doit être définie dans son propre fichier qui doit avoir le même nom que la classe.
Ce qui rend le code plus simple à organiser : on sait que telle classe est dans tel fichier, par contre, c'est sûr que ca fait une prolifération de fichiers !
Fais plutôt un fichier par classe Java. Si tu as plusieurs types de personnages, crée un package Personnages et mets chaque classe modélisant un personnage dans ce package. Tu vois ce que je veux dire?
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 22 févr. 2007 à 13:36
Oui je vois bien, mais en l'occurence j'ai un autre problème que voici : j'ai n personnage qui permettent n action c'est actions sont des classes implémentant l'interface action, et le personnage appel une fonction commune Faire() qui elle en fonction de l'objet action sélectionner fait ci ou ça. tu vois ?
Regarde un exemple :
package Personnages;
import java.util.Collections;
/**
*
* @author Chris
*/
interface Action {
public void Faire();
}
class Attend implements Action {
public void Faire() {
System.out.println("J'attend");
}
}
class Saluer implements Action {
public void Faire() {
System.out.println("Bonjour !");
}
}
class DireAuRevoir implements Action {
public void Faire() {
System.out.println("Au revoir !");
}
}
public class Personnage {
private String pseudo;
private int vie;
private Action act;
/** Creates a new instance of Personnages */
public Personnage(String NomJoueur) {
this.vie=100;
this.pseudo = NomJoueur;
this.act = new Attend();
}
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 22 févr. 2007 à 13:38
Quand je set l'action en interne du fichier java y'a aucun problème, mais dès lors ou je veux le faire à l'extérieur alors là c'est galère pour moi newbie en javatization
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 22 févr. 2007 à 13:40
C'est quoi ton problème avec l'interface Action ?
Que tu ne peux pas déclarer les 3 classes concrètes dans le même fichier ? Normal, Java ne le permet pas, il faut les mettre dans 3 fichiers différents (ainsi que l'interface dans un autre fichier).
OUI!! C'est fait pour ça. Dans mon jeu en 3D, par exemple, j'ai au moins une douzaine de classes dans le package principal. Par contre, crée un répertoire pour chaque package et mets tes fichiers .java dedans. Et compile comme ça:
javac Personnages.Action.java depuis le répertoire Personnages
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 22 févr. 2007 à 14:14
En fait un package, en java, c'est comme un espace de nom en C++ : un endroit où l'on définit la portée d'une classe : toutes les classes d'un même package ont accès directement aux autres classe du package. Par contre, si tu veux accèder à des classes d'un autre package, il faut les importer dans ton code. (mot clé import)