Quelques notions sur les objets

Constructeurs

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.

Un constructeur d'une classe appelée Boite doit s'appeler Boite, il peut prendre ou non des paramètres, il n'a pas de valeur de retour. On l'utilise avec l'opérateur new pour créer un exemplaire d'objet de type Boite (le terme consacré pour désigner un tel objet est "instance de la classe Boite").
Par exemple :
//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"));
 
}
L'opérateur ".", placé à la suite du nom d'un objet, permet d'accéder à ses champs par leur nom

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.

Ecrire un constructeur pour la classe "Ami"
Ecrire un programme qui crée une instance de la classe Ami, puis qui affiche les valeurs des champs de cette instance, éventuellement dans des phrases.
 
Licence Creative Commons
licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé
Auteur : Nathalie Bonnin
Professeur de Physique, Chimie, Informatique au lycée La Martinière Monplaisir (Lyon 8ème)
Contact :
nathalie.bonnin (chez) scientillula.net
Licence Creative Commons
La totalité du contenu du site Scientillula.net appartient à Nathalie Bonnin et est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé