Interfaces et implementations Java
Fermé
Bonjour, j ai un projet en JAVA, le but est de creer une sorte de jeu ou un personnage se deplace de "case en case". Pour cela, j ai besoin de definir les directions (j en utilise 4: Nord, Est, Ouest et Sud), La creation d une interface me semble neccessaire mais je ne sais pas trop comment "nommer" proprement mes directions ds cette interface....
A voir également:
- Interfaces et implementations Java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
15 réponses
choubaka
Messages postés
39420
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
19 février 2025
2 104
27 déc. 2002 à 20:19
27 déc. 2002 à 20:19
salut
je comprends pas très bien ton prob là, ???
Choubanimal :
"Le poilu poilant au poil"
je comprends pas très bien ton prob là, ???
Choubanimal :
"Le poilu poilant au poil"
choubaka
Messages postés
39420
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
19 février 2025
2 104
2 janv. 2003 à 09:18
2 janv. 2003 à 09:18
au risque de paraître stupide
moveToNorth, moveToSouth, ....
Choubanimal :
"Le poilu poilant au poil"
moveToNorth, moveToSouth, ....
Choubanimal :
"Le poilu poilant au poil"
oui bien sur... :-)
Mais a t on avis, faut il nomme les 4 directions et les implementer dans la bonne classe apres, ou mettre dans l interface 1 et 1 seule methode qui serait implementer differement selon la classe...
Mais a t on avis, faut il nomme les 4 directions et les implementer dans la bonne classe apres, ou mettre dans l interface 1 et 1 seule methode qui serait implementer differement selon la classe...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
choubaka
Messages postés
39420
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
19 février 2025
2 104
2 janv. 2003 à 12:11
2 janv. 2003 à 12:11
Bonne question
Tu peux effectivement créer l'interface avec une seule méthode (move par ex)
ensuite tu crées des classes concrètes (North, South, ...) qui implémentent cette interface.
Maintenant, je ne sais pas comment tu comptes gérer le principe de fonctionnement des mouvements.
Si tu fais bouger ton personnage à l'aide de boutons tu peux travailler avec des listeners implémentés et ajoutés aux boutons adéquats (avantage: pas de test pour la source de l'event)
Par contre tu peux également le faire bouger avec les touches directionnelles du clavier, là c'est différent, il faut tester la touche source.
Maintenant, si c'est par la souris, c'est encore autre chose
Choubanimal :
"Le poilu poilant au poil"
Tu peux effectivement créer l'interface avec une seule méthode (move par ex)
ensuite tu crées des classes concrètes (North, South, ...) qui implémentent cette interface.
Maintenant, je ne sais pas comment tu comptes gérer le principe de fonctionnement des mouvements.
Si tu fais bouger ton personnage à l'aide de boutons tu peux travailler avec des listeners implémentés et ajoutés aux boutons adéquats (avantage: pas de test pour la source de l'event)
Par contre tu peux également le faire bouger avec les touches directionnelles du clavier, là c'est différent, il faut tester la touche source.
Maintenant, si c'est par la souris, c'est encore autre chose
Choubanimal :
"Le poilu poilant au poil"
ok, ok vais voir ca....
autre chose... sais tu comment je pourrais faire pour creer un nombre aleatoire d instance d une meme classe...
J explique: j ai une classe MapUnit,qui est un morceau de carte et je voudrais une classe Map qui est un ensemble de MapUnit, mais le nombre de MapUnit est aleatoire...
autre chose... sais tu comment je pourrais faire pour creer un nombre aleatoire d instance d une meme classe...
J explique: j ai une classe MapUnit,qui est un morceau de carte et je voudrais une classe Map qui est un ensemble de MapUnit, mais le nombre de MapUnit est aleatoire...
choubaka
Messages postés
39420
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
19 février 2025
2 104
2 janv. 2003 à 13:46
2 janv. 2003 à 13:46
Pas de prob, il te suffit de stocker tes MapUnit dnas ta classe Map dans une Structure de données de type ArrayList
Choubanimal :
"Le poilu poilant au poil"
Choubanimal :
"Le poilu poilant au poil"
choubaka
Messages postés
39420
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
19 février 2025
2 104
2 janv. 2003 à 14:12
2 janv. 2003 à 14:12
Ben pas tout à fait
Je suppose que tes MapUnit sont distinctes l'une par rapport aux autres, du moins au niveau de certains attributs. Si c'est le cas:
public class Map {
private ArrayList mapUnits;
//constructeur
public Map (){
mapUnits = new ArrayList();
}
//méthode de création ou d'appel d'un objet créant des MapUnit
public void createMapUnit(Objet param1, Objet param2){
MapUnit current = new MapUnit()
current.setParam1(param1);
current.setParam2(param2);
this.store(current);
}
//méthode pour stocker un mapUnit dans l'arrayList
private void store(MapUnit toStore){
mapUnits.add(toStore);
}
}
j'explique:
Je déclare dans la classe map, un objet ArrayList chargé de stocker des MapUnit
J'initialise l'arraylist dans le constructeur de la classe map
J'utilise une méthode qui soit (c'est à toi de voir) crée directement les objets mapunits ou qui fait appel à une classe spécialisée (factory) qui serait responsable de la création des ces objets.
Une fois crées, j'appelle une méthode de map pour stocker dans l'arraylist.
Choubanimal :
"Le poilu poilant au poil"
Je suppose que tes MapUnit sont distinctes l'une par rapport aux autres, du moins au niveau de certains attributs. Si c'est le cas:
public class Map {
private ArrayList mapUnits;
//constructeur
public Map (){
mapUnits = new ArrayList();
}
//méthode de création ou d'appel d'un objet créant des MapUnit
public void createMapUnit(Objet param1, Objet param2){
MapUnit current = new MapUnit()
current.setParam1(param1);
current.setParam2(param2);
this.store(current);
}
//méthode pour stocker un mapUnit dans l'arrayList
private void store(MapUnit toStore){
mapUnits.add(toStore);
}
}
j'explique:
Je déclare dans la classe map, un objet ArrayList chargé de stocker des MapUnit
J'initialise l'arraylist dans le constructeur de la classe map
J'utilise une méthode qui soit (c'est à toi de voir) crée directement les objets mapunits ou qui fait appel à une classe spécialisée (factory) qui serait responsable de la création des ces objets.
Une fois crées, j'appelle une méthode de map pour stocker dans l'arraylist.
Choubanimal :
"Le poilu poilant au poil"
choubaka
Messages postés
39420
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
19 février 2025
2 104
2 janv. 2003 à 14:17
2 janv. 2003 à 14:17
L'avantage de la méthode de création est que quel que soit le nombre de mapunits à créer (en fonction d'un choix d'utilisateur par ex), il suffit de l'appeler au sein d'une boucle et ce sans connaître au départ le nombre qui sera choisi.
Choubanimal :
"Le poilu poilant au poil"
Choubanimal :
"Le poilu poilant au poil"
wep!! je suis pas sur d avoir tt compris...
ds createMapUnit a koi corresponde des 2 param?
et apres, pour creer une map "rectangulaire" par exemple , je fais une methode avec une boucle sur les 2 methodes que tui a ecris?
ds createMapUnit a koi corresponde des 2 param?
et apres, pour creer une map "rectangulaire" par exemple , je fais une methode avec une boucle sur les 2 methodes que tui a ecris?
choubaka
Messages postés
39420
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
19 février 2025
2 104
2 janv. 2003 à 14:58
2 janv. 2003 à 14:58
bon ok ok
les param1 et 2 c'était un exemple possible (n'en tiens pas compte)
Si tes mapUnits sont réellement différents utilise alors un classe spécialisée pour les créer (c'est une solution possible)
public class FactoryMap{
public static MapUnit getRectangularMap(){
MapUnit current
//code pour fabriquer ton map rectangulaire
...............;
return current
}
public static MapUnit getCircularMap(){
MapUnit current
//code pour fabriquer ton map circulaire
...............;
return current
}
}
Cette classe posséde des méthode statique te permettant de fabriquer des map de différentes formes. Les méthodes étant statiques pas besoin d'instancier la factory
public class Map {
private ArrayList mapUnits;
//constructeur
public Map (){
mapUnits = new ArrayList();
}
//méthode de création ou d'appel d'un objet créant des MapUnit
public void createMapUnit(int typeOfMap){
MapUnit current ;
if(int typeOfMap = 1){
current = FactoryMap.getRectangularMap();
}
else{
current = FactoryMap.getCircularMap();
}
this.store(current);
}
//méthode pour stocker un mapUnit dans l'arrayList
private void store(MapUnit toStore){
mapUnits.add(toStore);
}
}
Voilà donc dans cet exemple, la méthode création de map attend un paramètre pour déterminer le type de mapunit à stocker. En fonction de ce type, elle appelle la méthode statique de la factory.
Ici, j'utilise une condition if, mais sinon un switch case peut également être envisagé
Choubanimal :
"Le poilu poilant au poil"
les param1 et 2 c'était un exemple possible (n'en tiens pas compte)
Si tes mapUnits sont réellement différents utilise alors un classe spécialisée pour les créer (c'est une solution possible)
public class FactoryMap{
public static MapUnit getRectangularMap(){
MapUnit current
//code pour fabriquer ton map rectangulaire
...............;
return current
}
public static MapUnit getCircularMap(){
MapUnit current
//code pour fabriquer ton map circulaire
...............;
return current
}
}
Cette classe posséde des méthode statique te permettant de fabriquer des map de différentes formes. Les méthodes étant statiques pas besoin d'instancier la factory
public class Map {
private ArrayList mapUnits;
//constructeur
public Map (){
mapUnits = new ArrayList();
}
//méthode de création ou d'appel d'un objet créant des MapUnit
public void createMapUnit(int typeOfMap){
MapUnit current ;
if(int typeOfMap = 1){
current = FactoryMap.getRectangularMap();
}
else{
current = FactoryMap.getCircularMap();
}
this.store(current);
}
//méthode pour stocker un mapUnit dans l'arrayList
private void store(MapUnit toStore){
mapUnits.add(toStore);
}
}
Voilà donc dans cet exemple, la méthode création de map attend un paramètre pour déterminer le type de mapunit à stocker. En fonction de ce type, elle appelle la méthode statique de la factory.
Ici, j'utilise une condition if, mais sinon un switch case peut également être envisagé
Choubanimal :
"Le poilu poilant au poil"
choubaka
Messages postés
39420
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
19 février 2025
2 104
3 janv. 2003 à 08:08
3 janv. 2003 à 08:08
bon m... alors ;-)
Choubanimal :
"Le poilu poilant au poil"
Choubanimal :
"Le poilu poilant au poil"