Présentation

Article

1 - UNE NOUVELLE MANIÈRE DE PROGRAMMER

  • 1.1 - Styles de programmation
  • 1.2 - Objets et outils
  • 1.3 - Les trois mécanismes fondamentaux
  • 1.4 - Bref historique

2 - MÉCANISMES DE BASE

3 - LANGAGES

  • 3.1 - SMALLTALK
  • 3.2 - EIFFEL
  • 3.3 - SIMULA
  • 3.4 - C++

4 - MISE EN ŒUVRE

  • 4.1 - Limitations du modèle
  • 4.2 - Nouvelles demandes

Article de référence | Réf : H2510 v1

Une nouvelle manière de programmer
Langages à objets

Auteur(s) : Jean-François PERROT

Date de publication : 10 mars 1995

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

Auteur(s)

Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.

Lire l’article

INTRODUCTION

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.

Cet article est réservé aux abonnés.
Il vous reste 95% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v1-h2510


Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(238 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

ABONNEZ-VOUS

Lecture en cours
Présentation

1. Une nouvelle manière de programmer

1.1 Styles de programmation

Programmer, c’est communiquer une requête à une machine : on écrit un programme pour faire exécuter une certaine tâche à un ordinateur. La tâche en question peut être aujourd’hui fort complexe, et sa formulation directe dans le langage de la machine est hors de question. Le programme s’écrit dans un langage de programmation, dont le rôle est de soutenir l’effort intellectuel du programmeur en lui fournissant un cadre conceptuel plus ou moins confortable et plus ou moins bien adapté à la tâche devant être décrite. Les langages s’organisent selon plusieurs grands styles de programmation, qui diffèrent suivant les mécanismes intellectuels qu’ils mettent en jeu chez le programmeur et suivant les qualités de la formulation obtenue du point de vue de son traitement ultérieur (compilation, exécution, débogage, maintenance).

  • Le style impératif/procédural classique cherche à formuler la tâche à accomplir d’une manière directe en termes de changements d’états de la machine. Il a l’inconvénient d’enfermer le programmeur dans des structures de données rigides, soumises à des algorithmes plus ou moins compliqués, et de le contraindre à une analyse approfondie du problème à traiter. Cette analyse conduit à une reformulation abstraite en termes de systèmes de variables et de procédures opérant sur ces variables. Un tel exercice ne peut être pratiqué que par des professionnels rompus à l’algorithmisation et à la manipulation des structures de données, munis d’une culture technique que ne possède pas le commun des mortels. En outre, malgré les efforts prolongés des spécialistes, les textes des programmes obtenus se prêtent mal à une vérification automatique de leur validité.

  • Le style fonctionnel, de son côté, envisage la définition de la tâche à accomplir comme celle du calcul d’une fonction mathématique. Il a l’avantage de pouvoir mettre en branle une véritable théorie de la programmation, qui conduit par exemple à une forme de vérification sémantique, la synthèse de types. Il a l’inconvénient d’exiger de la part du programmeur un bagage mathématique non négligeable et de nécessiter un retour au style impératif pour traiter bon nombre de problèmes « pratiques » comme les entrées-sorties. La programmation...

Cet article est réservé aux abonnés.
Il vous reste 95% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(238 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

ABONNEZ-VOUS

Lecture en cours
Une nouvelle manière de programmer
Sommaire
Sommaire

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 est réservé aux abonnés.
Il vous reste 94% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(238 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

ABONNEZ-VOUS