Académique Documents
Professionnel Documents
Culture Documents
Chapitre 07
La Programmation Orientée Objet
La programmation orientée objet se base sur la notion d’objet qui représente son élément de base.
Un objet peut être assimilé en la combinaison de trois choses :
- Un état : des variables dont les valeurs donnent l’état de l’objet. Ces variables peuvent changer
durant le cycle de vie de l’objet.
Exemple 1 : un étudiant pourrait être caractérisé par :
Après l’achat de l’appareil, ces variables (état) vont changer. En ajoutant des données (vidéos,
photos, etc.) la capacité de stockage va diminuer. En mettant à jour votre téléphone, vous pouvez
passer d’une version d’OS à une autre.
- Des comportements : des fonctionnalités offertes par l’objet. En d’autres termes ce que ou ce
qu’on peut faire avec l’objet.
Exemple 1 : un étudiant pourrait
- Une identification : l’identification permet de différencier un objet par rapport aux autres
objets de même type. L’identification est un nom associé à l’objet lors de sa création dont le
but de le gérer (accéder à l’état ou au comportement).
Exemple 2
phone1 phone2
L’autre pilier de la programmation objet est la notion de classe. Une classe est une collection
(ensemble) d’objet ayant les mêmes propriétés (état, caractéristiques) et fournissant les mêmes
comportements (fonctionnalités). Techniquement, Les classes sont constituées de champs et de
méthodes. Les champs représentent les caractéristiques des objets dont les valeurs fournissent
l’état. Les méthodes représentent les fonctionnalités offertes par un objet.
II. Classe :
La création d’une classe passe par la déclaration de la classe elle-même et de tous les éléments la
constituant. Ci-dessous la représentation en UML d’une classe. Elle est constituée de 3
compartiments :
- Le nom
- Les propriétés
- Les méthodes
1. Déclaration
La déclaration d’une classe se fait en utilisant le mot-clé class suivi du nom de la classe puis d’un
bloc de code délimité par les caractères '{' et '}'.
La syntaxe générale de déclaration d’une classe est donc la suivante1 :
1
Les crochets ([ et ]) indiquent que l’élément est optionnel.
public class SmartPhone { La classe doit être enregistrer dans un fichier qui
porte le nom : SmartPhone.java
}
2. Les champs
Les champs, appelés aussi variables membres, de la classe sont définis selon la syntaxe suivante :
Exercice 1 : Écrire une classe représentant les nombres rationnels nommée Rationnel. Un
rationnel est caractérisé par deux entiers représentant le numérateur et le dénominateur.
Remarque : Les champs d’une classe sont automatiquement initialisés aux valeurs par défaut s’ils
ne sont pas initialisés par le programmeur. Les valeurs par défaut sont les mêmes que celle vue
précédemment et se résume dans le tableau ci-dessous.
Type Valeur par défaut
Les entiers 0
Les réels 0.0
Les booléens false
Les caractères '\u0000'
Les types par référence null
3. Les méthodes
Les méthodes sont simplement des fonctions ou procédures définies à l’intérieur d’une classe. Une
méthode est un bloc d’instructions nommé qui peut (ou non) retourner une valeur représentant le
résultat. Elles sont en général utilisées pour manipuler les champs de la classe. La syntaxe de
déclaration d’une méthode est comme suit :
}
Méthode ne retournant pas de valeur (void) avec deux
paramètres de type String.
public class SmartPhone { Méthode pour afficher les propriétés d’un smartphone.
private int capaciteStockage;
private String oS; Ne retourne rien et affiche à l’écran les champs du
private int nbJoursUtilisation = 0; smartphone.
private final int dureeDeVie = 3650;
Définition de la surcharge :
La surcharge d’une méthode consiste en la création de deux ou plusieurs méthodes portant le même
nom mais ayant des paramètres différents. Le type de retour n’intervient pas dans l’opération de
surcharge.
public SmartPhone(){ }
Nous avons déjà utilisé des classes prédéfinies en java tel que le Scanner. L’utilisation d’une classe
respecte les étapes suivantes :
• La déclaration de variable ;
• La création de l’objet ;
• L’utilisation de l’objet.
1. Déclaration de variable
Les variables objet sont des variables de type référence qui diffèrent des variables classiques par
le fait que la variable ne contient pas directement les données, mais seulement une référence sur
l’emplacement dans la mémoire où se trouvent les informations. Comme pour toutes les variables,
elles doivent être déclarées avant leur utilisation. La déclaration se fait de manière identique à celle
d’une variable classique (prenez exemple avec la classe String ou Scanner).
typeVariable nomVariable ;
2. Création de l’objet
La seconde étape consiste à créer l’instance de la classe à travers le mot-clé new. Il est suivi d’un
des constructeurs de la classe. Son rôle est de faire l’allocation mémoire nécessaire pour le
stockage de l’objet. La syntaxe de cette opération est comme suit :
Les deux étapes précédentes peuvent être combinées en une seule ligne.
3. Utilisation de l’objet
Pour utiliser l’objet que nous venons de créer dans l’étape précédente, nous devons utiliser
l’opérateur « . ». Cet opérateur nous donne accès au contenu (attributs et méthode) de notre objet.
La syntaxe d’utilisation est comme suit :
nomVariable.nomMethode([paramètres]);
.
nomVariable.nomAttribut
Cependant, il y a des restrictions relatives à cette utilisation. Ces restrictions sont dues aux
modificateurs de visibilité utilisés :
- Si l’attribut ou la méthode est privé, alors vous ne pouvez pas y accéder à l’extérieur de la
classe.
- Si l’attribut ou la méthode est publique, alors vous pouvez y accéder à l’intérieur ou à
l’extérieur de la classe.
package cours.ch7;
public Etudiant(){}
package cours.ch7;
e4.afficher();
e2.setPrenom("Marc");
e2.setNumeroInscription(456789);
e2.afficher();
Exercice 4 : Écrire une classe nommée TestRationnel pour tester la classe Rationnel que nous
avons écrit précédemment.
- Créer 4 rationnels en utilisant différents constructeurs : R1, R2, R3 et R4
- Modifier la valeur du numérateur de R1 et R2
- Modifier la valeur de dénominateur de R3 et R4.
- Afficher les rationnels R1, R2, R3 er R4.
Le mot clé this sert à référencer dans une méthode l'instance de l'objet en cours d'utilisation. this
est un objet qui est égal à l'instance de l'objet dans lequel il est utilisé. Il peut être utilisé dans
divers contexte :
Appel aux accesseurs des attributs de la classe Etudiant dans la méthode afficher de la classe
Etudiant. L’utilisation n’est pas obligatoire, mais elle est fortement recommandée.
V. L’encapsulation
Définition de l’encapsulation 2:
C’est le mécanisme consistant à rassembler les données et les méthodes au sein d'une structure
en cachant l'implémentation de l'objet, c'est-à-dire en empêchant l'accès aux données par un autre
moyen que les services proposés. L'encapsulation permet donc de garantir l'intégrité des données
contenues dans l'objet.
Exercice 8 : Si ce n’est pas déjà fait, appliquer le principe d’encapsulation sur la classe Rationnel.
2
https://www.commentcamarche.net/contents/808-poo-encapsulation-des-donnees
Les membres statiques sont des champs ou méthodes qui sont accessibles par la classe elle-même
ou par toutes les instances de la classe. Ils sont utilisés lorsque l’information à gérer est relative à
la classe elle-même et non à une instance particulière.
Les membres (attribut et méthode) statiques, appelés aussi membre de classe, existent en un
exemplaire unique qui est partagé entre toutes les instances (une sorte de variable globale). C’est-
à-dire toutes les instances voient la même valeur du membre statique et que toutes modifications
de cette valeur est visible par toutes les instances.
Pour utiliser un membre statique, on utilise le nom de la classe car toutes les instances fournissent
le même résultat. Cependant, lors de la définition des méthodes statiques, il faut faire attention à
la règle suivante :
Une méthode statique ne peut utiliser que des variables statiques et non des
variables d’instance.
Nous avons travaillé dans le chapitre 3 avec les méthodes statiques dans la classe Math et la classe
String.
package cours.ch7;
package cours.ch7;
import java.sql.ResultSet;
package cours.ch7;
//Modifier le dénominateur de r2
r2.setDenominateur(4);
//Afficher r2
r2.afficher();
//Afficher r3
r3.afficher();