Cours informatique afficher la partie publique d’une classe

Cours informatique afficher la partie publique d’une classe, tutoriel & guide de travaux pratiques en pdf.

La rubrique création

Elle indique quel(s) est(sont) le(s) constructeur(s) de la classe, c’est à dire les routines associées lors de la création de l’objet. Un constructeur est une routine qui sert à l’initialisation de l’objet lors de sa création. Dans la classe BONJOUR, il existe un constructeur make qui est automatiquement reconnu par le compilateur comme étant la routine principale (équivalent de main() en langage C) à exécuter en premier.
Remarque: Rien n’empêche d’utiliser un autre nom de constructeur compilateur. Par exemple, si on remplace make par bonjour.e, il faudra taper la commande suivante:
mais il faudra le spécifier au mon_bonjour dans le fichier se c bonjour.e mon_bonjour ­o bonjour ­clean.

La rubrique feature

Elle contient la définition des caractéristiques et du comportement de la classe.

La classe ? un restaurant !!

Une classe est organisée comme un restaurant dont le schéma est présenté dans la figure xxx. On y distingue plusieurs zones d’activité qui ne s’adressent pas aux mêmes catégories de personnes. La salle de restaurant est publique. Les clients sont autorisés à y circuler et à « utiliser » les divers services proposés par le restaurant c’est à dire ici à consommer les plats. Dans cette zone publique, les clients ne sont pas autorisés à modifier ces services (le client ne peut pas faire la cuisine). Au contraire, la cuisine est une zone privée où on confectionne les divers plats; ici les cuisiniers sont habilités à modifier les recettes. Enfin, il existe une ou plusieurs zones réservées à une certaine catégorie de personnels extérieur au restaurant ( les livreurs, par exemple): c’est une zone amie où seuls les amis sont autorisés à y pénétrer.
Les trois zones d’activité d’un restaurant sont:
(i) La salle publique: on y trouve des clients et le personnel du restaurant. Les clients consomment les divers plats sans savoir comment ceux­ci sont confectionnés.
(ii) La cuisine privée: seul le personnel du restaurant est autorisé à y circuler. Cet endroit est stratégique puisque les différents plats y sont fabriqués.
(iii) La zone de livraisons ni publique ni privée: elle a un accès contrôlé où du personnel extérieur au restaurant est autorisé à y circuler.
Visibilité des feature
Dans une classe, on retrouve ces trois zones:
(i) la zone publique est réservée au programmeur « client »; celui­ci va utiliser des fonctionnalités d’une classe programmée par une autre personne. Il ne se soucie pas de l’implantation: il est un utilisateur.
(ii)la zone privée contient l’implantation des fonctionnalités de la classe. Seul le programmeur « propriétaire » de la classe est autorisé à la modifier.
(iii)la zone « amie » est uniquement accessible à certaines classes. C’est la zone la plus difficile à circonscrire.
En pratique, la rubrique feature est répétée plusieurs fois dans la classe pour délimiter les zones décrites ci­dessus. La syntaxe consiste à faire suivre le mot clé feature du nom de la (ou des)
classe(s) dont l’accès est autorisé, entre accolades comme ci­dessous:
feature {FOO}
La zone publique appelée aussi interface est définie en y accolant la classe ANY (l’interface est destinée au programmeur « client »)
feature {ANY}
­­ Ici, les routines sont accessibles à tout le monde (public)
La zone privée est réservée à un usage interne (la « cuisine » où sont regroupés les attributs et les routines destinées à l’implémentation de la classe).
feature {NONE}
­­ Sous cette section, tout est privé
­­ Seule l’instance de cette classe peut utiliser cette partie.
La zone amie
feature {STRING; CHARACTER}
­­ Nous sommes dans un cas intermédiaire: ni public ni privé
­­ Politique « amie »; seuls les « amis » sont autorisés.
­­ Ici, les routines sont uniquement accessibles
­­ aux STRING et CHARACTER.
Variabilité de syntaxe:
On trouve selon les programmeurs, deux styles de définition des feature publiques et privées. Par défaut, le mot clé feature seul équivaut à feature {ANY}
feature
­­ Politique par défaut. Tout est public.
De même, feature {} équivaut à feature {NONE}
feature {}
­­ Sous cette section, tout est privé
Pour la zone publique, je préconise de toujours utiliser feature {ANY} pour éviter toute confusion. De même, on suivra l’écriture préconisée par l’équipe de SmartEiffel pour les zones privées c’est à dire en utilisant feature {}; bien qu’à mon avis, on peut confondre feature et feature {}. Le choix fait par SmartEiffel est justifié par le fait que NONE n’est pas une classe mais simplement un mot clé.
Conseil 1: Pour vos premières classes, essayez de trier les feature en deux blocs: (i) routines publiques et (ii) privées. Les cas intermédiaires « amis » sont plus difficiles à gérer.
Conseil 2 : Il est conseillé de subdiviser les feature de même visibilité en sous­blocs de manière à regrouper leur contenu dans la classe (par exemple, la zone publique peut être subdivisée en trois feature{ANY} pour classer (i) les constructeurs, (ii) les attributs publics, et (iii) les méthodes publiques d’accessibilité).

Que contiennent les « feature »?

Dans les rubriques feature, on va définir deux types de choses:
Les attributs qui sont les caractéristiques de la classe (par exemple, les attributs de la classe RESTAURANT seraient four, chaise, serveur, cuisinier,etc.).
Les routines ou méthodes qui sont des blocs de code permettant de définir un comportement à notre classe (par exemple, pour la classe RESTAURANT, on aurait cook_foie_gras);

Cours informatique afficher la partie publique d’une classe

