La création d'un objet comme une Boite est plus complexe que celle d'une variable de type primitif : on fait appel pour cela à une méthode appelée constructeur de la classe.
//fichier Boite.java class Boite{ int profondeur,largeur,hauteur; boolean pleine; Boite(int p,int l,int h, boolean etat){ profondeur=Math.abs(p); //le champ profondeur de l'objet construit sera égal à la valeur absolue du premier paramètre. largeur=Math.abs(l; // de même pour les autres hauteur=Math.abs(h); // dimensions pleine=etat; //la valeur du champ pleine sera égal au dernier paramètre, booléen. } }
Un des rôles du constructeur est de s'assurer que les champs de l'objet sont correctement initialisés.
Le constructeur de Boite doit donc fixer les valeurs de profondeur, largeur et hauteur, ainsi que celle de la variable pleine.
Le constructeur défini dans le code ci-dessus prend 4 paramètres, chacun permettant de fixer la valeur d'un champ.
( On utilise Math.abs pour être sûr que la boîte ait des dimensions positives, même dans l'éventualité où une valeur négative serait passée en paramètre - il faut toujours se méfier des utilisateurs!)
On peut maintenant créer un exemplaire d'objet de la classe Boite, par exemple dans un programme :
//fichier Cree1boite.java class Cree1boite{ public static void main(String[] args){ Boite maboite=new Boite(200,100,50,true);// appelle le constructeur de la classe Boite pour construire une boite de dimensions 200 x 100 x 50 pleine, appelée maboite. System.out.println("profondeur: "+maboite.profondeur); // affiche la valeur du champ profondeur de maboite System.out.println("largeur: "+maboite.largeur); // affiche la valeur du champ largeur de maboite System.out.println("hauteur: "+maboite.hauteur); // affiche la valeur du champ hauteur de maboite System.out.println("pleine: "+maboite.pleine); // affiche l'état de remplissage de maboite System.out.println("En résumé j'ai construit une boîte de dimensions "+maboite.largeur+"x"+maboite.hauteur+"x"+maboite.profondeur+" qui est "+(maboite.pleine?"pleine":"vide")); }
Comme pour le moment nous plaçons toutes nos sources et toutes nos classes dans le même répertoire, la classe Boite peut être définie dans un fichier et utilisée par une classe définie dans un autre fichier. Quand on compilera Cree1boite.java, Boite.java sera compilé également. En exécutant Cree1boite on constate qu'une boite a bien été créée.