II. La programmation Objet en Pascal : cas du compilateur Free-Pascal▲
II-A. Le Pascal Objet▲
Le langage pascal était à l'origine limité à la programmation procédurale. Celui-ci à subit par la suite diverses évolutions
et plusieurs projets ont tenté d'étendre les possibilité dudit langage pour lui offrir les concepts de la programmation objet.
L'un des premiers fût implémenter dans Turbo Pascal 7 qui a introduit les objets avec une notion non loin des structures -record-
existant en Pascal standard mais offrant les notions d'encapsulation -public, private-, d'héritage et de polymorphisque grace Ã
l'utilisation des pointeurs.
Plutard, plusieurs projets sont parvenus à élever le langage Pascal au rang des langages les plus populaires du marché
en lui offrant les notions de la Programmation Orientée Objet tel que maintenant définies. Parmi ceux-ci, nous pouvons citer FreePascal et Delphi.
Dans cet article, nous étudierons les motifs de conception avec les notions de programmations orientées tels que défini par Free Pascal.
II-B. Les classes en Free-Pascal▲
Free Pascal utilise la notion de classe pour introduire la Programmation Orientée Objet. Une classe est une fabrique ou un modèle servant à produire des objects du même type que la classe. La classe définit les propriétès et les comportement que devrons avoir tous les ojects faits à partir de cette fabrique.
Les objets crée à partir d'un modele de classe sont accéssible à partir d'une réference que contient les variables dans le programme.
Une exemple de code portant sur la création d'un objet :
Unit
UModele;
interface
type
Modele : class
Begin
private
nom : String
;
private
prenom : String
;
public
constructor
init(_nom : String
; _prenom : String
);
public
procedure
say();
End
;
Implementation
constructor
Modele.init(_nom : String
; _prenom : String
);
begin
nom := _nom;
prenom := _prenom;
end
;
procedure
Modele.say();
begin
writeln('mon nom est : '
+nom+' et mon prénom est '
+prenom);
end
;
End
.
On peut alors construire une classe comme suit :
var
personne : Modele;
Begin
personne := Modele.init('Nabster'
, 'Darryl'
);
personne.say();
End
.
Comme vous avez pu le constater, une classe se définit en deux partie : d'abord l'entête de la classe contenant les propriétés de cette classe
ainsi que la signature des méthodes, ensuite vient la définition des méthodes.
Lors de l'instantiation de l'objet, on appelle le constructor de la classe avec les paramètre adéquats. Vous devez garder à l'esprit que
la variable personne ne contient qu'une réference vers l'objet qui a été crée et non l'objet en lui même. Si l'on fait une analogie
avec les pointeurs, la variable personne ne contiendrait que l'adresse mémoire de l'objet qui a été précedemment crée.
L'encapsulation est un autre point éssentiel de la programmation qui se définit simplement par la possibilié qu'à une classe de cacher certains
de ses membres - propriétés ou méthodes- pour que ceux-ci ne soient pas accessibles que sous certaines conditions.
Aisin, Free Pascal définit trois niveau de visibilité qui sont :
- Private : les élements privés d'une classe ne sont accessible qu'à l'interieur de la classe elle même
- Protected : Comme les éléments privates mais, ceux sont aussi disponibles aux classes héritant de cette classe
- Public : Ces éléments sont directement accessible meme depuis l'exterieur de la classe.