Passage du C vers le JAVA

pipleton Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
pipleton Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai une structure en C et je voudrais la ré-ecrire en JAVA. Pour cela, j'ai déjà crée une classe avec les différents attributs.Cependant, je ne vois pas comment traduire la ligne suivante en JAVA : struct Ville ** voisins; //Pointeur sur les villes voisines.
Quelqu'un pourrait il m'aider?
Merci d'avance

typedef struct{
char nomVille[20]; //Nom de la ville
struct Ville ** voisins; //Pointeur sur les villes voisines
}Ville;


public class Ville{

protected String nomVille=null;
}
A voir également:

6 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tu dois simplement remplacer ta structure par une classe...

/** Une ville est représentée par son nom et ses villes voisines */
public class Ville
{
	/** nom de la ville */
	protected String nomVille; 

	/** villes voisines */
	protected Collection<Ville> voisins;

	/** Construction d'une ville
	 *  @param nom le nom de la ville
	 *  ...
	 */
	public Ville(String nom, ...)
	{
		nomVille = nom;
		// ...
	}
}
1
pipleton Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
alors je suis d'accord avec toi pour utilisé les collections. Mais comment je fais pour l'initialisé quand il y a plusieurs voisin?
Par exemple, si ma ville est Paris, qu'elle a pour voisin Orléans et Reims.
je vais faire
public Ville(){
nomVille = " Paris";
voisins = ???? ;
}

je ne vois pas trop comment faire la? Puis je avoir de la lumière?
Merci d'avance!
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Collection est une classe abstraite, je te laisse choisir l'implémentation que tu veux.
Pour l'exemple je vais prendre ArrayList mais cela risque d'être un mauvais choix.
En effet il vaudrait mieux prendre une Collection qui ne supporte pas les doublons...

/** Construction d'une ville
 *  @param nom le nom de la ville
 *  @param villesVoisines les villes existantes qui entourent la nouvelle
 */
public Ville(String nom, Ville ... villesVoisines)
{
	nomVille = nom;
	voisins = new ArrayList<Ville>();
				
	for (Ville v : villesVoisines)
	{
		this.voisins.add(v); // v est voisin de this
		v.voisins.add(this); // this est voisin de v
	}
}

public static void main(String args[])
{
	Ville paris = new Ville("Paris");
	// 'Paris'	[]

	Ville reims = new Ville("Reims",paris);
	// 'Paris'	['Reims']
	// 'Reims'	['Paris']

	Ville orleans = new Ville("Orléans",paris);
	// 'Paris'	['Reims','Orléans']
	// 'Reims'	['Paris']
	// 'Orléans'	['Paris']
}
0
pipleton Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
Comment je peux faire pour éviter que mes villes voisines se retrouvent dans le constructeur? En effet pour créer mes villes j'ai fait une boucle et je les initialise une par une.
Suivant ton exemple, j'ai fait ça : ville[0].voisin.add(ville[1]); sans grand succès! est ce normal?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tu ne peux pas ville[i] car ville n'est pas un tableau.
De plus c'est voisins qu'il faut utiliser : ville1.voisins.add(ville2);
Sinon tu peux utiliser une méthode qui ajoute un lien de voisinage :

public Ville(String nom)
{
	nomVille = nom;
	voisins = new ArrayList<Ville>();
}

public static boolean ajouterVoisins(Ville ville1,Ville ville2)
{		
	return ville1.voisins.add(ville2) && ville2.voisins.add(ville1); 
}

public static void main(String args[])
{
	Ville reims = new Ville("Reims");
	Ville orleans = new Ville("Orléans");
	Ville paris = new Ville("Paris");
		
	ajouterVoisins(paris,reims);
	ajouterVoisins(paris,orleans);
}
0
pipleton Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
yep ça me parait plus clair vu sous cet angle ça devrait le faire!
Merci beaucoup de ton aide!
0