Interfaces et implementations Java

Fermé
xander - 27 déc. 2002 à 11:42
 rienman - 26 sept. 2008 à 18:36
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:

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
salut
je comprends pas très bien ton prob là, ???

Choubanimal : 
"Le poilu poilant au poil"
0
ben je sais pas trop quoi mettre dans l interface...
0
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
au risque de paraître stupide

moveToNorth, moveToSouth, ....

Choubanimal : 
"Le poilu poilant au poil"
0
Et tu peux rajouter, ", à poil." (cf. citation)
0
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...
0

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
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"
0
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...
0
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
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"
0
c-a-d?
je cree une array list, et pis dans chaque "case" je fais un new MapUnit ?
0
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
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"
0
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
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"
0
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?
0
les params, c est les attributs presents dans ma classe MapUnit c es ca?
0
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
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"
0
ok, vais essayer de me depatouiller avec ca!!
merci
0
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
bon m... alors ;-)

Choubanimal : 
"Le poilu poilant au poil"
0