mardi 12 mai 2009


Il est impossible de parler de Programmation Orientée Objet sans parler d'objet, bien entendu. Tâchons donc de donner une définition aussi complète que possible d'un objet.Un objet est avant tout une structure de données. Autrement, il s'agit d'une entité chargée de gérer des données, de les classer, et de les stocker sous une certaine forme. En cela, rien ne distingue un objet d'une quelconque autre structure de données. La principale différence vient du fait que l'objet regroupe les données et les moyens de traitement de ces données.Un objet rassemble de fait deux éléments de la programmation procédurale :
Les champs :Les champs sont à l'objet ce que les variables sont à un programme : ce sont eux qui ont en charge les données à gérer. Tout comme n'importe quelle autre variable, un champ peut posséder un type quelconque défini au préalable : nombre, caractère, ..., ou même un type objet.
Les méthodes :Les méthodes sont les éléments d'un objet qui servent d'interface entre les données et le programme. Sous ce nom obscur se cachent simplement des procédures ou fonctions destinées à traiter les données.
Les champs et les méthodes d'un objets sont ses membres.Si nous résumons, un objet est donc un type servant à stocker des données dans des champs et à les gérer au travers des méthodes.Si on se rapproche du Pascal, un objet n'est donc qu'une extension évoluée des enregistrements (type record) disposant de procédures et fonctions pour gérer les champs qu'il contient.

Avec la notion d'objet, il convient d'amener la notion de classe. Cette notion de classe n'est apparue dans le langage Pascal qu'avec l'avènement du langage Delphi et de sa nouvelle approche de la Programmation Orientée Objet. Elle est totalement absente du Pascal standard.Ce que l'on a pu nommer jusqu'à présent objet est, pour Delphi, une classe d'objet. Il s'agit donc du type à proprement parler. L'objet en lui-même est une instance de classe, plus simplement un exemplaire d'une classe, sa représentation en mémoire.Par conséquent, on déclare comme type une classe, et on déclare des variables de ce type appelées des objets.Si cette distinction est à bien prendre en considération lors de la programmation en Delphi, elle peut toutefois être totalement ignorée avec la plupart des autres compilateurs Pascal. En effet, ceux-ci ne s'appuient que sur les notions d'objet et d'instance d'objet.Nous adopterons par conséquent ici ce point vue, qui simplifie le vocabulaire et la compréhension.On pourra remarquer que FreePascal pour sa part définit une classe comme un "pointeur vers un objet ou un enregistrement".

La Programmation Orientée Objet est dirigée par 3 fondamentaux qu'il convient de toujours garder à l'esprit : encapsulation, héritage et polymorphisme. Houlà ! Inutile de fuir en voyant cela, car en fait, il ne cachent que des choses relativement simples. Nous allons tenter de les expliquer tout de suite.

Derrière ce terme se cache le concept même de l'objet : réunir sous la même entité les données et les moyens de les gérer, à savoir les champs et les méthodes.L'encapsulation introduit donc une nouvelle manière de gérer des données. Il ne s'agit plus de déclarer des données générales puis un ensemble de procédures et fonctions destinées à les gérer de manière séparée, mais bien de réunir le tout sous le couvert d'une seule et même entité.Si l'encapsulation est déjà une réalité dans les langages procéduraux (comme le Pascal non objet par exemple) au travers des unités et autres librairies, il prend une toute nouvelle dimension avec l'objet. En effet, sous ce nouveau concept se cache également un autre élément à prendre en compte : pouvoir masquer aux yeux d'un programmeur extérieur tous les rouages d'un objet et donc l'ensemble des procédures et fonctions destinées à la gestion interne de l'objet, auxquelles le programmeur final n'aura pas à avoir accès. L'encapsulation permet donc de masquer un certain nombre de champs et méthodes tout en laissant visibles d'autres champs et méthodes. Nous verrons ceci un peu plus loin.Pour conclure, l'encapsulation permet de garder une cohérence dans la gestion de l'objet, tout en assurant l'intégrité des données qui ne pourront être accédées qu'au travers des méthodes visibles.

Si l'encapsulation pouvait se faire manuellement (grâce à la définition d'une unité par exemple), il en va tout autrement de l'héritage. Cette notion est celle qui s'explique le mieux au travers d'un exemple. Considérons un objet Bâtiment. Cet objet est pour le moins générique, et sa définition reste assez vague. On peut toutefois lui associer divers champs, dont par exemple :
Les murs
Le toit
Une porte
L'adresse
La superficie
On peut supposer que cet objet Bâtiment dispose d'un ensemble de méthodes destinées à sa gestion. On pourrait ainsi définir entre autres des méthodes pour :
Ouvrir le Bâtiment
Fermer le Bâtiment
Agrandir le Bâtiment
Grâce au concept d'héritage, cet objet Bâtiment va pouvoir donner naissance à un ou des descendants. Ces descendants vont tous bénéficier des caractéristiques propres de leur ancêtre, à savoir ses champs et méthodes. Cependant, les descendants conservent la possibilité de posséder leur propres champs et méthodes. Tout comme un enfant hérite des caractéristiques de ses parents et développe les siennes, un objet peut hériter des caractéristiques de son ancêtre, mais aussi en développer de nouvelles, ou bien encore se spécialiser.Ainsi, si l'on poursuit notre exemple, nous allons pouvoir créer un objet Maison. Ce nouvel objet est toujours considéré comme un Bâtiment, il possède donc toujours des murs, un toit, une porte, les champs Adresse ou Superficie et les méthodes destinées par exemple à Ouvrir le Bâtiment.Toutefois, si notre nouvel objet est toujours un Bâtiment, il n'en reste pas moins qu'il s'agit d'une Maison. On peut donc lui adjoindre d'autres champs et méthodes, et par exemple :
Nombre de fenêtres
Nombre d'étages
Nombre de pièces
Possède ou non un jardin
Possède une cave
Notre Bâtiment a ici bien évolué. Il s'est spécialisé. Avec notre Maison, nous sommes allés plus avant dans les détails, et elle est à même de nous offir des services plus évoluées. Nous avons complété ce qui n'était qu'un squelette.Ce processus d'héritage peut bien sûr être répété. Autrement dit, il est tout à fait possible de déclarer à présent un descendant de Maison, développant sa spécialisation : un Chalet ou encore une Villa. Mais de la même manière, il n'y a pas de restrictions théoriques concernant le nombre de descendants pour un objet. Ainsi, pourquoi ne pas déclarer des objets Immeuble ou encore Usine dont l'ancêtre commun serait toujours Bâtiment.Ce concept d'héritage ouvre donc la porte à un nouveau genre de programmation.On notera qu'une fois qu'un champ ou une méthode est définie, il ou elle le reste pour tous les descendants, quel que soit leur degré d'éloignement.

1 commentaire:

  1. Je suis ici pour partager mon témoignage de ce qu'une bonne société de prêt de confiance a fait pour moi. Je m'appelle Nikita Tanya, je suis russe et je suis une charmante mère de 3 enfants.J'ai perdu mes fonds en essayant d'obtenir un prêt que c'était si difficile pour moi et mes enfants, je suis allé en ligne pour demander une aide au prêt perdu jusqu'au jour où j'ai rencontré cet ami à moi qui a récemment obtenu un prêt d'un homme très honnête, M. Benjamin. Elle m'a présenté cet honnête agent de crédit M., Benjamin qui m'a aidé à obtenir un prêt dans les 5 jours ouvrables, je serai à jamais reconnaissant à M. Benjamin, de m'avoir aidé à me remettre sur pied. Vous pouvez contacter M. Benjamin par e-mail: 247officedept@gmail.com, ils ne savent pas que je fais ça pour eux, mais je dois juste le faire car beaucoup de gens ont besoin d'une aide au prêt, veuillez venir à cet honnête homme et vous pouvez également être sauvé .WhatsApp :( +1989-394-3740)

    RépondreSupprimer

free counters