> Retour au Perl et XML - Maitrise Tal 2002 <


PROGRAMMATION OBJET PERL

 

La programmation objet permet de créer des classes d'objets ou packages auxqelles on aplique des procédures nommées méthodes. On associés à un objet (réference) des champs à modifier

 

Création d'un programme dico.pl sur l'exemple du code word.pl (voir le cours)

 

 

----------------------->Programme dico.pm

 

#/usr/local/bin/perl

 

package dico;                                                                                                             #déclaration d'un package

 sub new {                                                                                                                  # new constructer de l'objet

    my ($class,$mot,$forme,$categorie,$traits,$lettre)= @_;                                         #création d'un tableau à 6 objets

    my $self={};                                                     

    $self->{'MOT'} = $mot;                                                                                        #appel objet dico

    $self->{'FORME'} = $forme;

    $self->{'CATEGORIE'} = $categorie;

    $self->{'TRAITS'} = $traits;

    $self->{'LETTRE'} = $lettre;

    return bless($self);                                                                                                   #bless rend visible objet de l'exterieur

}

 

sub DESTROY {                                                                                                        # DESTORY- destructeur, appel à la destruction

    my ($self) = @_;

    print ":-> La lettre $self->{'LETTRE'} comme $self->{'FORME'}\n";

}

 

sub affiche {

    my ($self) = @_;                                                                                                     #affiche de la situation MOT et CATEGORIE

    print "> Le mot $self->{'MOT'} a pour categorie : $self->{'CATEGORIE'}\n";

}

 

 

sub BEGIN {

    print " \n \n             LE DICO DE M. STACHURA\n            -_-_-_-_-_-_-_-_-_-_-_-_-\n    \n";   #imprime debut de caractère

}

 

sub END {

print "\n- Dictionnaire realise par M. Stachura - Avril 2002 - &:-)~D \n \n";                              #imprime fin de caractère

}

 

sub forme {

    my $self=shift;

    if (@_)

    { $self->{'FORME'}=shift}

    return  $self->{'FORME'};

}

 

sub mot {

    my $self=shift;

    if (@_)

    { $self->{'MOT'}=shift}

    return  $self->{'MOT'};

}

 

sub categorie {

    my $self=shift;

    if (@_)

    { $self->{'CATEGORIE'}=shift}

    return $self->{'CATEGORIE'};

}

 

sub traits {

    my $self=shift;

    if (@_)

    { $self->{'TRAITS'}=shift}

   return   $self->{'TRAITS'};

}

 

sub lettre {

    my $self=shift;

    if (@_)

    { $self->{'LETTRE'}=shift}

   return   $self->{'LETTRE'};

}

1;                                                                   #une classe objet se termine par 1;

 

 

 

--------------------------->Programme useDico.pl

 

Programme useDico.pl utilise la classe d'objet et fait appel aux méthode defini dans dico.pm

 

 

 

#/usr/bin/perl

use dico;                                                   #directive pour dire qu'on utilise le package dico

$aime = new dico("AIMERA","AIMER","VERBE","Groupe 1, pers 2","A");      # passage en argument

# d' informations sur le dico à la methode new definie dans le programme dico.pm  

$chan = new dico("CHANTERA","CHANTER","VERBE","Groupe 1, pers 2","C");

$gaie = new dico("GAIE","GAI","ADJECTIF","Genre feminin, singulier","G");

$gren = new dico("GRENOUILLES","GRENOUILLE","NOM","Genre feminin, pluriel","G");

$jacq = new dico("JACQUES","JACQUES","PRENOM","Genre masculin, invariable","J");

$main = new dico("MAINTENANT","MAINTENANT","ADVERBE","Genre invariable","M");

$morv = new dico("MORVAN","MORVAN","NOM PROPRE","Genre invariable","M");

$quat = new dico("QUATRE","QUATRE","NOM ET ADJECTIF","Genre masculin et numerique, invariable","Q");

$vien = new dico("VIENS","VENIR","VERBE","Groupe 2, pers 1","V");

 

 

printf "\t\t\t- A -\nForme : %s \nMot : %s \nCategorie : %s \nTraits : %s \n\n",$aime->forme,$aime->mot,$aime->categorie,$aime->traits;

printf "\t\t\t- C -\nForme : %s \nMot : %s \nCategorie : %s \nTraits : %s \n \n",$chan->forme,$chan->mot,$chan->categorie,$chan->traits;

printf "\t\t\t- G -\nForme : %s \nMot : %s \nCategorie : %s \nTraits : %s \n \n",$gaie->forme,$gaie->mot,$gaie->categorie,$gaie->traits;

printf "\t\t\t- G -\nForme : %s \nMot : %s \nCategorie : %s \nTraits : %s \n \n",$gren->forme,$gren->mot,$gren->categorie,$gren->traits;

printf "\t\t\t- J -\nForme : %s \nMot : %s \nCategorie : %s \nTraits : %s \n \n",$jacq->forme,$jacq->mot,$jacq->categorie,$jacq->traits;

printf "\t\t\t- M -\nForme : %s \nMot : %s \nCategorie : %s \nTraits : %s \n \n",$main->forme,$main->mot,$main->categorie,$main->traits;

printf "\t\t\t- M -\nForme : %s \nMot : %s \nCategorie : %s \nTraits : %s \n \n",$morv->forme,$morv->mot,$morv->categorie,$morv->traits;

printf "\t\t\t- Q -\nForme : %s \nMot : %s \nCategorie : %s \nTraits : %s \n \n",$quat->forme,$quat->mot,$quat->categorie,$quat->traits;

printf "\t\t\t- Q -\nForme : %s \nMot : %s \nCategorie : %s \nTraits : %s \n \n",$vien->forme,$vien->mot,$vien->categorie,$vien->traits;

 

$aime->affiche;

$chan->affiche;

$gaie->affiche;

$gren->affiche;

$jacq->affiche;

$main->affiche;

$morv->affiche;

$quat->affiche;

$vien->affiche;

 

 

 

------------------------------------------------->Résultat sous MS-DOS  1

 

 

------------------------------------------------->Résultat sous MS-DOS  en entier

 

 

C:\Perloo>perl useDico.pl

 

 

             LE DICO DE M. STACHURA

           -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

 

                        - A -

Forme : AIMER

Mot : AIMERA

Categorie : VERBE

Traits : Groupe 1, pers 2

 

                        - C -

Forme : CHANTER

Mot : CHANTERA

Categorie : VERBE

Traits : Groupe 1, pers 2

 

                        - G -

Forme : GAI

Mot : GAIE

Categorie : ADJECTIF

Traits : Genre feminin, singulier

 

                        - G -

Forme : GRENOUILLE

Mot : GRENOUILLES

Categorie : NOM

Traits : Genre feminin, pluriel

 

                        - J -

Forme : JACQUES

Mot : JACQUES

Categorie : PRENOM

Traits : Genre masculin, invariable

 

                        - M -

Forme : MAINTENANT

Mot : MAINTENANT

Categorie : ADVERBE

Traits : Genre invariable

 

                        - M -

Forme : MORVAN

Mot : MORVAN

Categorie : NOM PROPRE

Traits : Genre invariable

 

                        - Q -

Forme : QUATRE

Mot : QUATRE

Categorie : NOM ET ADJECTIF

Traits : Genre masculin et numerique, invariable

 

                        - Q -

Forme : VENIR

Mot : VIENS

Categorie : VERBE

Traits : Groupe 2, pers 1

 

> Le mot AIMERA a pour categorie : VERBE

> Le mot CHANTERA a pour categorie : VERBE

> Le mot GAIE a pour categorie : ADJECTIF

> Le mot GRENOUILLES a pour categorie : NOM

> Le mot JACQUES a pour categorie : PRENOM

> Le mot MAINTENANT a pour categorie : ADVERBE

> Le mot MORVAN a pour categorie : NOM PROPRE

> Le mot QUATRE a pour categorie : NOM ET ADJECTIF

> Le mot VIENS a pour categorie : VERBE

 

- Dictionnaire realise par M. Stachura - Avril 2002 - &:-)~D

 

:-> La lettre G comme GAI

:-> La lettre G comme GRENOUILLE

:-> La lettre J comme JACQUES

:-> La lettre M comme MAINTENANT

:-> La lettre M comme MORVAN

:-> La lettre Q comme QUATRE

:-> La lettre V comme VENIR

:-> La lettre C comme CHANTER

:-> La lettre A comme AIMER

 

C:\Perloo>

 

 


> Retour au Perl et XML - Maitrise Tal 2002 <