Nous allons ici attaquer une partie qui touche plus le coté objet de java.
Au lieu de partir dans des explications tordues, je vais repartir dans une explication imagée.
Je veux, par le biai d'un programme, la gestion d'une blibiothéque pour permettre a une biblothéquaire d'avoir un certain nombre d'informations sur ces livres.
Pour cela, je vais modéliser un livre. Modéliser, c'est quoi? Grossiérement, c'est informatiser un objet, ou une situation concrete.
Pour mon livre, je vais dire quoi? et bien qu'il as un titre, un auteur, une année de parution et pourquoi pas une maison d'edition.
Un objet est ainsi le regroupement de plusieurs informations. Ces informations peuvent se présentée sous différentes formes. Elles peuvent etre un entier, une chain de caractére, un boolean ( <- variable pouvant prendre pour valeur "Vrai" ou "Faux" ), ....
Ces différentes formes sont des type de variable. en voici quelques exemples.
"3" est un entier.
"1,3" est une variable décimal.
"a" est un caractére.
"coucou" est une chaine de caractére
"vrai" est un booléan
...
Il en existe beaucoup ( des entier court, long, signé ou non , etc, ... ) mais je partirais pas dans le détail, car ce n'est pas la finalité que je veux donner a ce tuto.
Revenons a nos livre.
Le titre est une chaine de caractére.
L'auteur est une chaine de caractére.
Son année de parution est un entier.
Enfin, la bibliothéquaire veut savoir si oui u non il est emprunté, nous rajouerons donc une variable boolean qui nous informera sur cette état.
Ainsi, mon objet livre va resemblé a ceux-ci :
Code PHP:
class Livre { String titre; String auteur; Int anneeParution; Boolean emprunter; }
|
String désigne un chaine de caractére, Int un entier, et boolean, et bien une valeur booleane...
Nous avons la structure d'un objet de définit, mais pas d'objet en soit. Il va nous falloir le construire. Pour cela nous devons faire appel a une fonction particuliére appelé "Constructeur".
Code PHP:
class livre { String titre; String auteur; Int anneeParution; Boolean emprunter;
public Livre(String titre_donne, String auteur_donne , Int anneeParution) { this.titre=titre_donne; this.auteur=auteur_donne; this.anneeParution=anneeParution; this.emprunter=false; } }
|
Petite explication de ce bout de code.
 | Citation |  |
| | |
| | | | public Livre(String titre_donne, String auteur_donne , Int anneeParution) {
....
} | |  | |  |
|
Ceux-ci est le bloc ou se trouve un constructeur de mon objet livre, car il est seulement déclarer en public, et il porte le meme nom que mon objet.
Tout la premiere ligne s'appelle la signature d'une fonction. Elle nous informe que ce qu'as besoin la fonction pour opérer.
Ainsi, pour creer mon livre, je dois lui donner une chaine de caractére qui sera son titre en premier, puis une autre pour donner le nom de l'auteur, et enfin un entier qui sera son année de parution. Nous concidérons que sans l'une de ses information, l'objet ne peut etre creé. Imaginez un livre sans titre,....
 | Citation |  |
| | |
| | | |
this.titre=titre_donne;
this.auteur=auteur_donne; | |  | |  |
|
Ici, le "this" renvoi a l'objet que nous sommes entrain d'utiliser. Ainsi, vous remarquerez que pour instantier le titre de mon nouveau livre j'utilise this.titre.
 | Citation |  |
| | |
| | | |
this.anneeParution=anneeParution; | |  | |  |
|
Le this prends toute son importance ici. En effet, comment pourrati on sans ce dernier différencier ma variable anneParution de mon objet de celle donnée dans la signature de ma fonction qui porte le meme nom?
 | Citation |  |
