Les classes

La classe est l'unité de base de la programmation objets. Une classe correspond à la définition d'un type. Elle peut contenir des variables d'instances (des attributs) qui correspondent aux données associées au type, c'est-à-dire à sa structure. Elle peut également comprendre un certain nombre de méthodes (fonctions et procédures) qui s'appliquent sur ce type. On peut décomposer la structure d'une classe Eiffel en plusieurs sections.

 

Ecrivons maintenant en langage Eiffel une classe représentatives précédentes.

Cette classe définit le type POINT COLORE. Ce type possè de un constructeur 'make', qui permet d'instancier un nouveau point. Elle possède 2 coordonnées réelles, x et y, qui sont visibles (feature {ANY} et une couleur privée (feature {NONE}). La méthode get_couleur n'est visible que par la classe TEST.

Cet exemple nous a aussi permis d'introduire l'opérateur d'iristanciation !!, équivalent du 'new' en C++ et Java, qui permet de créer un objet. Par défaut, en Eiffel, toutes les variables, d'instances ou locales, sont initialisées à 0 ou à Void (l'équivalent du NULL de C). Il faut aussi remarquer que,contrairement à C/C++/Java qui utilisent le mot clé "return" pour renvoyer le résultat d'une fonction, la valeur de retour d'une fonction Eiffel doit être stockée dans une variable Result définie implicitement. La section 'local' d'une méthode permet de définir des variables locales. On peut aussi remarquer qu'Eiffel utilise la notation pointée (comme en Java) pour accéder à une variable d'instance (ici p.x) ou appeler une méthode (p.translate).

Cependant, alors que Java et C++ persistent à imposer la présence de parenthèses aux fonctions sans argument, Eiffel supprime cette contrainte.
Ce type de mécanisme contribue à renforcer l'implementation hiding (masquage de l'implantation) qui est un concept fondamental de la programmation objets. C'est en effet un bon moyen d'assurer la réutilisabilité du code : le changement d'une méthode en attribut peut alors se faire sans avoir besoin de modifier les appels dans les classes clientes.

Les Classes Abstraites >>