| L |
es langages orientés objet permettent de regrouper
les données et les procédures s'y rapportant dans un même
"enregistrement" : l'objet. La conception est ainsi beaucoup
plus facilement organisée et le programme, naturellement structuré,
devient plus lisible. Il convient bien entendu pour profiter de ces avantages
de savoir séparer les données et les algorithmes en entités
simples et cohérentes : c'est l'enjeu de la programmation
objet.
|
|
| |
Description
générale
|
|
| B |
ien que plus ou moins récente (les premiers
langages OO datent de la fin des années 70), la méthode de
développement (et d'analyse et de conception) orientée objet
n'a jamais connu d'heures aussi glorieuses qu'en cette fin des années
90.
Cette méthode nous fournit non seulement une nouvelle technique de
conception et de développement des systèmes d'information
(SI) mais aussi une foule de concepts fondamentaux qui révolutionnent
le monde des SI.
Parmi ces concepts fondamentaux, notons, entre autres, les objets (évidemment),
les classes, l'encapsulation, l'héritage, le polymorphisme et l'agrégation.
Sans être tous des concepts inédits, les concepts à
la base de la méthode orientée objet sont utilisés
de façon telle qu'ils créent un nouveau paradigme qui se détache
de façon marquée des méthodes de conception structurée
(orientées traitements - développement traditionnel) et des
méthodes de conception orientées vers les données.
Voyons donc de plus près quels sont ces différents concepts. |
|
| |
|
|
|
O
b
j
e
t
|
On peut qualifier un objet de la façon suivante: "un
objet est quelque chose de réel
ou d'abstrait, de tangible ou d'intangible, à propos duquel on emmagasine
des données et les méthodes (procédures, fonctions)
permettant de les manipuler" . Il ne s'agit là que d'une définition
parmi tant d'autres mais elle contient 3 des éléments fondamentaux
qui définissent un objet soit, le caractère réel ou
abstrait d'un objet (ex. un avion ou la représentation d'un avion),
le caractère intangible ou tangible (ex. avion ou vol) et ce qu'il
contient (les données et les méthodes de manipulation). Un
quatrième élément fondamental de l'objet est son unicité.
Chaque objet est une occurrence et peut donc être identifié
de façon unique, être distingué des autres objets (l'avion
1 n'est pas l'avion 2). La structure de données d'un objet est définie
en terme d'attributs. Ces attributs sont des valeurs qui sont associées
et étroitement connectées aux objets (ex. le modèle,
l'année de fabrication, la taille, etc... d'un avion). |
|
| |
|
|
C
l
a
s
s
e |
Une classe d'objets permet
de regrouper des objets possédant les mêmes caractéristiques
(même structure et même ensemble de méthodes) afin d'en
faciliter la gestion. Les classes, qui possèdent aussi leurs méthodes,
sont utilisées pour créer de nouveaux objets (de nouvelles
instances). Les classes agissent un peu comme des "moules à
objets". |
|
| |
|
|
| |
Déclaration
de classe |
|
| |
type
TMonObjet = class
Entier: integer;
Chaine: string;
procedure Convertit;
end;
|
|
| |
L'
implémentation de la procédure |
|
| |
procedure TMonObjet.Convertit;
begin
Chaine := IntToStr(Entier);
end;
|
|
| |
Utilisation
de l'objet (instance) |
|
| |
var
Tmp: TMonObjet;
begin
Tmp: TMonObjet.Create;
Tmp.Entier := 5;
Tmp.Convertit;
label1.caption := Tmp.Chaine;
Tmp.Free;
end;
|
|
| |
|
|
|
E
n
c
a
p
s
u
l
a
t
i
o
n
|
L'encapsulation signifie,
en termes simples, que les données, de même que les méthodes
permettant de les manipuler, sont contenues dans un même emballage
(objet) et qu'un utilisateur (humain ou un autre objet) ne peut directement
atteindre les données associées à cet objet. L'utilisateur
peut accéder aux données d'un objet uniquement en effectuant
une requête sur les méthodes de manipulation des données
de cet objet. Cet utilisateur est donc uniquement concerné par la
requête de services à effectuer et non par les détails
et la façon dont ces services sont effectués. |
|
| |
|
|
H
é
r
i
t
a
g
e |
L'héritage est
un concept qui découle directement des processus cognitifs naturels
que sont la classification, la généralisation et la spécialisation.
Plus spécifiquement, "l'héritage est une relation entre
les classes qui permet la définition et la mise en oeuvre d'une classe
basée sur d'autres classes existantes" (Korson et McGregor).
Ainsi, la relation d'héritage permet à une classe d'objets
(sous-classe) de réutiliser les attributs et les opérations
(méthodes) définis pour une classe d'objets plus générale
(superclasse) . L'héritage peut être simple ou multiple. L'héritage
simple permet à une sous-classe d'avoir uniquement une seule superclasse,
alors que l'héritage multiple permet à une sous-classe d'avoir
plusieurs superclasses. |
|
| |
|
|
| |
Utilisation |
|
| |
type
TMonSuperObjet = class(TMonObjet)
procedure ChaineVersEntier;
end;
|
|
| |
|
|
A
g
r
é
g
a
t
i
o
n |
L'agrégation est
une relation qui permet de décrire un objet composite en terme d'objets
qui le constituent (ex. avion = 1 carlingue + 3 trains d'atterrissage +
2 ailes, etc). |
|
| |
|
|
P
o
l
y
m
o
r
p
h
i
s
m
e |
Le polymorphisme permet
à une sous-classe d'outrepasser l'implantation d'une méthode
héritée d'une superclasse. Il consiste, tout en gardant le
même nom pour une méthode héritée, à associer
un code spécifique qui vient ainsi se substituer à celui de
la méthode héritée. Lorsque la méthode est appelée,
l'utilisateur (humain ou autre objet) n'a pas besoin de connaître
quelle est l'implantation précise à sélectionner puisque
le système 00 se charge de sélectionner le code qui est approprié
pour la classe en question. |
|
| |
|
|
|
L
a
r
é
u
t
i
l
i
s
a
t
i
o
n
|
à travers son mécanisme d'héritage, la
méthode orientée objet permet la réutilisation
des composantes (classes, objets) à l'intérieur d'un même
système de même qu'à l'intérieur de plusieurs
systèmes. Le concept de réutilisation n'est pas unique à
la méthode objet mais, contrairement aux autres méthodes (conception
structurée et conception orientée vers les données),
son application y est quasi implicite. La réutilisation est considérée
par plusieurs experts comme le "Saint-Graal" du développement
puisqu'elle permet d'accélérer la vitesse de développement
et ainsi de réduire les coûts qui y sont liés. Un bon
avantage pour la méthode OO. |
|
| |
|
|
| |
Cette méthode de programmation permet
aussi à un autre développeur d'ajouter très facilement
une fonction sans même connaitre les détails de l'implémentation
des éléménts qui composent le programme.
Enfin, c'est encore la POO
qui autorise une programmation événementielle et graphique
simple ou qui permet la création de composants. |
|
| |
|
|
| |
 |
|