Présentation
EnglishRÉSUMÉ
La programmation par objet, et le langage C++, s'appliquent bien aux besoins de développement moderne, favorisant le travail simultané de plusieurs développeurs, et une maintenabilité et une évolutivité du code obtenu. Cet article décrit les concepts objets offerts par le langage C++. Puis quelques problèmes liés aux choix de conception par objets en C++ sont analysés, avec une présentation des conséquences immédiates ou futures lors des évolutions des produits développés.
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleAuteur(s)
-
Amal SAYAH : Maître de conférences, université Paul-Sabatier - Institut de recherche en informatique de Toulouse (IRIT )
INTRODUCTION
De nombreuses applications ont été développées en utilisant des langages à objets et en particulier le C++. Cet engouement pour la programmation par objets se justifie aujourd’hui. En effet, plusieurs équipes participent généralement à la réalisation d'un logiciel, d'où un problème d'interaction entre ces différentes parties. De plus, les logiciels ont une durée de vie de plus en plus longue, pendant laquelle ils subissent d'importantes adaptations et modifications (évolutions technologiques, du besoin, des normes, etc.). Enfin, la programmation par objets, au travers des concepts qu’elle propose (objet, classe, héritage, sous-typage, polymorphisme, etc.), répond aux besoins de telles applications.
Dans cet article, nous consacrerons une première partie à une description des concepts objets offerts par le langage C++. Ensuite, à partir d’expériences vécues dans le développement d’applications C++, nous analyserons quelques problèmes liés aux choix de conception par objets en C++ et à leurs conséquences immédiates ou futures lors des évolutions des produits développés.
Je tiens à remercier mes collègues qui ont accepté, malgré leur emploi du temps chargé, d’en consacrer une partie à la lecture de ce document. Par leurs remarques, ils m’ont incité à développer la présentation de certains concepts ou à apporter des explications complémentaires. Je pense en particulier à mon collègue et ami Mamoun Filali.
DOI (Digital Object Identifier)
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Présentation
2. Stratégies de conception
Dans ce paragraphe, nous analyserons les conséquences de l’utilisation de certains concepts C++ dans le développement et la maintenance d’applications objets.
2.1 Domaines private
Les membres d’une classe appartenant à un domaine private ne sont accessibles que par une fonction membre de la même classe ou par des fonctions extérieures à la classe, mais spécifiées friend par le propriétaire de la classe. Cela signifie que les fonctions appartenant à des classes définies par héritage n’auront pas accès à ces membres private.
Lors de la conception d’une classe, il nous faut toujours penser aux évolutions qui pourraient être nécessaires plus tard. Peut-on penser à toutes ? Comment concilier la prise en compte de ces évolutions, en général, au travers de l’héritage et de la reprogram-mation de certains traitements avec le fait qu’un domaine private interdit à la classe dérivée d’accéder aux membres de la classe de base, accès dont pourrait avoir besoin le concepteur de la classe dérivée ?
Le C++ permet de définir effectivement des domaines private, mais utiliser cette possibilité ne va-t-il pas à l’encontre de la réutilisation ? J’ai tendance aujourd’hui, vu le nombre de fois où j’ai dû revisiter des classes, à systématiser l’utilisation des domaines protégés et à oublier un peu l’existence du private.
HAUT DE PAGE2.2 friend
L’utilisation des fonctions ou classes friend peut constituer elle aussi un grave facteur de blocage dans la prise en compte des évolutions que pourrait nécessiter une application. En effet, ce privilège est accordé à une fonction ou à une classe et ne peut pas être transmis par héritage.
Lors de la programmation d’une application, une bibliothèque graphique Windows a été utilisée pour simplifier la gestion des fenêtres et d’autres entités graphiques. Dans cette bibliothèque, la classe WorkBook réalise la gestion de classeurs pouvant contenir plusieurs pages, des WorkPage. Un aperçu de la spécification de ces classes permet de comprendre rapidement le frein à l’évolutivité que peut engendrer l’utilisation friend :
class WorkBook : public Control
{
public:
//...
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Stratégies de conception
BIBLIOGRAPHIE
-
(1) - KERNIGHAM (B.W.), RITCHIE (D.M.) - The C Programming Language - . Prentice-Hall (1978).
-
(2) - ELLIS (M.A.), STROUSTRUP (B.) - The annotated C++ reference manual - . Addison-Wesley (1990).
-
(3) - GORLEN (K.E.), ORLOW (S.M.), PLEXICO (P.S.) - Data abstraction and object-oriented programming in C++ - . Editions John Wiley & Sons (1990).
-
(4) - STROUSTRUP (B.) - Le langage C++ - . Addison-Wesley France (1992).
-
(5) - BODEVEIX (J.P.), FILALI (M.), SAYAH (A.) - Programmation en C++ - . InterÉditions France (1994).
-
(6) - MEYER (B.) - Eiffel : the language - . Prentice Hall (1992).
-
(7) - MASINI...
DANS NOS BASES DOCUMENTAIRES
ANNEXES
Barne Stroustrup http://www.research.att.com/~bs/applications.html
HAUT DE PAGE
ISO/IEC 14882 - 1998 - Langages de programmation – C++ - -
HAUT DE PAGECet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive