Présentation
EnglishAuteur(s)
-
Jean-François PERROT : Professeur à l’Université Pierre-et-Marie-Curie
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleINTRODUCTION
Dix ans après son apparition en force, la technologie à objets se porte bien. Son succès s’affirme dans presque tous les domaines de l’informatique. Plusieurs congrès internationaux lui sont consacrés chaque année en Europe, aux États-Unis et dans le Pacifique, les revues se multiplient ainsi que les réunions plus ou moins tapageuses à caractère commercial. On y entend souvent parler des technologies à objets, au pluriel. C’est que ce succès s’accompagne d’une confusion notable, les spécialistes des différents domaines ne donnant pas le même sens technique au mot objet, mot magique déjà lourdement chargé de sens dans la langue courante. Le barbarisme orienté objets, traduction directe de l’anglais object-oriented, n’aide pas à clarifier les choses. Nous lui substituons une terminologie plus conforme à la grammaire française : programmation par objets, langages à objets.
Pour éviter les malentendus, il convient de distinguer les domaines. Comme toute technique de programmation, la programmation par objets proprement dite peut se pratiquer en principe dans n’importe quel langage, mais de préférence à travers les langages à objets. Elle s’utilise à peu près partout, mais avec un éclat particulier lorsqu’il s’agit d’écrire des systèmes complexes. Elle rencontre alors les préoccupations du génie logiciel et donne naissance à l’analyse et conception par objets qui, à travers les multiples méthodes proposées sur le marché (comme OOA, OODLA, HOOD, OMT, etc.), pose des problèmes profonds d’acquisition des connaissances et rejoint une branche de l’intelligence artificielle en développement rapide. Comme le point de vue des objets est aux antipodes du modèle relationnel, les bases de données à objets ont fait leur apparition sur le marché . Les systèmes d’exploitation à objets vont entrer en service d’un jour à l’autre, et on va voir se multiplier les applications distribuées fondées sur des objets concurrents. Les objets qui ont cours dans ces derniers domaines doivent affronter des conditions de vie difficiles (persistance, distribution), et ils ne sont plus exactement ceux des langages à objets classiques (cf. le standard CORBA promu par l’organisation OMG). Du côté de l’intelligence artificielle, la représentation de connaissances utilise elle aussi des objets, qui sont en fait dérivés des frames et se différencient de ceux qui nous occupent ici dans leur intention (par exemple la classification) comme dans leur structure (absence de la composante procédurale).
Nous nous limitons dans le présent article aux langages (de programmation) à objets dans la perspective de leur utilisation en production de logiciel (et non, par exemple, du point de vue de l’intelligence artificielle). Nous n’aborderons pas l’analyse et la conception par objets, qui demanderaient un développement à part dont celui-ci est un préliminaire indispensable. De même, nous n’examinerons pas les problèmes liés à la permanence, à la concurrence et à la distribution des objets, ni les perspectives de systèmes d’exploitation ou de bases de données.
Notre présentation sera guidée par le principe d’implémentation qui sous‐tend la programmation par objets, plutôt que par une analyse a priori des besoins qu’elle devrait satisfaire et des moyens qu’elle propose. C’est à notre avis la seule façon d’évaluer sainement les possibilités de la technique, les constantes et les variations entre les différentes réalisations, et surtout, pour l’utilisateur, de ne pas prendre ses désirs pour des réalités. Cette dernière tentation est particulièrement forte en programmation par objets, en raison d’une ambiguïté fondamentale que nous analyserons longuement. En fin de compte, c’est sans doute cette ambiguïté qui est la source de la fécondité et de la richesse de la programmation par objets, mais il faut en être bien conscient pour ne pas se faire prendre aux pièges du vocabulaire et pour ne pas se laisser désorienter par les débats interminables sur le sens des mots qui surgissent dès que l’on pose la question : « qu’est-ce qu’un objet ? ».
Si l’on se borne aux logiciels qui sont effectivement utilisés de manière industrielle, par opposition aux systèmes à caractère expérimental ou d’usage restreint, la diversité apparente des langages à objets actuellement disponibles se ramène à une architecture unique, le schéma dit à classes et instances, expression où le mot classe doit être pris en un sens technique précis 2.2. Ce schéma repose en vérité sur une technique d’implémentation d’une remarquable simplicité, qui a des conséquences multiples et lointaines. Nous l’analyserons en trois temps. D’abord, la structure profonde du modèle à classes et instances, suivant ses deux aspects indissolublement liés de mécanisme intellectuel et de réalisation informatique : l’un ne va pas sans l’autre. Ensuite, nous passerons en revue, à la lumière de ces principes, les langages les plus connus. Enfin, nous ferons une analyse critique en confrontant les moyens de programmation ainsi définis avec les desiderata des utilisateurs, qui leur sont souvent fort étrangers.
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
4. Mise en œuvre
Dans cette dernière partie, nous examinons comment l’outil informatique esquissé ci-dessus se comporte par rapport aux exigences de ses utilisateurs. Les difficultés sont de deux ordres, celles qui sont liées aux limitations intrinsèques du modèle, et celles qui viennent de demandes sans rapport avec le modèle.
4.1 Limitations du modèle
Il est important de répéter les limitations inhérentes au modèle à classes et instances, de manière à rester bien conscient de la différence entre ce qui s’exprime directement dans ce cadre et ce qui nécessite le recours à des techniques particulières et la construction de superstructures complexes. Répétons que la programmation par objets permet en général d’aborder beaucoup plus facilement des problèmes difficiles, mais que certains d’entre eux lui résistent aussi bien qu’à la programmation classique. Il ne faut pas tout lui demander !
Nous n’essaierons pas de caractériser ici ces problèmes rebelles. Nous nous contenterons de souligner trois aspects du modèle à classes et instances qui apparaissent souvent comme des limitations qu’on aimerait surmonter. Les solutions connues à ces difficultés sont partielles et onéreuses. Il faut en être prévenu ! Caveat emptor…
HAUT DE PAGE4.1.1 Rien que des attributs et des procédures
On souhaiterait bien souvent pouvoir employer des entités plus évoluées, comme des contraintes (pour pouvoir, par exemple, déclarer que la classe Carré est sous-classe de la classe Rectangle avec la contrainte « longueur = largeur »). En ce cas, il faudra les construire soi-même – ou les acheter –, le modèle à objets ne les fournit pas. Ce problème important subit actuellement une attaque en règle de la part des chercheurs.
De même, dans l’analyse de systèmes importants, on désire presque toujours exprimer qu’un objet complexe est composé de sous-objets, eux-mêmes complexes, etc., ce qu’on appelle une hiérarchie de parties. Ce problème bien naturel soulève d’épineuses difficultés techniques, et il n’y a pas actuellement de façon standard pour représenter ce type de hiérarchie en programmation...
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
Mise en œuvre
BIBLIOGRAPHIE
-
(1) - GOLDBERG (A.), ROBSON (D.) - Smalltalk‐80, The Language - . Addison‐Wesley (1989).
-
(2) - MASINI (G.), NAPOLI (A.), COLNET (D.), LÉONARD (D.), TOMBRE (K.) - Les langages à objets - . InterÉditions (1989).
-
(3) - MEYER (B.) - Conception et programmation par objets, pour du logiciel de qualité - . Inter Éditions (1989).
-
(4) - GAMMA (E.), HELM (R.), JOHNSON (R.), VLISSIDES (J.) - Design Patterns, Elements of Reusable Object-Oriented Software - . Addison‐Wesley (1994).
-
(5) - CHRISMENT (C.), PUJOLLE (G.), ZURFLUH (G.) - Bases de données orientées objet - . H3840. Traité Informatique, Techniques de l’Ingénieur, juin 1992.
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