Les types définis par le programmeur

images/whitebelt.png

Nous avons vu que le mécanisme de la "classe" nous permettait de construire des types définis par le programmeur à partir de types primitifs ou d’autres types non-scalaires.

Par exemple on pourrait définit un type Prix qui nous permette de définir des contraintes plus sophistiquées qu’une simple valeur exprimée par un double :

Un code pour ce nouveau type pourrait ressembler à ceci:

// un vrai code "prix" sera plus complexe!
public class Prix {   // objet "valeur" immuable
   final java.math.BigDecimal valeur ;

   public Prix(java.math.BigDecimal val) {
      // on vérifie si non négatif sinon échec
      // on arrondi à deux chiffres après la virgule
   }
   public Prix(String val) {
      this(new java.math.BigDecimal(val)) ;
   }


   public Prix add(Prix autrePrix) {
      // crée un nouvel objet de type Prix
   }

   public Prix multiply(double facteur) {
      // on vérifie si facteur positif sinon échec
      // crée un nouvel objet de type Prix
   }
}

Il existe en Java de nombreux dispositifs pour faciliter la création de nouveaux types.