Introduction à la Programmation Orientée Objet

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