Initiation à la programmation orientée objet

Les objets contrôlent leur fonctionnement

L’un des objectifs de la programmation objet est de simuler, à l’aide d’un programme informatique, la manipulation des objets réels par l’être humain. Les objets réels forment un tout, et leur manipulation nécessite la plupart du temps un outil, ou une interface, de communication. Par exemple, quand nous prenons un ascenseur, nous appuyons sur le bouton d’appel pour ouvrir les portes ou pour nous rendre jusqu’à l’étage désiré. L’interface de communication est ici le bouton d’appel. Nul n’aurait l’idée de prendre la télécommande de sa télévision pour appeler un ascenseur. De la même façon, la préparation d’une omelette nécessite de casser des œufs. Pour briser la coquille d’un œuf, nous pouvons utiliser l’outil couteau. Un marteau pourrait être également utilisé, mais son usage n’est pas vraiment adapté à la situation. Comme nous le constatons à travers ces exemples, les objets réels sont manipulés par l’intermédiaire d’interfaces appropriées. L’utilisation d’un outil inadapté fait que l’objet ne répond pas à nos attentes ou qu’il se brise définitivement. Tout comme nous manipulons les objets réels, les applications informatiques manipulent des objets virtuels, définis par le programmeur. Cette manipulation nécessite des outils aussi bien adaptés que nos outils réels. Sans contrôle sur le bien-fondé d’une manipulation, l’application risque de fournir de mauvais résultats ou, pire, de cesser brutalement son exécution.

La notion d’encapsulation

Pour réaliser l’adéquation entre un outil et la manipulation d’un objet, la programmation objet utilise le concept d’encapsulation. Par ce terme, il faut entendre que les données d’un objet sont protégées, tout comme le médicament est protégé par la fine pellicule de sa capsule. Grâce à cette protection, il ne peut y avoir transformation involontaire des données de l’objet. L’encapsulation passe par le contrôle des données et des comportements de l’objet. Ce contrôle est établi à travers la protection des données (voir la section suivante), l’accès contrôlé aux données (voir la section «Les méthodes d’accès aux données») et la notion de constructeur de classe (voir la section «Les constructeurs»).La protection des données Le langage Java fournit les niveaux de protection suivants pour les membres d’une classe (données et méthodes) : • Protection public. Les membres (données et méthodes) d’une classe déclarés public sont accessibles pour tous les objets de l’application. Les données peuvent être modifiées par une méthode de la classe, d’une autre classe ou depuis la fonction main(). • Protection private. Les membres de la classe déclarés private ne sont accessibles que pour les méthodes de la même classe. Les données ne peuvent être initialisées ou modifiées que par l’intermédiaire d’une méthode de la classe. Les données ou méthodes ne peuvent être appelées par la fonction main(). • Protection protected. Tout comme les membres privés, les membres déclarés protected ne sont accessibles que pour les méthodes de la même classe. Ils sont aussi accessibles par les fonctions membres d’une sous-classe (voir la section «L’héritage»). Par défaut, lorsque les données sont déclarées sans type de protection, leur protection est public. Les données sont alors accessibles depuis toute l’application.
Protéger les données d’un cercle Pour protéger les données de la classe Cercle, il suffit de remplacer le mot-clé public précédant la déclaration des variables d’instance par le mot private. Observons la nouvelle classe, CerclePrive, dont les données sont ainsi protégées. public class CerclePrive { private int x, y, r ; // position du centre et rayon
public void afficher() { // voir la section « La classe descriptive du type Cercle » du chapitre // »Les classes et les objets » }
public double périmètre() { // voir la section « La classe descriptive du type Cercle » du chapitre // »Les classes et les objets » } public void déplacer(int nx, int ny) { // voir la section « La classe descriptive du type Cercle » du chapitre // »Les classes et les objets » }
public void agrandir(int nr) { // voir la section « La classe descriptive du type Cercle » du chapitre // »Les classes et les objets » } } // Fin de la classe CerclePrive
Les données x, y et r de la classe CerclePrive sont protégées grâce au mot-clé private. Étudions les conséquences d’une telle protection sur la phase de compilation de l’application FaireDesCerclesPrives. public class FaireDesCerclesPrives { public static void main(String [] arg) { CerclePrive A = new CerclePrive(); A.afficher(); System.out.println( » Entrez le rayon : « ); A.r = Lire.i() ; System.out.println( » Le cercle est de rayon :  » + A.r) ; } }
Compilation de l’application FaireDesCerclesPrives Les données x, y et r de la classe CerclePrive sont déclarées privées. Par définition, ces données ne sont donc pas accessibles en dehors de la classe où elles sont définies. Or, en écrivant dans la fonction main() l’instruction A.r = Lire.i() ;, le programmeur demande d’accéder, depuis la classe FaireDesCerclesPrives, à la valeur de r, de façon à la modifier. Cet accès est impossible, car r est défini en mode private dans la classe CerclePrive et non dans la classe FaireDesCerclesPrives. C’est pourquoi le compilateur détecte l’erreur Variable x in class CerclePrive not accessible from class FaireDesCerclesPrives.

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *