OVH Cloud OVH Cloud

La fonction bless pour la POO ?

2 réponses
Avatar
David C.
Je ne vois pas du tout l'utilité de la fonction bless
en programmation orienté objet. J'ai lu plein de doc dessus
mais je ne vois pas du tout à quoi cela sert.
Pouvez vous me l'expliquer SVP.

Merci

2 réponses

Avatar
Alain BARBET
David C. wrote:
Je ne vois pas du tout l'utilité de la fonction bless
en programmation orienté objet.


En Java ou en C++, cette fonction est implicite dès que tu appelles un
constructeur. On cree une instance d'un objet.
Maclasse toto = new Maclasse();

Et on a une methode:

Maclasse::Maclasse() {}

Qui sera appellé quand tu fais new.

En Perl, ce mécanisme n'existe pas.

Donc il y en a un autre:

Quand tu cree une instance, (en Perl, on "consacre" (bless) une
variable, question de vocabulaire ...) en appelant new, cela implique
que dans ton package tu as une fonction new, et qui contient au moins ceci:

sub new {
my $class = shift;
my $self = {};
bless $self, $class;
return $self;
}

Apres on fait
my $var = new Maclasse();

Et maintenant on peut faire:

print $var->une_method_de_ma_class();

Sans le bless, cet appel n'est pas possible.
Sans le bless, dur de faire de POO en Perl.
En gros bless permet de typer une reference.
bless mavariable, Maclasse = "Ceci est une référence de Maclasse()"

--
The only real way to look younger is not to be born so soon.
-- Charles Schulz, "Things I've Had to Learn Over and
Over and Over"

Avatar
Laurent Wacrenier
David C. écrit:
Je ne vois pas du tout l'utilité de la fonction bless
en programmation orienté objet. J'ai lu plein de doc dessus
mais je ne vois pas du tout à quoi cela sert.


Elle modifie le type de l'objet (que l'on peut relire avec "ref").
Perl va déterminer avec le type quelles sont les méthodes applicables
à l'objet.