Commentaires vites fait
1) Toujours travailler avec des packages (directive package en début de classe), çà permet de garder le code clair. D'ailleurs, pas certains que toutes les jvm actuelles acceptent encore de compiler du code n'ayant pas de directive "package" (sun essaie de défaire les gens de cette mauvaise habitude)
2) Allocation dynamique: ton code répond à la question, la présence de "new" montre bien que tu crée dynamiquement tes données 
3) Convention: un nom de méthode ou de propriété commence toujours avec une minuscule en java (lowerCamelCase), c'est une convention que tu pourra remarqué appliquée partout dans les librairies java que tu peux trouver en ligne
4) Méthode statique: toutes tes méthode dans ChgBase sont statique, il n'y a aucune problème en soit puisque ce sont des méthode n'ayant pas besoin de l'état de l'objet. Par contre, par convention aussi, on utilise pas un nom d'instance pour accéder à une méthode statique, çà évite la confusion. Donc dans ton main, remplacer
System.out.println(cb.Bdep2Barr(c,10,1));
par
System.out.println(ChgBase.Bdep2Barr(c,10,1));
Tu notera là l'intérêt de commencer les noms de classes par une majuscule et les noms de méthodes / variables par des minuscule. Juste avec la première lettre et cette convention on sait qu'on a affaire à une classe et pas une instance. (cb, x, trucMuch et bidule sont des instances, Machin et Bazar sont des classes, yopLa() et faitCela() sont des méthode. Pas besoin de lire beaucoup de code pour le savoir, vivent les conventions ^^)
5) les static final: Les propriétés finale d'une classe sont pas convention toute en majuscules avec les éléments séparés par des _ Dans ton cas, il serait mieux que BMAX soit remplacé par B_MAX (note certains pourraient argumenter là dessus en disant que BMAX est aussi correct), voir même par BASE_MAX qui est plus explicite 
6) ton exception, pour la propreté, dans son nom de classe devrait porter le nom "Exception", histoire que en voyant le fichier on sait ce que c'est. Exemple: public class ConvertionException extends Exception
7) Souvent, pour les Exception, on crée aussi des constructeur qui acceptent un "message" et éventuellement (çà dépend du type d'Exception) une cause, que tu peux passer au constructeur parent:
public ConvertionException(String message, Throwable cause){super(message,cause);}
Le message est important pour les autres développeur, histoire d'avoir une idée de ce qui foire quand on reçois une exception. La cause est importante si tu veux pouvoir déclencher ton Exception à cause d'une autre Exception
Partager