IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Programmation orientée objets en Perl > Créer un objet en Perl
        Comment créer un objet en Perl ?
        Comment invoquer le constructeur ?
        Comment définir les variables caractérisants un objet ?
        Comment initialiser les variables caractérisant l'objet ?

rechercher
precedent    sommaire    suivant    telecharger


Comment créer un objet en Perl ?
auteur : Woufeil
Un objet se construit à l'aide d'une fonction spéciale appelée constructeur. C'est une méthode de classe, elle recevra donc pour premier argument le nom de la classe à laquelle appartient l'objet. En Perl, un objet est un référent, qui est la plupart du temps une table de hachage. Pour déclarer ce référent comme un objet, on utilise la fonction bless (que l'on pourrait traduire ''consacrer'' en Français) en lui passant comme argument la référence vers l'objet et le nom de la classe de l'objet (donc le nom du module contenant le constructeur). Cette fonction va lier la référence à la classe pour ensuite retourner la référence consacrée. Ainsi, l'objet ''saura'' à quelle classe il appartient. Un petit exemple vaut mieux qu'un long discours :
Package Classe1;
use strict;
sub constructeur
{
   my ($classe) = @_; #la fonction reçoit comme premier paramètre le nom de la classe
   my $this = {}; #référence anonyme vers une table de hachage vide
   bless ($this,$classe); #lie la référence à la classe
   return $this; #on retourne la référence consacrée
}
1; #indique la fin du module
Voilà un exemple de constructeur. Pour déclarer un objet membre de Classe1, il suffit d'appeler ce constructeur. On peut définir plusieurs constructeurs pour la même classe en Perl, il suffit de créer une seconde fonction retournant une référence consacrée.


Comment invoquer le constructeur ?
auteur : Woufeil
Pour invoquer des méthodes en Perl, on utilise l'opérateur flèche qui s'écrit comme ceci : ->. La syntaxe d'invocation est celle ci : invoquant->méthode(paramètres). L'invoquant est sois le nom de la classe si l'on invoque une méthode de classe sois le nom de l'objet auquel s'applique la méthode si l'on invoque une méthode d'instance. Ici, notre constructeur est une méthode de classe, son invoquant est donc le nom de la classe dans laquelle il est définit. Ainsi, pour créer un objet appelé obj1 à laide du constructeur précédemment définit, on fera ainsi :
my $obj1 = Classe1->constructeur();
"Mais pourquoi ne passons-nous pas comme paramètre à la fonction le nom de la classe ?" allez vous me dire ? C'est fait automatiquement ! La méthode recevra toute seule comme premier paramètre l'invoquant avec lequel elle a été invoquée, ici Classe1. Il existe également une seconde syntaxe d'invocation : méthode invoquant (paramètres). On peut donc invoquer le constructeur comme ceci : constructeur Classe1 ();


Comment définir les variables caractérisants un objet ?
auteur : Woufeil
C'est facile ! Dans le constructeur on crée une référence anonyme vers une table de hachage. Cette table n'est pas nécessairement (et ne devrais pas être) vide ! Reprenons l'exemple de la classe humain. On veut que notre humain est un nom et un âge. Voici le constructeur qui permet de faire ça :
Packge Humain;
use strict;
sub constructeur
{
   my ($classe) = @_; #la fonction reçoit comme premier paramètre le nom de la classe
   my $this = {''nom'' => ''Dupond'',
              ''age'' => 35}; #initialise les variables nom et age
   bless ($this,$classe); #lie la référence à la classe
   return $this; #on retourne la référence consacrée
}
1;

Comment initialiser les variables caractérisant l'objet ?
auteur : Woufeil
Le constructeur est une fonction, il ne reçoit pas forcément un seul paramètre. Ainsi si l'on veut définir l'âge et le nom de l'humain que l'on va créer lors de l'appel du constructeur, il suffit de lui passer comme argument ces deux données. Appel du constructeur : my $dupond = Humain->constructeur(''Dupond'',35); Définition du constructeur :
sub constructeur
{
   my ($classe, $nom, $age) = @_;
   my $this = {''nom'' => $nom,
              ''age'' => $age}; #initialise les variables nom et age
   bless ($this,$classe); #lie la référence à la classe
   return $this; #on retourne la référence consacrée
}
Attention, le premier paramètre reste le nom de la classe ! Le premier paramètre donné lors de l'appel correspond au second paramètre du constructeur.


rechercher
precedent    sommaire    suivant    telecharger

Consultez les autres F.A.Q's

Valid XHTML 1.1!Valid CSS!


Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2005 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.