Les classes constituent l’outil principale de la Programmation orientée objet (la POO).
Je ne reviendrai pas sur l'histoire de la POO, la chose à retenir c'est que la POO est une façon de programmer, mais surtout une façon de penser et de concevoir une application. En soit elle aborde un problème de façon plus naturel en identifiant les informations qui vont circuler dans le programme, une fois les informations identifiées et organisées, on les définit en tant qu'objet. 1)
Si par exemple vous devez concevoir un système de gestion de contact, vous créerez un objet Contact qui disposera des informations utiles (Nom, prénom, etc…). Ces objets auront également des comportements (Enregistrer, effacer, etc…).
Une application en POO contient généralement un grand nombre d'objet. Chaque un de ces objets rempli des fonctions très spécifiques. Les objets peuvent également interagir entre eux de façon explicite 2) : Dans notre exemple de contact, nous pourrions utiliser un objet pour représenter les coordonnées d'un contact.
Cette façon de concevoir une application présente plusieurs avantages :
Bon comme on ne vit pas à Disney land, il convient de souligner les inconvénients :
En POO vous entendez souvent parler de 2 choses : classe et objet. C'est 2 notions sont très liées mais il ne faut pas les confondre, à savoir :
Le langage java est très fortement orienté objet. En effet, tout (enfin presque) est une classe. Si vous avez déjà saisi quelques scripts, vous avez sans le savoir déjà écrit des classes.
Définition d'une classe java :
public class NomClasse
{
// Corps de la classe
}
NomClasse, elle doit être déclarée dans un fichier NomClasse.java. A la compilation, vous obtiendrez un fichier NomClass.class…
Les différentes composantes d'une classe sont appelés membres, on trouve :
Les propriétés vont vous permettre de décrire les données disponibles dans un objet.
public class Auteur
{
/* =============== PROPRIETES === */
public String nom;
public String prenom;
public int anneeNaissance;
/** Méthode main, elle est placée ici pour
* pour des raisons purement pratique.
*/
public static void main( String args[] )
{
// Création d'une instance de la classe Auteur
Auteur a1 = new Auteur();
// Modification des propriétés
a1.nom = "Kerouac";
a1.prenom = "Jack";
// Affiche les propriétés 'nom' et 'prénom'
// séparées par un espace.
System.out.println(a1.nom +" " +a1.prenom);
}
}
L'accès aux membres d'une instance de classe se fait avec l'opérateur ., dans cet exemple il est utilisé pour affecter des valeurs :
a1.nom = "Kerouac"; a1.prenom = "Jack";Puis dans l'instruction pour l'affichage, il permet d'accéder à la la propriété :
System.out.println(a1.nom +" " +a1.prenom);
Mais quelle différente entre une variable et une propriété ?
Très bonne question de moi-même, et bien la propriété a une durée de vie étendue, elle sera disponible pendant toute la durée de vie de l'instance.
De ce fait, vous noterez que les propriétés de classes doivent être déclarées dans le corps de la classe.
public class Auteur
{
/* =============== PROPRIETES === */
public String nom;
public String prenom;
public int anneeNaissance;
// (...)
}
Comme pour les variables, on peut déclarer et affecter simultanément :
public class Auteur
{
/* =============== PROPRIETES === */
public String nom = "Deleuze";
public String prenom = "Gilles";
public int anneeNaissance = 1925;
// (...)
}
On trouve aussi dans la déclaration de nos propriétés la présence d'une indication de visibilité (ici c'est le mot-clef public). Nous verrons par la suite que les propriétés peuvent être :
Les méthodes sont utilisées pour définir des comportements à une classe : Traitement des données, affichage, etc…
Les méthodes vont généralement interagir avec l'instance via les membres de l'instance courante (propriétés et méthodes).
public class Auteur
{
/* =============== PROPRIETES === */
public String nom;
public String prenom;
public int anneeNaissance;
/* =============== METHODES === */
public void afficherAuteur(){
System.out.println(nom +" " +prenom);
}
}