Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP1: Convertisseur

Version alternative

    14 octobre 2008 à 22:15:34

    Bonjour à tous !

    Suivant actuellement des cours de Java, j'ai du m'y mettre un petit peu et pour m'exercer j'ai choisi de revoir le premier tp du tutoriel en me servant de ce que j'ai appris en cour.
    Première différence, je ne récupère aucune donnée en ligne commande autrement qu'en reprenant les arguments de la méthode main. Donc pas possible de demander à recommencer. Passé cette différence, le programme a le même fonctionnement. J'ai cependant choisi de gérer les erreurs éventuels avec une exception personnalisée et de présenter le programme sous forme de plusieurs class contenue dans un package (c'était ce que je voulais exercer).

    Que pensez-vous du code suivant ? Y a-t-il des erreurs ou des choses "impropres" ? Comment l'améliorer ?

    Merci d'avance pour le temps que vous prendrez à relire mes class.

    Convertisseur.java
    package tp1;
    
    public class Convertisseur
    {
    	//Attributs :
    	private static final String nomDuProgramme = "CONVERTION DEGRES CELCIUS ET DEGRES FARENHEIT";
    	
    	static double tempDepart;
    	static int pas;
    	static double tempFin;
    	
    	//constructeur
    	public Convertisseur(String[] args) throws ConvertException
    	{
    		try
    		{
    			tempDepart = Double.parseDouble(args[0]);
    			pas = Integer.parseInt(args[1]);
    			tempFin = Double.parseDouble(args[2]);
    		}
    		catch(NumberFormatException nfe)
    		{
    			throw new ConvertException("Erreur sur les types des arguments envoyés au programme.\nMerci de bien respecter l'ordre :\ndouble int double");
    		}
    	}
    	
    	//main
    	public static void main(String[] args)
    	{
    		System.out.println("\n" + nomDuProgramme + "\n");
    		
    		if(args.length == 3)
    		{
    			try
    			{
    				new Convertisseur(args);
    				new Verif(tempDepart, pas, tempFin);
    				System.out.println("TABLE DE CONVERSION");
    				System.out.println("-----------------------------------------------------------");
    				System.out.println("\tCelsius\t\t|\tFarenheit");
    				System.out.println("-----------------------------------------------------------");
    				
    				double  tempActuel = tempDepart;
    				double farenheit;
    				while(tempActuel <= tempFin)
    				{
    					farenheit = Convertion.convertir(tempActuel);
    					
    					System.out.print("\t");
    					if(tempActuel < 10)
    						System.out.print("  ");
    					else if(tempActuel >= 10 && tempActuel < 100)
    						System.out.print(" ");
    					System.out.print(tempActuel + "\t\t|\t");
    					if(farenheit < 10)
    						System.out.print("  ");
    					else if(farenheit >= 10 && farenheit < 100)
    						System.out.print(" ");
    					System.out.println(farenheit);
    					
    					tempActuel += pas;
    				}
    			}
    			catch(ConvertException ce)
    			{
    				System.out.println(ce.getMessage());
    			}
    		}
    		else
    		{
    			System.out.println("Veuillez passer des arguments au programme sur le modèle suivant : ");
    			System.out.println("température de départ pas température d'arrivée");
    			System.out.println("Où température de départ et température d'arrivée sont des double et pas un int");
    		}
    		
    		System.out.println("\nFIN DU PROGRAMME");
    		
    	}
    	
    }
    


    Verif.java
    public class Verif //sert à lever les exceptions en cas d'impossibilités.
    {
    	public Verif(double tempDepart, int pas, double tempFin) throws ConvertException
    	{
    		if(tempDepart > tempFin)
    			throw new ConvertException("Température de départ supérieure à la température d'arrivée");
    		if(tempFin - tempDepart < pas)
    			throw new ConvertException("Le pas est supérieur à l'écart de température demandé");
    	}
    }
    


    Convertion.java
    package tp1;
    
    public class Convertion //calcule les degrés farenheit à partir des degrés Celsius
    {
    	//Méthodes
    	
    	public static double convertir(double A)
    	{
    		A = 9/5 * A + 32;
    		return arrondi(A, 1);
    	}
    	
    	public static double arrondi(double A, int B) 
    	{
    		return (double) ( (int) (A * Math.pow(10, B) + .5)) / Math.pow(10, B);
    	}
    
    }
    


    ConvertException.java
    package tp1;
    
    public class ConvertException extends Exception
    {
    	public ConvertException(String message) //constructeur de notre exception
    	{
    		super(message); //appelle le constructeur de la class mère en lui envoyant le message.
    	}
    }
    


    Encore merci d'avoir prit le temps de lire tout cela ;)
    • Partager sur Facebook
    • Partager sur Twitter
      15 octobre 2008 à 18:29:41

      Mhh selon moi il y a quelques erreurs dans la manière de structurer ton code. Il devrait y avoir 3 classes : Convertisseur, ConvertException, Application.

      La classe Application contient la méthode main.
      La classe Convertisseur contient le constructeur et les méthodes de conversion (un convertisseur convertis, c'est logique).
      Et la classe ConvertException, bref ça c'est bon.

      Ton constructeur de Convertisseur prends toujours trois paramètres, alors autant le définir comme ça. C'est dans ton main que tu feras new Constructeur(args[0],args[1],args[2]).

      Dans le même temps, c'est plutôt dans la constructeur de ton convertisseur que tu vas vérifier la compatibilité.

      Voilà, désolé si c'est un peu décousu.

      Bon courage,

      Corentin
      • Partager sur Facebook
      • Partager sur Twitter

      TP1: Convertisseur

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown