I. Quelques rappels▲
Quelques renvois ici pour expliquer certains fondamentaux que je ne traiterai pas dans cet article :
- POO : Programmation Orientée Objet ;
- Comment compiler et exécuter mon application Java ?
À noter que pour cet article, JDK 1.5 ( 5.0 ou TIGER ) doit être installé et fonctionner.
II. Premier pas▲
Commençons par créer une classe la plus simple qui soit, en créant le fichier MoyenDeTransport.java (veiller à bien respecter la casse) dans un répertoire de travail D:\data\workspace\learningjava1, et pour la suite de l'article nous nommerons ce répertoire %WORK%
Puis ajouter le code suivant dans le fichier :
public
class
MoyenDeTransport {
}
Ensuite compiler le fichier en vous plaçant dans %WORK% :
javac MoyenDeTransport.java
Le résultat de la compilation est un fichier compilé nommé MoyenDeTransport.class généré dans le répertoire %WORK% et représentant une classe JAVA nommée MoyenDeTransport.
III. Constructeur(s) de classe▲
Un constructeur est une méthode particulière dans une classe, le constructeur porte le même nom que la classe, et permet de créer une instance de cette classe (allocation mémoire).
Une classe peut avoir plusieurs constructeurs, qui seront différenciés par leurs paramètres.
Un constructeur vide existe toujours dans une classe, ainsi dans l'exemple précédent ce constructeur implicite n'est pas présent dans le code, mais existe pour créer une instance de la classe.
Un constructeur sert également à initialiser des propriétés/comportements dans une classe (nous aborderons ce point plus loin).
Ajoutons maintenant le code suivant et compilons :
public
class
MoyenDeTransport {
// "Le" constructeur vide , implicite en JAVA.
public
MoyenDeTransport
(
) {
System.out.println
(
"Constructeur vide"
);
}
// Un 2e constructeur avec 1 paramètre
public
MoyenDeTransport
(
String pname) {
System.out.println
(
"Constructeur avec 1 paramètre"
);
}
// Un 3e constructeur avec 2 paramètres
public
MoyenDeTransport
(
String pname, String ptype) {
System.out.println
(
"Constructeur avec 2 paramètres"
);
}
}
Créons maintenant une classe de test pour utiliser notre classe MoyenDeTransport :
public
class
Test {
// La méthode Main :
// C'est une méthode spéciale, elle est utilisée lors de
// l'exécution de la classe par la commande : java Test
public
static
void
main
(
String[] args) {
// On crée ici 3 instances de la classe MoyenDeTransport
MoyenDeTransport vehicule1 =
new
MoyenDeTransport
(
);
MoyenDeTransport vehicule2 =
new
MoyenDeTransport
(
"MERCEDES"
);
MoyenDeTransport vehicule3 =
new
MoyenDeTransport
(
"CESNA"
,"Avion"
);
}
}
Compiler cette classe de test en veillant bien à indiquer le CLASSPATH, car nous dépendons maintenant d'une autre classe (si vous suivez bien, le ./ permet d'indiquer le répertoire courant pour trouver MoyenDeTransport) :
javac -classpath ./ Test.java
Exécuter la classe, le résultat doit être le suivant :
D:\data\workspace\learningjava1>
java -classpath ./ Test
Con
structeur vide
Con
structeur avec 1 paramètre
Con
structeur avec 2 paramètres
IV. Les propriétés dans une classe et notion d'encapsulation▲
Ajoutons maintenant 2 propriétés name et type à notre classe MoyenDeTransport et des méthodes pour modifier et récupérer ses propriétés (c'est ce qu'on appelle l'encapsulation).
public
class
MoyenDeTransport {
private
String name;
private
String type;
// "Le" constructeur vide , implicite en JAVA.
public
MoyenDeTransport
(
) {
System.out.println
(
"Constructeur vide"
);
}
// Un 2e constructeur avec 1 paramètre
public
MoyenDeTransport
(
String pname) {
System.out.println
(
"Constructeur avec 1 paramètre"
);
}
// Un 3e constructeur avec 2 paramètres
public
MoyenDeTransport
(
String pname, String ptype) {
System.out.println
(
"Constructeur avec 2 paramètres"
);
}
// Les accesseurs (getter ou setter) permettent de modifier ou récupérer les attributs d'une classe
public
String getName
(
) {
return
name;
}
public
void
setName
(
String name) {
this
.name =
name;
}
public
String getType
(
) {
return
type;
}
public
void
setType
(
String type) {
this
.type =
type;
}
}
Puis ajoutons un peu de code à notre classe Test pour voir le résultat :
public
class
Test {
// La méthode Main :
// C'est une méthode spéciale, elle est utilisée lors de
// l'exécution de la classe par la commande : java Test
public
static
void
main
(
String[] args) {
// On crée ici 3 instances de la classe MoyenDeTransport
MoyenDeTransport vehicule1 =
new
MoyenDeTransport
(
);
MoyenDeTransport vehicule2 =
new
MoyenDeTransport
(
"MERCEDES"
);
MoyenDeTransport vehicule3 =
new
MoyenDeTransport
(
"CESNA"
,"Avion"
);
// On affecte ici "RENAULT" à la propriété name de l'instance vehicule1
vehicule1.setName
(
"RENAULT"
);
System.out.println
(
vehicule1.getName
(
));
System.out.println
(
vehicule2.getName
(
));
System.out.println
(
vehicule3.getType
(
));
}
}
Recompiler la classe MoyenDeTransport.java et Test.java et exécuter la classe Test, le résultat doit être :
D:\data\workspace\learningjava1>java -classpath ./ Test
Constructeur vide
Constructeur avec 1 paramètre
Constructeur avec 2 paramètres
RENAULT
null
null
On remarque ici l'affichage de 2 valeurs nulles, car pour vehicule2 et vehicule3 ni le name, ni le type n'ont été renseignés.
Voyons comment les initialiser en utilisant les constructeurs de la classe MoyenDeTransport :
public
class
MoyenDeTransport {
private
String name;
private
String type;
// "Le" constructeur vide , implicite en JAVA.
public
MoyenDeTransport
(
) {
// this(0...N paramètres) , permet d'invoquer le constructeur selon son nombre de paramètres
this
(
"default"
);
}
// Un 2e constructeur avec 1 paramètre
public
MoyenDeTransport
(
String pname) {
this
(
pname, "default"
);
}
// Un 3e constructeur avec 2 paramètres
public
MoyenDeTransport
(
String pname, String ptype) {
// this : une référence sur l'objet courant
this
.name =
pname;
this
.type =
ptype;
}
// Les accesseurs (getter ou setter) permettent de modifier ou récupérer les attributs d'une classe
public
String getName
(
) {
return
name;
}
public
void
setName
(
String name) {
this
.name =
name;
}
public
String getType
(
) {
return
type;
}
public
void
setType
(
String type) {
this
.type =
type;
}
}
Recompiler la classe MoyenDeTransport.java et exécuter la classe Test
D:\data\workspace\learningjava1>javac -classpath ./ MoyenDeTransport.java
D:\data\workspace\learningjava1>java -classpath ./ Test
RENAULT
MERCEDES
Avion
V. Conclusion▲
Cet article en construction va évoluer pour essayer d'aborder les bases de la programmation objet en JAVA.
À venir…L'héritage…Les bienfaits de l'abstraction.