Commenter un programme

Commenter un programme - Java - Programmation

Marsh Posté le 11-11-2012 à 03:00:18    

Bonjour  
Pourrais t'on SVP m'aider via des commentaires bien explicites et expliqués étapes par étapes pour bien comprendre ce programme: pour indice c'est un algo qui partant d'une ville de départ (paris) doit faire le tour de 6 villes pour revenir à paris, donc il y'a un total de 7 villes ^^ et il doit toujours trouver la distance la plus proche choisir cette ville et y'a pas possibilité de passer dans une ville 2 fois.
Je precise qu'il y'a 2 fichiers joints: respectivement Algo.java et ville.java.
je vous remercie d'avance :)
 

Code :
  1. import java.util.HashMap;
  2. import java.util.Map.Entry;
  3. public class Algo{
  4. private HashMap<String,Ville> villes;
  5. public Algo(){
  6.  villes = new HashMap<String,Ville>();
  7.  Ville nice = new Ville("Nice" );
  8.  nice.addDistance("Angers",999);
  9.  nice.addDistance("Bordeaux",844);
  10.  nice.addDistance("Clermond",620);
  11.  nice.addDistance("Paris",950);
  12.  nice.addDistance("Strasbourg",842);
  13.  nice.addDistance("Montpellier",345);
  14.  villes.put(nice.getNom(),nice);
  15.  Ville angers = new Ville("Angers" );
  16.  angers.addDistance("Nice",999);
  17.  angers.addDistance("Bordeaux",335);
  18.  angers.addDistance("Clermond",402);
  19.  angers.addDistance("Paris",303);
  20.  angers.addDistance("Strasbourg",742);
  21.  angers.addDistance("Montpellier",692);
  22.  villes.put(angers.getNom(),angers);
  23.  Ville bordeaux = new Ville("Bordeaux" );
  24.  bordeaux.addDistance("Nice",844);
  25.  bordeaux.addDistance("Angers",335);
  26.  bordeaux.addDistance("Clermond",369);
  27.  bordeaux.addDistance("Paris",561);
  28.  bordeaux.addDistance("Strasbourg",958);
  29.  bordeaux.addDistance("Montpellier",499);
  30.  villes.put(bordeaux.getNom(),bordeaux);
  31.  Ville clermond = new Ville("Clermond" );
  32.  clermond.addDistance("Nice",620);
  33.  clermond.addDistance("Angers",102);
  34.  clermond.addDistance("Bordeaux",369);
  35.  clermond.addDistance("Paris",425);
  36.  clermond.addDistance("Strasbourg",574);
  37.  clermond.addDistance("Montpellier",367);
  38.  villes.put(clermond.getNom(), clermond);
  39.  Ville paris = new Ville("Paris" );
  40.  paris.addDistance("Nice",950);
  41.  paris.addDistance("Angers",303);
  42.  paris.addDistance("Bordeaux",561);
  43.  paris.addDistance("Clermond",425);
  44.  paris.addDistance("Strasbourg",448);
  45.  paris.addDistance("Montpellier",763);
  46.  villes.put(paris.getNom(),paris);
  47.  Ville strasbourg = new Ville("Strasbourg" );
  48.  strasbourg.addDistance("Nice",842);
  49.  strasbourg.addDistance("Angers",742);
  50.  strasbourg.addDistance("Bordeaux",958);
  51.  strasbourg.addDistance("Clermond",574);
  52.  strasbourg.addDistance("Paris",448);
  53.  strasbourg.addDistance("Montpellier",727);
  54.  villes.put(strasbourg.getNom(),strasbourg);
  55.  Ville montpellier = new Ville("Montpellier" );
  56.  montpellier.addDistance("Nice",345);
  57.  montpellier.addDistance("Angers",692);
  58.  montpellier.addDistance("Bordeaux",499);
  59.  montpellier.addDistance("Clermond",367);
  60.  montpellier.addDistance("Paris",763);
  61.  montpellier.addDistance("Strasbourg",727);
  62.  villes.put(montpellier.getNom(),montpellier);
  63. }
  64. public HashMap<String,Ville> getVilles(){
  65.  return this.villes;
  66. }
  67. public int displayTravelingSalesmanV1(String nom, String arrive, HashMap<String,Ville> villesRestantes){
  68.  int min = Integer.MAX_VALUE;
  69.  String nextVille = null;
  70.  int distance;
  71.  for(Entry<String, Ville> entry : villesRestantes.entrySet()) {
  72.      Ville value = entry.getValue();
  73.      distance = value.getDistanceTo(nom);
  74.   if(distance > 0 && distance < min && (!arrive.equals(value.getNom()) || villesRestantes.size() <= 1)){
  75.    min = distance;
  76.    nextVille = value.getNom();
  77.   }
  78.  }
  79.  if(nextVille != null){
  80.   villesRestantes.remove(nextVille);
  81.   System.out.println(nom + " -> " + nextVille + " = " + min + "km" );
  82.   return min + displayTravelingSalesmanV1(nextVille,arrive,villesRestantes);
  83.  }
  84.  return 0;
  85. }
  86. int[][] suites = new int[7][7];
  87. public int displayTravelingSalesmanV2(int i, int j){
  88. }
  89. public static void main(String[] args){
  90.  Algo algo = new Algo();
  91.  int distanceTotale = algo.displayTravelingSalesmanV1("Paris","Paris", algo.getVilles());
  92.  System.out.println("Distance Total parcourue: " + distanceTotale + "km" );
  93. }
  94. }


 
 
 

Code :
  1. import java.util.HashMap;
  2. public class Ville{
  3. private HashMap<String,Integer> distances;
  4. private String nom;
  5. public Ville(String nom){
  6.  this.nom = nom;
  7.  this.distances = new HashMap<String,Integer>();
  8. }
  9. public String getNom(){
  10.  return this.nom;
  11. }
  12. public void addDistance(String ville,Integer distance){
  13.  this.distances.put(ville,distance);
  14. }
  15. public Integer getDistanceTo(String ville){
  16.  if(this.distances.containsKey(ville)){
  17.   return this.distances.get(ville);
  18.  }
  19.  return -1;
  20. }
  21. }

Reply

Marsh Posté le 11-11-2012 à 03:00:18   

Reply

Marsh Posté le 11-11-2012 à 14:23:56    

Le mieux c'est de faire les commentaires toi même pour voir si t'as compris, et après, tu postes pour qu'on les check.


---------------
"Coucou petit perruche, c'est moi l'élan derrière toi !"
Reply

Marsh Posté le 11-11-2012 à 16:26:10    

reelooz10 a écrit :

Le mieux c'est de faire les commentaires toi même pour voir si t'as compris, et après, tu postes pour qu'on les check.


Code :
  1. // implementation de l'interface Map par l'utilisation de table hachee (HashMap qui sert à retirer retirer les iterations à chaque ville parcourue
  2. //definition ville de depart (paris) et ville d'arrivee en parametre in the main
  3. import java.util.HashSet;
  4. import java.util.HashMap;
  5. import java.util.Map.Entry;
  6. public class Heuristique{
  7. public static void main(String[] args)
  8. {
  9.  Heuristique heuristique = new Heuristique();
  10.  int Totale = heuristique.displayVoyageV1("Paris","Paris", heuristique.getVilles());
  11.   System.out.println("La distance parcourue est: " + Totale + "kms" );
  12. }
  13.      private HashMap<String, Ville> city;
  14.    //methodes pour saisie ville actuelle, calcul/recherche ville la plus proche, retour de la disttance et calcul de la prochaine ville jusqu'a faire le tour
  15.    //
  16. public HashMap<String,Ville> getVilles()
  17. {
  18.  return this.city;
  19. }
  20.      public int displayVoyageV1(String name, String arrive, HashMap<String,Ville> VilleNonParcourue)
  21. {
  22.   int portee;
  23.   int min = Integer.MAX_VALUE;
  24.   String prochaineVille = null;
  25.    for(Entry<String, Ville> entry : VilleNonParcourue.entrySet())
  26.     {
  27.      Ville value = entry.getValue();
  28.      portee = value.getPorteeTo(name);
  29.      if(portee > 0 && portee < min && (!arrive.equals(value.getName()) || VilleNonParcourue.size() <= 1))
  30.        {
  31.         min = portee;
  32.         prochaineVille = value.getName();
  33.        }
  34.     }
  35.        if(prochaineVille != null)
  36.         {
  37.          VilleNonParcourue.remove(prochaineVille);
  38.          System.out.println(name + " -> " + prochaineVille + " = " + min + "km" );
  39.          return min + displayVoyageV1(prochaineVille,arrive,VilleNonParcourue);
  40.         }
  41.         return 0;
  42. }
  43. // declaration matrice diagonale
  44. int[][] matrice = new int[7][7];
  45. /*public int displayVoyageV2(int i, int j)
  46. {
  47. }*/
  48.     /*instanciation des villes et initialisation de la matrice distance sauf pour la ville en question
  49. implementation des methodes put et get pour les differentes distances */
  50.    public Heuristique()
  51.       {
  52.              city = new HashMap<String,Ville>();
  53.     Ville angers = new Ville("Angers" );
  54.     angers.addPortee("Bordeaux",335);
  55.     angers.addPortee("Clermond",402);
  56.     angers.addPortee("Montpellier",692);
  57.     angers.addPortee("Nice",999);
  58.     angers.addPortee("Paris",303);
  59.     angers.addPortee("Strasbourg",742);
  60.     city.put(angers.getName(),angers);
  61.      Ville bordeaux = new Ville("Bordeaux" );
  62.      bordeaux.addPortee("Angers",335);
  63.      bordeaux.addPortee("Clermond",369);
  64.      bordeaux.addPortee("Montpellier",499);
  65.      bordeaux.addPortee("Nice",844);
  66.      bordeaux.addPortee("Paris",561);
  67.      bordeaux.addPortee("Strasbourg",958);
  68.      city.put(bordeaux.getName(),bordeaux);
  69.       Ville clermond = new Ville("Clermond" );
  70.       clermond.addPortee("Angers",402);
  71.       clermond.addPortee("Bordeaux",369);
  72.       clermond.addPortee("Montpellier",367);
  73.       clermond.addPortee("Nice",620);
  74.       clermond.addPortee("Paris",425);
  75.       clermond.addPortee("Strasbourg",574);
  76.       city.put(clermond.getName(), clermond);
  77.        Ville montpellier = new Ville("Montpellier" );
  78.        montpellier.addPortee("Angers",692);
  79.        montpellier.addPortee("Bordeaux",499);
  80.        montpellier.addPortee("Clermond",367);
  81.        montpellier.addPortee("Nice",345);
  82.        montpellier.addPortee("Paris",763);
  83.        montpellier.addPortee("Strasbourg",727);
  84.        city.put(montpellier.getName(),montpellier);
  85.         Ville nice = new Ville("Nice" );
  86.         nice.addPortee("Angers",999);
  87.         nice.addPortee("Bordeaux",844);
  88.         nice.addPortee("Clermond",620);
  89.         nice.addPortee("Montpellier",345);
  90.         nice.addPortee("Paris",950);
  91.         nice.addPortee("Strasbourg",842);
  92.         city.put(nice.getName(),nice);
  93.          Ville paris = new Ville("Paris" );
  94.          paris.addPortee("Angers",303);
  95.          paris.addPortee("Bordeaux",561);
  96.          paris.addPortee("Clermond",425);
  97.          paris.addPortee("Montpellier",763);
  98.          paris.addPortee("Nice",950);
  99.          paris.addPortee("Strasbourg",448);
  100.          city.put(paris.getName(),paris);
  101.           Ville strasbourg = new Ville("Strasbourg" );
  102.           strasbourg.addPortee("Angers",742);
  103.           strasbourg.addPortee("Bordeaux",958);
  104.           strasbourg.addPortee("Clermond",574);
  105.           strasbourg.addPortee("Montpellier",727);
  106.           strasbourg.addPortee("Nice",842);
  107.           strasbourg.addPortee("Paris",448);
  108.           city.put(strasbourg.getName(),strasbourg);
  109. }
  110. }


 
 
 