Pour le programmeur « client », il est intéressant de lire des renseignements sur une classe donnée. Dans SmartEiffel, il existe un utilitaire short qui permet d’extraire la documentation du fichier source d’une classe. Ce programme récupère comme information :
✔ Les commentaires placées dans l’entête de la classe
✔ Toutes les routines et attributs publics
✔ Tous les commentaires placées après les routines /attributs publics
Modifiez le fichier bonjour.e de manière à rajouter les commentaires. Un commentaire est une ligne commençant par deux tirets « ­­ ».
class BONJOUR
creation
make
feature
make is
­­ make est le constructeur de la classe BONJOUR
­­ Il affiche la phrase Bonjour chez vous!
do
io.put_string(« Bonjour chez vous!%N »)
end
une_variable : INTEGER
­­ Une variable pour l’exemple
feature {NONE} – Privé
une_variable_privee : REAL
­­ « Arriere cuisine »
end ­­ end of class BONJOUR
Après avoir sauvegardé le fichier bonjour.e, lancez:
se short ­html2 bonjour.e > bonjour.html
Visualisez le fichier bonjour.html avec votre navigateur web préféré.
class interface BONJOUR
creation
make
­­ make est le constructeur de la classe BONJOUR
­­ Il affiche la phrase Bonjour chez vous!
EBO: Eiffel et BioinfOrmatique ­3.6­
feature(s) from BONJOUR
make
­­ make est le constructeur de la classe BONJOUR
­­ Il affiche la phrase Bonjour chez vous!
une_variable: INTEGER
­­ Une variable pour l’exemple end of BONJOUR
Uniquement la partie publique destinée au programmeur « client » (l’interface) est retranscrite dans ce fichier. L’utilisation de short est très utile pour vous rendre compte de ce que vous avez laissé public dans une classe (surtout quand cette classe hérite de plusieurs parents).
Remarque: Sur le site web de SmartEiffel, toutes les interfaces des classes définies par l’équipe de SmartEiffel sont consultables dans le sous­menu ‘Libraries doc.’.

Conventions typographiques utilisées par Eiffel

Cette section est directement inspirée des conventions utilisées dans le projet Gobo (Gobo Eiffel de Eric Bezault à l’adresse www.gobosoft.com) qui sont elles­mêmes tirées des spécifications officielles publiées dans Object­Oriented Software Construction, Second Edition (appelé communément OOSC­2 )

Noms des classes

Les noms des classes sont impérativement en majuscules.
Eiffel n’a pas de système d’espaces de noms comme dans d’autres langages comme C++, ce qui signifie qu’une classe ATOM dans le dossier /path/ebo/kernel peut être confondue avec une classe ATOM située dans /path/everywhere/kernel. Pour éviter tout problème de confusion, il est d’usage d’ajouter au début du nom de la classe, le nom (ou un acronyme ou surnom) de la librairie. Par exemple, pour EBO, on définira la classe EBO_ATOM, EBO_CHAIN, EBO_HELIX, etc.
Conseil: Evitez des préfixes trop longs (un préfixe de 4 caractères est considéré comme le maximum).

Noms des attributs et routines

Les noms sont en minuscules et si ceux­ci sont composés de différents mots, ils doivent être séparés par des caractères soulignés (« underscore »). Exemple:
get_length
from_collection
Il est d’usage d’éviter les abréviations à moins que celles­ci soient communément admises dans la communauté travaillant dans le domaine scientifique visé. Exemple, pour un bioinformaticien:
blast
get_fasta
seront bien évidemment des acronymes acceptés.
Les constantes sont des attributs particuliers qui sont écrits en minuscules à l’exception du 1er caractère en majuscule. Exemple, dans la classe MATH_CONSTANTS de SmartEiffel, on trouve:
Pi
Deg
Souvent, les noms des routines retournant un BOOLEAN sont construits comme des interrogations.
Exemple:
is_valid
is_empty
Les noms des constructeurs peuvent être construits à partir de ‘make’, ‘from’ ou ‘with’.

Indentations

Afin que le code soit lisible par tous, il est d’usage d’utiliser des indentations pour améliorer la clarté du code. Ces indentations sont réalisées avec des tabulations (touche ‘tab’ sur le clavier). La touche ‘espace’ est à proscrire et surtout le mélange de caractères ‘espace’ et tabulations qui peuvent rendre difficile la lecture d’un éditeur de texte à un autre. Le mieux est de choisir un éditeur de texte qui visualise les ‘tab’.
L’exemple ci­dessous (extrait des conventions de GOBO) montre la disposition recommandée pour une routine. Ici, les tabulations sont représentées par le caractère ‘souligné’ (underscore) afin de visualiser l’utilisation de la touche ‘tab’:
_ set_foo (a_foo: like foo) is
_ _ _ ­­ Set `foo’ to `a_foo’.
_ _ require
_ _ _ a_foo_not_void: a_foo /= Void
_ _ do
_ _ _ foo := a_foo
_ _ ensure
_ _ _ foo_set: foo = a_foo
_ _ end
Voici un exemple plus complet des conventions d’indentation pour une classe (extrait du chapitre des conventions typographiques de GOBO):
indexing
_ description:
_ _ « Short description of the class »
_ library: »EBO: Eiffel Bioinformatics OpenGL »
_ author: »Jean Dupont »
_ copyright: « Copyright (c) 2005, Jean­Christophe Taveau and others »
_ license: »GPL: General Public License »
_ date: »$Date: 2003/02/07 11:57:51 $ »
_ revision: « $Revision: 1.2 $ »
class BAR [G ­> TOTO]
inherit

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 *