Extrait de "Au coeur de ActiveX et OLE", de
David Chappel
"Au cours des 35 dernières années, les
concepteurs de matériel informatique sont passés de machines de la taille d'un hangar à
des ordinateurs portables légers basés sur de minuscules microprocesseurs.
Au cours des mêmes années, les développeurs de logiciels
sont passés de l'écriture de programmes en assembleur et en COBOL à
l'écriture de programmes encore plus grands en C et C++. On pourra parler de progrès (bien que
cela soit discutable), mais il est clair que le monde du logiciel ne progresse pas aussi vite que celui
du matériel.
Qu'ont donc les développeurs de matériel que les
développeurs de logiciels n'ont pas ?
La réponse est donnée par les composants. Si
les ingénieurs en matériel électronique devaient partir d'un tas de sable à chaque fois
qu'ils conçoivent un nouveau dispositif, si leur première étape devait toujours
consister à extraire le silicium pour fabriquer des circuits intégrés, ils ne
progresseraient pas bien vite.
Or, un concepteur de matériel construit toujours un système
à partir de composants préparés, chacun chargé d'une fonction
particulière et fournissant
un ensemble de services à travers des interfaces définies. La
tâche des concepteurs
de matériel est considérablement simplifiée par le travail
de leur prédécesseurs.
La réutilisation est aussi une voie vers la
création de meilleurs logiciels.
Aujourd'hui encore, les développeurs de logiciels en sont toujours
à partir d'une certaine forme de sable et à suivre les mêmes étapes que les
centaines de programmeurs qui les ont précédés. Le résultat est
souvent excellent, mais il pourrait être amélioré. La création de
nouvelles applications à partir de composants existants, déjà testés, a
toutes chances de produire un code plus fiable. De plus, elle peut se révéler
nettement plus rapide et plus économique, ce qui n'est pas moins important."
La programmation orientée objet consiste à modéliser
informatiquement un ensemble d'éléments d'une partie du monde réel (que l'on
appelle domaine) en un ensemble d'entités informatiques.
Ces entités informatiques sont appelées objets. Il s'agit de
données informatiques regroupant les principales caractéristiques des éléments du
monde réel (taille, la couleur, ...).
L'approche objet est une idée qui a désormais fait ses
preuves. Simula a été le premier langage de programmation
à implémenter le concept de classes en 1967 ! En 1976, Smalltalk implémente les
concepts d'encapsulation, d'agrégation, et d'héritage
(les principaux concepts de l'approche objet). D'autre part, de nombreux
langages orientés objets ont été mis au point
dans un but universitaire (Eiffel, Objective C, Loops, etc.).
La difficulté de cette modélisation consiste
à créer une représentation
abstraite, sous forme d'objets, d'entités ayant une existence
matérielle (chien, voiture, ampoule, ...)
ou bien virtuelle (sécurité sociale, temps, ...).
Un objet est caractérisé par plusieurs notions:
- Les attributs: Il s'agit des données caractérisant
l'objet. Ce sont des
variables stockant des informations d'état de l'objet
- Les méthodes (appelées parfois fonctions
membres): Les méthodes d'un objet caractérisent son
comportement, c'est-à-dire l'ensemble des actions
(appelées opérations) que l'objet est à même
de réaliser.
Ces opérations permettent de faire réagir l'objet aux
sollicitations extérieures
(ou d'agir sur les autres objets). De plus, les opérations sont
étroitement liées aux
attributs, car leurs actions peuvent dépendre des valeurs des attributs,
ou bien les modifier
- L'identité: L'objet possède une identité, qui
permet de le distinguer
des autres objets, indépendamment de son état. On construit
généralement cette identité
grâce à un identifiant découlant naturellement du
problème (par exemple un produit
pourra être repéré par un code, une voiture par un
numéro de série, ...)
On appelle classe la structure d'un objet, c'est-à-dire la
déclaration de
l'ensemble des entités qui composeront un objet. Un objet est donc
"issu" d'une classe,
c'est le produit qui sort d'un moule.
En réalité on dit qu'un objet est une instanciation
d'une classe, c'est la raison pour laquelle on pourra parler
indifféremment d'objet ou d'instance
(éventuellement d'occurrence).
Une classe est composée de deux parties:
- Les attributs (parfois appelés données membres):
il s'agit des données représentant
l'état de l'objet
- Les méthodes (parfois appelées fonctions
membres): il s'agit des opérations applicables aux objets
Si on définit la classe voiture, les objets
Peugeot 406, Renault 18 seront des instanciations
de cette classe. Il pourra éventuellement exister plusieurs objets
Peugeot 406, différenciés par leur
numéro de série. Mieux: deux instanciations de classes pourront
avoir tous leurs attributs
égaux sans pour autant être un seul et même objet. C'est le
cas dans le monde réél, deux T-shirts
peuvent être strictement identique et pourtant ils sont distincts.
D'ailleurs en les mélangeant il serait impossible
de les distinguer...
La modélisation objet consiste à créer une
représentation informatique
des éléments du monde réel auxquels on s'intéresse,
sans se préoccuper
de l'implémentation, ce qui signifie indépendamment d'un
langage de programmation. Il
s'agit donc de déterminer les objets présents et d'isoler leurs
données et les fonctions
qui les utilisent. Pour cela des méthodes ont été mises au
point. Entre 1970 et 1990,
de nombreux analystes ont mis au point des approches orientées objets, si
bien qu'en 1994 il existait
plus de 50 méthodes objet. Toutefois seules 3 méthodes ont
véritablement émergé:
- La méthode OMT de Rumbaugh
- La méthode BOOCH'93 de Booch
- La méthode OOSE de Jacobson
A partir de 1994, Rumbaugh et Booch (rejoints en 1995 par Jacobson) ont uni
leurs efforts pour mettre au point le langage de déscription UML
(Unified Modeling Language), qui permet de
définir
un langage standard en incorporant les avantages des différentes
méthodes précédentes
(ainsi que celles d'autres analystes). Il permet notamment de "programmer"
entièrement une application avec un langage qui modélise toutes
les composantes du futur programme.
|