Code :
  1. // classe Ville
  2. import java.util.HashSet;
  3. import java.util.HashMap;
  4. import java.util.Map.Entry;
  5. public class Ville
  6. {
  7. private HashMap<String,Integer> portees;
  8. private String name;
  9.     //mutateurs pour ajout des distances, determination de la cle des villes si elle existe, puis recherche nom ville sa distance dans HashMap et retour du nom.
  10.  public void addPortee(String ville,Integer portee)
  11.  {
  12.  this.portees.put(ville,portee);
  13.  }
  14.  public Integer getPorteeTo(String ville)
  15.       {
  16.         if(this.portees.containsKey(ville))
  17.          {
  18.           return this.portees.get(ville);
  19.          }
  20.                    return -1;
  21.       }
  22.   public Ville(String name)
  23.   {
  24.    this.name = name;
  25.    this.portees = new HashMap<String,Integer>();
  26.   }
  27.    public String getName()
  28.    {
  29.     return this.name;
  30.    }
  31. }

Reply

Marsh Posté le 11-11-2012 à 22:15:39    

Si tu veux faire un truc bien, au moins commente chaque boucle, chaque condition, ect... La ce que tu fais ne sert à rien pour "comprendre" le code.


---------------
"Coucou petit perruche, c'est moi l'élan derrière toi !"
Reply

