TD6 Java avancé : types génériques et tests

vendredi 13 novembre 2020
par  Emmanuel Adam
popularité : 3%

Exercice 1 : type générique

La fonction suivante retrouve le max d’un tableau d’entier

  1. static Integer max(Integer[] tab)
  2. {
  3.      Integer max = tab[0];
  4.      for(int i=1; i<tab.length; i++)
  5.      {
  6.         if(tab[i]>max) max = tab[i];
  7.      }
  8.      return max;
  9. }

Modifier cette fonction pour qu’elle s’applique à des tableaux de tout type numérique.


Créez une classe Triplet qui contient 3 champs v0, v1, v2.

  • Créez un constructeur par défaut et un constructeur initialisant les 3 champs
  • Créez les getter et setter à ces champs
  • Surchargez la fonction toString() pour retourner le triplet sous la forme d’un texte.
    Les types de v0, v1 et v2 sont génériques !

Dans une classe de test, créez la fonction getInfo qui prend un tableau de valeurs numériques en paramètres et retourne un triplet contenant le max, le min et la moyenne des valeurs.

Tests

  1. Ajouter des assertions permettant de déclencher des erreurs en cas d’incohérence (tab.length<=0 dans la fonction getInfo).....)
  2. testez les assertions

Fichier de logs

Enregistrer les problèmes dans un fichier de logs...
Ici un log enregistrant des messages de niveau "Info"

  1. class TD5{
  2.  
  3. static  Logger  logger = Logger.getLogger("logsTD5");
  4.        
  5. public TD5()
  6. {
  7.      logger.setLevel(Level.FINEST);
  8.      Handler fh;
  9.      try {
  10.           fh = new FileHandler("./TD5.xml", false);
  11.           logger.addHandler(fh);
  12.      }
  13.      catch (SecurityException e) { e.printStackTrace(); }
  14.      catch (IOException e) { e.printStackTrace(); }
  15. }

Ajouter des logs à différents endroits et vérifier l’écriture dans le fichier TD5.xml....
(cf. cours sur les tests)

Utilisation du log :

   logger.log(Level.INFO, "attention, la liste est nulle");
  ...
  logger.entering("td5", "getInfo", tab);