Le Les Langage classes Java
Les classes
n
n
n
Toutes nos voitures ont les mêmes attributs u
marque
u
prix
u
couleur
et le même comportement : u
Démarrer
u
Arrêter
u
faireLePlein
La «CLASSE» des voitures
Qu’est ce qu’une classe
n
Une classe décrit le domaine de définition d’un ensemble d’objets (famille d’objets),
n
Elle regroupe un ensemble d’attributs et de méthodes.
Voiture
Classe des voitures Le formalisme utilisé ici est celui de la méthode UML:
marque prix couleur démarrer stopper rouler faireLePlein
Classe et objet
n
Une classe est un moule à fabriquer des objets. Un objet est une instance d'une classe.
Voiture marque prix couleur démarrer stopper rouler faireLePlein
Instance de classe
Les messages
n
Toute manipulation d’objet s’effectue à travers les comportements disponibles et uniquement à travers ses comportements.
rouler
Les messages
n
Le fait d’appuyer sur l’accélérateur demande l'activation de l’opération correspondante
n
Une telle requête est appelé "un message"
n
La réception d'un message par un objet provoque la recherche de la méthode à appliquer.
n
Cette recherche a lieu dans la classe.
Recherche de méthode
recherche de la méthode rouler
maVoiture
rouler
Voiture rouler ...
Méthode pour rouler
Un premier exemple
public class Voiture { // attributs private int compteur ; private float reservoir ; // méthodes public boolean rouler ( int nbrKlm ) { for ( int i = 0 ; i < nbrKlm ; i++ ) if ( reservoir != 0 ) { compteur++ ; reservoir -= 0.1f ; } else { System.out.println ("panne"); return false ; } return true ; } public void faireLePlein () { reservoir = 50 ; } public void afficher () { System.out.println( compteur + " " + reservoir ) ; } }
Commentaires
n
n
n
Le mot réservé « class » permet de créer une classe qui va contenir : u
des attributs :
private int compteur;
u
des méthodes :
public boolean rouler ( int nbrKlm );
private et public sont des attributs d’accès qui vont permettre de gérer l’encapsulation : u
private : non accessible -> encapsulé
u
public : accessible -> interface de la classe
Remarque : Ne vous focalisez pas sur les éléments syntaxiques. Ils sont peu importants pour le moment. Le principal étant de bien appréhender le concept.
Encapsulation
public class Test { public static void main ( String args [] ) { Voiture v1 = new Voiture () ; v1.fairePlein() ; v1.rouler( 10 ); v1.afficher () ; } } n
J’aimerais vérifier l’état de mon réservoir avant de rouler : if ( v1.reservoir > 10 ) v1.rouler ( 50 ) ;
n
Erreur le réservoir est encapsulé il n’est pas accessible. Comment faire ????
Encapsulation
n
L’encapsulation permet de protéger les données.
n
Mais cela nécessite de prévoir des services d’accès aux données : les accesseurs : public class Voiture { private float reservoir ; public float getReservoir() { return reservoir ; } … }
n
Maintenant je peux tester l’état de mon réservoir : if ( v1.getReservoir() > 10 ) v1.rouler ( 50 ) ;