Marsh Posté le 12-11-2012 à 03:24:13    

reelooz10 a écrit :

Si tu veux faire un truc bien, au moins commente chaque boucle, chaque condition, ect... La ce que tu fais ne sert à rien pour "comprendre" le code.


je crois que j'ai posté ce message juste pour ça, sinon je l'aurais fait moi même sans demander l'avis d'expert :D

Reply

Marsh Posté le 12-11-2012 à 09:07:20    

Essaye au moins. Si tu crois qu'on va faire le taff à ta place...


---------------
"Coucou petit perruche, c'est moi l'élan derrière toi !"
Reply

Marsh Posté le 12-11-2012 à 11:05:10    

Commenter le code c'est :

  • un commentaire par variable
  • un commentaire par méthode
  • un commentaire par boucle / condition / élément d'algo non trivial


Un bon commentaire se fait sur une ligne
 
Plus un cartouche en entête de chaque classe ou tu écrits sur le rôle de la classe,  
et peux écrire un peu de "littérature" sur l'utilité de la classe, ses limitations, les choix d'algos qui sont faits.
 
Tout cela est normé en javadoc  
cf par exemple http://simonandre.developpez.com/t [...] n-javadoc/
 
Tu as quelque choses à livrer à un client ou un devoir à remettre à un prof ?

Reply

Marsh Posté le 12-11-2012 à 11:23:15    

Je me dévoue par amour du beau code :-)
 