| | |
| | | |
this.emprunter=false; | |  | |  |
|
Ici, nous définnissons que par défault, lors de la création d'un livre, qu'il n'est pas emprunter.
C'est bien beau tout ca, mais comment je fais pour m'en servir de mon livre? Je n'ai encore rien creer, ou vais-je faire appelle a mon constructeur?
Nous voila arriver au prémice de la programmation dite "objet".
Voici un bout de code qui va creer un livre.
Code PHP:
class gestionLivre { public static void main ( String [] arg) {
Livre livreA = new Livre("Prince du Chaos","Roger Zelazny",1991); // Je fais ici appel a //mon constructeur de mon objet Livre.
Livre livreB = new Livre("Les neufs Princes d'Ambre","Roger Zelazny",1988); // Ici un deuxiéme livre.
} }
class Livre { String titre; String auteur; Int anneeParution; Boolean emprunter;
public Livre(String titre_donne, String auteur_donne , Int anneeParution) { this.titre=titre_donne; this.auteur=auteur_donne; this.anneeParution=anneeParution; this.emprunter=false; } }
|
Le Code parle de lui-même.
Cependant, je ne peux pas encore faire grand chose avec mes livres. ma bibliohéquaire aimerait bien pouvoir changer leur etat, pour les mettre en emprunter, ou non.
Pour cela, nous allons utilisé deux méthodes, l'une pour bien comprendre comment fonctione un objet, et l'autre pour voir l'utilisation de fonction aussi appellé méthodes....
Pour changer l'etat, nous allons creer deux fonctions ( ou méthodes ) qui vont s'occuper de ca pour nous. La premier mettra le livre en emprunter, et l'autre en rendue.
Code PHP:
public void emprunterLivre(){ this.emprunter=true; }
public void rendreLivre(){ this.emprunter=false; }
|
Le void indique que la fonction ne renvoie pas de valeur.
Ainsi, pour changer l'etat de mon premier liver ( LivreA ), voila a quoi resemblera notre code.
Code PHP:
class gestionLivre { public static void main ( String [] arg) {
Livre livreA = new Livre("Prince du Chaos","Roger Zelazny",1991); // Je fais ici appel a //mon constructeur de mon objet Livre.
Livre livreB = new Livre("Les neufs Princes d'Ambre","Roger Zelazny",1988); // Ici un deuxiéme livre.
LivreA.emprunterLivre();
} }
class Livre { String titre; String auteur; Int anneeParution; Boolean emprunter;
public Livre(String titre_donne, String auteur_donne , Int anneeParution) { this.titre=titre_donne; this.auteur=auteur_donne; this.anneeParution=anneeParution; this.emprunter=false; }
public void emprunterLivre(){ this.emprunter=true; }
public void rendreLivre(){ this.emprunter=false; } }
|
Ici, je change l'etat que de mon livreA, pas de LivreB.
Vous remarquerez aussi l'utilisation du "."
Maintenant notre deuxiéme méthiode pour arrive a nos fins.
Cette méthodes est plus simples, bienque moin fiables lorsque l'on dévelloppe proprement.
Nos variables sont pour le moment accéssibles depuis l'extérieur de notre class Livre. il nous est ainsi possible de voir, et modifier nos variable depuis l'extérieur de notre class Livre.
Ainsi le code suivant pourrait suffir.
Le void indique que la fonction ne renvoie pas de valeur.
Ainsi, pour changer l'etat de mon premier liver ( LivreA ), voila a quoi resemblera notre code.
Code PHP:
class gestionLivre { public static void main ( String [] arg) {
Livre livreA = new Livre("Prince du Chaos","Roger Zelazny",1991); // Je fais ici appel a //mon constructeur de mon objet Livre.
Livre livreB = new Livre("Les neufs Princes d'Ambre","Roger Zelazny",1988); // Ici un deuxiéme livre.
LivreA.emprunter=true;
} }
class Livre { String titre; String auteur; Int anneeParution; Boolean emprunter;
public Livre(String titre_donne, String auteur_donne , Int anneeParution) { this.titre=titre_donne; this.auteur=auteur_donne; this.anneeParution=anneeParution; this.emprunter=false; }
}
|
Je ne recommande cepandant pas cela, car le jour ou vous décidez de changer le nom de votre variable, tout votre code est a refaire, alors que dans la premiére méthode vous n'auriez eu qu'a changer une ligne, celle de votre fonction.
Pour finir avec les objets, je vais apporter une précision importante. un objet peut etre composé d'autre objet. Il peut effectivement avoir en attribut un autre objet, voir meme un ensemble d'objet.
Dans notre exemple, nous pourrions vouloir avoir le detail du livre en y mettant des pages qui serait un objet de type Page avec comme attribut un numéros de page, et un texte. ou encore, nous pourrions vouloir gere plusieurs bibliothéques de livre....
Il existe encore beaucoup d'élément concernant les objets ( héritage, polymorphisme, ... ) mais tout cela rentre dans un domaine un peu plus avancé de Java, et je ne veux ici que fournir une initiation aux débutants.
Enfin, pour finir avec les objets, il faut savoir que java est truffé d'objets déja codé. Exemple, au début de ce tuto, j'utilise une fonction qui me permet d'afficher un message ( "System.out.println()"), et bien cette fonction est tiré d'un objet déja présant dans java.
Il existe beaucoup d'objet, servant tous a quelques chose de précis. Si vous voulez le détail chercher dans l'API de java.