|
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.
 
|