|
| |
La
programmation Orientée Objet.
Avant propos
Je ne suis pas l'auteur de cet
article.
Merci
à ZIP DAVIS et ZD NET FRANCE pour ces Informations.
La programmation orientée objet
Par Olivier Caussin
La programmation
orientation objet (POO) et les concepts la définissant (lhéritage,
lencapsulation, le polymorphisme), ont tendance à effrayer les non initiés.
Suivant vos connaissances et votre niveau dexigence, vous pouvez souhaiter adhérer
strictement à la théorie objet ou nen emprunter que certains paradigmes. Sachez
néanmoins pour vous décomplexer que parmi la population de développeurs C++, moins de
5% dentre eux utilisent les notions les plus complexes comme lhéritage
multiple ou pire encore les nouvelles extensions C++ du comité ANSI telles que RTTI
(Run-Time Type Information). Parallèlement à lutilisation de composants, les
outils L4G (Visual Basic ou PowerBuilder) intègrent version après version certaines
caractéristiques objet. Du coté des langages orientés objet, SmallTalk, bien que
beaucoup plus conforme à la POO que ne lest le C++, na pas la reconnaissance
du marché quil mériterait. Il semblerait que les développeurs soient sensibles à
la souplesse du C++, qui permet une juste répartition entre des procédures C et des
classes C++, face à lintégrisme des outils 100% objets. Il est encore trop tôt
pour tirer des conclusions sur Java, ce dernier langage ayant de nombreuses qualités en
dehors de son orientation objet poussée.
Les concepts
Bien que lobjet en informatique
nait jamais été globalement normalisé, les milieux académiques saccordent
sur quelques concepts de base. Le point de départ dun objet est un objet du monde
réel, palpable ou immatériel. Une classe est limplémentation de cet objet dans un
logiciel. Ces classes contiennent des propriétés et des méthodes, fonctions
spécifiques à la classe et la manipulant. Pour appeler une méthode, il est nécessaire
de disposer au préalable du nom de lobjet sur lequel va agir la méthode, ainsi que
déventuels paramètres. On utilise diverses notations dont le point (.) en C++
(Objet.Méthode) ou en Visual Basic, la flèche (->) en C++ si lon dispose
dun pointeur sur lobjet (pObjet->Méthode). Comme dans le monde réel,
certains objets sont associés entre eux. Via le mécanisme de lhéritage, une
sous-classe peut hériter des méthodes et des propriétés de sa classe parente. Les
classes héritées ne sont au départ que des copies de leur parent, mais peuvent ensuite
évoluer en ajoutant des propriétés ou des méthodes, voire en modifiant les méthodes
existantes (mécanisme de surcharge). Via lhéritage multiple, une classe peut
hériter simultanément de plusieurs parents. Le C++ permet lhéritage multiple,
mais pas le Pascal de Delphi. Le concept le plus intimidant en programmation objet est
peut-être le polymorphisme. Si une hiérarchie de classes est définie (classes et
sous-classes) telle quune méthode est présente dans toutes les classes, on peut
alors parler de polymorphisme. Soit par exemple une classe Véhicule comprenant la
méthode SeDéplacer(). Les sous-classes Voiture, Avion et Bateau nimplémentent pas
de la même manière la méthode SeDéplacer(). Appeler la méthode au sommet de la
hiérarchie (sur un objet Avion utilisé en tant que Véhicule) revient à appeler la
méthode sur la classe Avion. Lutilisation adéquate du polymorphisme peut
simplifier lécriture de programme et sa maintenance. Le mot-clé
Implement de la nouvelle version 5.0 de Visual Basic permet enfin
dutiliser le polymorphisme. Les objets peuvent disposer dune facette
officielle (ce sont les propriétés et méthodes publiques) et dune autre cachée
des autres objets de la même classe, voire des autres objets des classes différentes au
sein dune application. Cest ce quon appelle lencapsulation. Il est
ainsi possible dutiliser un objet sans savoir comment il fonctionne ni comment il
est implémenté. Cest sur ce principe que ce sont développés les frameworks de
classes telles que MFC de Microsoft ou OWL de Borland, encapsulant des centaines de
milliers de lignes de code dans quelques centaines de classes, utilisables à travers des
interfaces normalisées.
Lhéritage visuel
Un nouveau concept de la POO a fait
son apparition depuis quelques années, introduite par PowerBuilder de Powersoft, puis par
Delphi 2.0 et aujourdhui par C++ Builder de Borland. Il sagit dhériter
non pas dune classe, mais dun objet graphique, dune fenêtre ou même
dun simple contrôle. Lobjet qui en hérite est plus quune copie,
puisque toute modification des propriétés de la fenêtre mère est immédiatement
répercutée sur la fille. Inversement, les modifications de la fenêtre fille sont
possibles, et ont pour effet de déconnecter les liens avec la mère, mais uniquement sur
la propriété modifiée. Cet héritage visuel peut se faire en cascade sur plusieurs
niveaux et permet une réelle réutilisation dobjets graphiques, de manière
beaucoup moins abstraite que lhéritage classique de la POO, et donc bien adaptée
aux environnements RAD.
|