L'approche objet
- Aujourd'hui, en programmation, il existe deux principaux modèle de représentation du monde :
- le modèle fonctionnel (que vous connaissez déjà)
- le modèle objet (que nous allons étudier).
Dans une approche fonctionnelle, vos programmes sont composés d'une série de fonctions, qui assurent ensemble certains services. Il s'agit d'une approche logique, cohérente et intuitive de la programmation. Cette approche a un avantage certain appelé la factorisation des comportements (c'est à dire que pour créer une fonction d'une application, rien ne vous empêche d'utiliser un autre ensemble de fonctions (qui sont donc déjà écrites)). Mais , l'approche fonctionnelle a aussi ses défauts, comme par exemple une maintenance complexe en cas d'évolution de votre application (une simple mise à jour de l'application à un point donné peut impacter en cascade sur d'autres fonctions de notre application). L'application sera alors retouchée dans sa globalité. L'approche fonctionnelle n'est pas adaptée au développement d'applications qui évoluent sans cesse et dont la complexité croit continuellement (plusieurs dizaines de milliers de lignes de code). |
| Les concept de base de l'approche objet: Objet, Classe, L'héritage |
L'objet |
Un objet est une abstraction d’un élément du monde réel. Il possède des informations, par exemple nom, prénom, adresse, etc., et se comporte suivant un ensemble d’opérations qui lui sont applicables. De plus, un ensemble d'attributs caractérisent l'état d'un objet, et l'on dispose d'un ensemble d'opérations (les méthodes) qui permettent d'agir sur le comportement de notre objet. Un objet est l'instance d'une classe, et une classe, est un type de données abstrait, caractérisé par des propriétés (ses attributs et ses méthodes) communes à des objets, qui permet de créer des objets possédant ces propriétés. |
|
|
|
|
L'approche objet
a été inventée pour faciliter l'évolution
d'applications complexes. |
||
Programmation OO - programmation structurée
La programmation orienté objets par comparaison à la programmation classique (structurée ou algorithmique)
| Programmation structurée | a été conçue pour organiser les programmes complexes en associant les traitement aux structures de données formelles ou réels qu’ils manipulent.
|
|
| Programmation orientée objet |
Répond à ces limites de la programmation structurée par le concept d’encapsulation (qui applique le principe d’abstraction) des données et des opérations qui les manipulent dans les objets, c’est-à-dire qu’un objet n’est pas accessible que par ces opérations visibles (son interface externe) et son implémentation (les structures de données associées) est caché. Elle apporte l’indépendance entre les programmes, les données et les procédures parce que les programmes peuvent partager les mêmes objets sans avoir à se connaître comme avec le mécanisme d’import/export.
|
|
La notion d'objet
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 (Object Pascal, C++, Java, etc.). |
| Objet = identité + état (attributs) + comportement (méthodes) |
|
La notion de classe
On appelle classe la structure d’un objet, c’est-à-dire la déclaration de l’ensemble des entités qui composeront un objet. Les objets de même nature ont en général la même structure et le même comportement. La classe factorise les caractéristiques communes de ces objets et permet de les classifier. Un objet est donc, une instanciation d’une classe, c’est la raison pour laquelle on pourra parler indifféremment d’objet ou d’instance (éventuellement d’occurrence). Toutes les instances d'une classe constituent l'extension de la classe.
|
| classe = instanciation + attributs (variables d'instances)+ opérations |
|
| Les méthodes objet |
La modélisation objet consiste à créer une représentation informatique des éléments du monde réel, 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 de conception et de développement orientées objet 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.
|
|
| L’encapsulation |
Le concept d’encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d’une structure en cachant l’implémentation de l’objet, c’est-à-dire en empêchant l’accès aux données par un autre moyen que les services proposés. L’encapsulation permet donc de garantir l’intègrité des données contenues dans l’objet. L’encapsulation permet de définir des niveaux de visibilité des éléments de la classe. ces niveaux de visibilité définissent les droits d’accès aux données selon que l’on y accède par une méthode de la classe elle-même, d’une classe héritière, ou bien d’une classe quelconque.
|
|
La notion d'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" (ou parfois 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.
|
| Hiérarchie des classes |
L'hiérachie des classes ou l'association (relationship)
est un concept essentiel pour la modélisation des données.On
peut représenter sous forme de hiérarchie de classes,
parfois appelée arborescence de classes, la relation de parenté
qui existe entre les différentes classes. L’hiérarchie
commence par une classe générale
appelée superclasse (classe de
base, classe parent, classe ancêtre, classe mère ou classe
père). Puis les classes dérivées (classe
fille ou sous-classe) deviennent de plus en plus spécialisées.
|
|
| Héritage multiple |
Certains langages orientés objet, tels que le C++, permettent de faire de l’héritage multiple, ce qui signifie qu’ils offrent la possibilité de faire hériter une classe de deux superclasse. Ainsi, cette technique permet de regrouper au sein d’une seule et même classe les attributs et les méthodes de plusieurs classes. L'héritage multiple représente le mécanisme par lequel une sous-classe hérite des proprietés de plus d'une super-classe. |
|
| Polymorphisme |
Le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs formes. Cette caractéristique essentielle de la programmation orientée objet caractérise la possibilité de définir plusieurs fonctions de même nom mais possédant des paramètres différents (en nombre et/ou en type), si bien que la bonne fonction sera choisie en fonction de ses paramètres lors de l’appel. Le polymorphisme représente la faculté d'une opération de s'appliquer à des objets de classes différentes.
|
|
Bibiographie
| [Objet2000] | Bouzeghoub M., Gardarin G., Valduriez P., Les objets, Eyrolles, 2000 |
| [CPOO2000] | Meyer Bertrand, Conception et programmation orientées objet, Eyrolles, 2000 |