Code :
  1. import java.util.HashSet;
  2. import java.util.HashMap;
  3. import java.util.Map.Entry;
  4. /**
  5. * Classe ville.
  6. * Une ville a  un nom (String name)
  7. * et une portée (distance avec les autres villes) sous forme de la  Hashmap portee.
  8. * @author omzoway
  9. *
  10. */
  11. public class Ville
  12. {
  13. /** la portée sous forme de Hashmap*/
  14. private HashMap<String,Integer> portees;
  15. /** le nom de la ville */
  16. private String name;
  17. /**
  18.  *  Ajout d'une portée dans la Hashmap portees sous la clé ville
  19.  * @param ville la ville clé de la Hashmap
  20.  * @param portee la portée à ajouter à la ville
  21.  */
  22. public void addPortee(String ville,Integer portee)
  23. {
  24.  this.portees.put(ville,portee);
  25. }
  26. /**
  27.  * Getter de la portée d'une ville, récupérée dans la Hashmap portee
  28.  * @param ville la ville dont on cherche la portée
  29.  * @return la portée correspondant à la ville en param, -1 si clé ville inexistante
  30.  */
  31. public Integer getPorteeTo(String ville)
  32. {
  33.  if(this.portees.containsKey(ville))
  34.  {
  35.   //retourne la portee dans la map correspondant à la clé  
  36.   return this.portees.get(ville);
  37.  }
  38.  //si on est la c'est que la map n'a pas de valeur pour la clé ville, retourne la valeur -1 comme valeur par défaut
  39.  return -1;
  40. }
  41. /**
  42.  * Constructeur d'instance de Ville à un paramètre
  43.  * @param name le nom de la ville
  44.  */
  45. public Ville(String name)
  46. {
  47.  this.name = name;
  48.  this.portees = new HashMap<String,Integer>();
  49. }
  50. /**
  51.  * Getter du nom de la ville
  52.  * @return le nom de la ville
  53.  */
  54. public String getName()
  55. {
  56.  return this.name;
  57. }
  58. }

Message cité 1 fois
Message édité par willy le kid le 12-11-2012 à 17:53:06
Reply

Marsh Posté le 13-11-2012 à 07:42:42    

willy le kid a écrit :

Je me dévoue par amour du beau code :-)
 

Code :
  1. import java.util.HashSet;
  2. import java.util.HashMap;
  3. import java.util.Map.Entry;
  4. /**
  5. * Classe ville.
  6. * Une ville a  un nom (String name)
  7. * et une portée (distance avec les autres villes) sous forme de la  Hashmap portee.
  8. * @author omzoway
  9. *
  10. */
  11. public class Ville
  12. {
  13. /** la portée sous forme de Hashmap*/
  14. private HashMap<String,Integer> portees;
  15. /** le nom de la ville */
  16. private String name;
  17. /**
  18.  *  Ajout d'une portée dans la Hashmap portees sous la clé ville
  19.  * @param ville la ville clé de la Hashmap
  20.  * @param portee la portée à ajouter à la ville
  21.  */
  22. public void addPortee(String ville,Integer portee)
  23. {
  24.  this.portees.put(ville,portee);
  25. }
  26. /**
  27.  * Getter de la portée d'une ville, récupérée dans la Hashmap portee
  28.  * @param ville la ville dont on cherche la portée
  29.  * @return la portée correspondant à la ville en param, -1 si clé ville inexistante
  30.  */
  31. public Integer getPorteeTo(String ville)
  32. {
  33.  if(this.portees.containsKey(ville))
  34.  {
  35.   //retourne la portee dans la map correspondant à la clé  
  36.   return this.portees.get(ville);
  37.  }
  38.  //si on est la c'est que la map n'a pas de valeur pour la clé ville, retourne la valeur -1 comme valeur par défaut
  39.  return -1;
  40. }
  41. /**
  42.  * Constructeur d'instance de Ville à un paramètre
  43.  * @param name le nom de la ville
  44.  */
  45. public Ville(String name)
  46. {
  47.  this.name = name;
  48.  this.portees = new HashMap<String,Integer>();
  49. }
  50. /**
  51.  * Getter du nom de la ville
  52.  * @return le nom de la ville
  53.  */
  54. public String getName()
  55. {
  56.  return this.name;
  57. }
  58. }



 
 
bonjour, Merci merci, promis je lirai le javadoc, non non pas pour un client mais déjà rendu. et le Heuristique.java? il est plus beau non? lool

Reply

Marsh Posté le 09-12-2012 à 12:12:10    

ah, cette exo c'est sur les chemins eulériens non ? :) je me rappelle l'avoir fais dans ma jeunesse l'an dernier ^^ il faut que tu buches l'algorithme de Dijkstra pour comprendre.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed