Академический Документы
Профессиональный Документы
Культура Документы
3.1. Introduction
En fait, les langages à objets connaissent un succès grandissant, aussi bien dans
le domaine de l’Intelligence Artificielle (IA) que dans celui du Génie Logiciel ou
des BD, car ils constituent sans doute la solution la plus souple et offre plus de
perspectives pour répondre à ces différents besoins.
Un objet est une abstraction d'une donnée du monde réel caractérisée ainsi :
L'identité d'un objet est représentée par un identifiant (object identifier ou OID)
unique et invariant qui permet de référencer l'objet indépendamment des
autres objets. L'état d'un objet est une valeur qui peut être simple, par exemple,
un littéral, ou structurée, par exemple, une liste. Dans le dernier cas, l’état peut
être composé de valeurs simples, de références à d'autres objets, ou de valeurs
elles-mêmes structurées. Le comportement d'un objet est défini par un
ensemble d'opérations applicables à l'objet et définies dans sa classe
d'appartenance. En résumé, nous avons la définition suivante :
L'identité et l'égalité de deux objets sont deux notions différentes. Deux objets
o1 et o2 sont identiques si leurs identifiants sont égaux (o1==o2). Deux objets
o1 et o2 sont égaux si leurs états sont égaux (o1=o2). Donc nous avons
(o1==o2)(o1=o2).
Les types d'objets seront des classes, et les objets (instances) seront considérés
comme représentants de classes.
Exemple:
Les principes énoncés plus haut offrent des qualités pour mettre en œuvre des
méthodes rigoureuses. Ainsi, on doit retrouver dans une approche objet au
moins 4 principes obligatoires : abstraction, encapsulation, modularité,
hiérarchie ; auxquels on peut ajouter 3 principes complémentaires : typage,
simultanéité, persistance.
Encapsulation
La première étape du travail de conception a consisté à définir les données
intéressantes, et à les regrouper dans des structures qui ont un sens. La
deuxième étape consiste à définir les méthodes d’accès à ces données, et les
calculs qui seront effectués dessus. L’idée de la programmation objet est de
regrouper ces méthodes d’accès et de calcul dans la même structure que les
données.
Le regroupement des données et des méthodes est un des points importants des
langages objet, qui n’est absolument pas supporté dans des langages tels que le
C, Pascal ou Fortran. C’est cela que l’on appelle l’encapsulation.
Modularité
La modularité est la propriété d’un système décomposé en ensemble de
modules cohérents faiblement couplés.
Hiérarchie (héritage)
L'héritage (en anglais inheritance) est un principe propre à la programmation
orientée objet, permettant de créer une nouvelle classe à partir d'une classe
existante. Le nom d'"héritage" (pouvant parfois être appelé dérivation de classe)
provient du fait que la classe dérivée (la classe nouvellement créée) contient les
attributs et les méthodes de sa superclasse (la classe dont elle dérive). L'intérêt
majeur de l'héritage est de pouvoir définir de nouveaux attributs et de nouvelles
méthodes pour la classe dérivée, qui viennent s'ajouter à ceux et celles héritées.
Par ce moyen on crée une hiérarchie de classes de plus en plus spécialisées. Cela
a comme avantage majeur de ne pas avoir à repartir de zéro lorsque l'on veut
spécialiser une classe existante.
Le typage
Dans la programmation par objets, chaque objet est typé. Le type définit la
syntaxe (« Comment l'appeler ? ») et la sémantique (« Que fait-il ? ») des
messages auxquels peut répondre un objet. Il correspond donc, à peu de chose
Un objet peut appartenir à plus d'un type : c'est le polymorphisme ; cela permet
d'utiliser des objets de types différents là où est attendu un objet d'un certain
type. Une façon de réaliser le polymorphisme est le sous-typage (appelé aussi
héritage de type)
Simultanéité
Deux objets différents doivent pouvoir agir en même temps et à des endroits
différents (soit sur la même machine, soit sur des machines différentes,…).
Persistance
Ceci concerne la durée de vie d’un objet (important dans les BD, ou les données
sont disponibles pendant longtemps).
Depuis 1996, ces objectifs sont quasiment atteints. La méthode unifiée est
devenue plutôt le langage UML.
3.6. Conclusion
L'idée majeure qui préside dans le concept objet consiste à conserver la même
philosophie depuis l'analyse des besoins à partir du monde réel, la spécification
jusqu'à sa réalisation, en l'occurrence celle des objets.
« Savoir revenir aux étapes précédentes », car il arrive rarement que les
classes principales soient trouvées avec exactitude, dès la première étape
du processus, surtout qu’à côté des classes principales, des classes
auxiliaires dues à la programmation, viennent se greffer. Ces classes
doivent être introduites naturellement en revenant à la première étape.
« Prototyper rapidement avant de passer à une spécification complète
», car il faut passer très rapidement à une première ébauche du logiciel,
qui permettra de spécifier le logiciel. Mais attention à une
programmation sans spécification.
« Penser abstrait », car la conception par objets permet de définir des
modèles du monde réel par abstraction des classes et des opérations
indépendantes de la nature des objets manipulés.
Et enfin, « penser local », en ne cherchant pas à structurer globalement
l’ensemble du système, mais en définissant des opérations de portée
locale.