Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1...
Transcript of Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1...
![Page 2: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/2.jpg)
Références
2 . 1
![Page 3: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/3.jpg)
RéférencesObjectif :
Construire des structures complexes~ pointeurs en C/C++ et références en Java
2 . 2
![Page 4: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/4.jpg)
Références
0x80ff4f2
10$v
Contenu Adresses /RéférencesNoms
Mémoire de l'ordinateur
0x80ff4f1
0x80ff4f0
0x80ff4f2
0xff15af6
0xff15af5
0xff15af7
.
.
.
.
$refv
2 . 3
![Page 5: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/5.jpg)
Références sur les scalaires
2 . 4
![Page 6: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/6.jpg)
Principe
0x80ff4f2
10$v
Contenu Adresses /RéférencesNoms
Mémoire de l'ordinateur
0x80ff4f1
0x80ff4f0
0x80ff4f2
0xff15af6
0xff15af5
0xff15af7
.
.
.
.
$refv
my $v = 10;my $refv = \$v;
2 . 5
![Page 7: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/7.jpg)
Principemy $v = 10;my $refv = \$v;print "$refv\n";
print "$$refv\n";
$$refv = 56;print "$$refv\n";print "$v\n";
2 . 6
![Page 8: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/8.jpg)
UtilisationModification dans une fonction
sub f1{ my ($ref) = @_; $$ref = $$ref + 10;}my $v = 20;my $refv = \$v;f1( $refv );print "$v\n";f1 ( \$v );print "$v\n";
2 . 7
![Page 9: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/9.jpg)
UtilisationRenvoi d'une variable par une fonction
sub f2{ my $v = 20; return \$v;}my $ref = f2();print "$$ref\n";
2 . 8
![Page 10: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/10.jpg)
QCM
Que contient $y?
30
40
50
60
sub f{ my ($x,$y) = @_; $$x = 20; $z = $y+10; return (\$z); }my $v = 10;my $w = 20;my $x = f(\$v,$w);my $y = $$x + $v;
2 . 9
![Page 11: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/11.jpg)
Références sur les tableaux
2 . 10
![Page 12: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/12.jpg)
Principe
0x80ff4f1
10
"ab"@tab
Contenu Adresses /RéférencesNoms
Mémoire de l'ordinateur
0x80ff4f1
0x80ff4f0
0x80ff4f2
0xff15af6
0xff15af5
0xff15af7
.
.
.
.
$reft
0
1
my @tab = ("ab",10);my $reft = \@tab;
2 . 11
![Page 13: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/13.jpg)
Principemy @tab = ("ab",10);my $reft = \@tab;
my @tab2 = @$reft;print "$tab2[1]\n";print "$$reft[1]\n";
@$reft = ("bc",11);print "$tab[0],$tab[1]\n";
$reft->[1] = 12;print "$tab[1]\n";
2 . 12
![Page 14: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/14.jpg)
PrincipeTableau Référence
tab $reft@tab @$reft$tab[i] $$reft[i]$tab[i] $reft->[i]
2 . 13
![Page 15: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/15.jpg)
Tableaux de tableaux
30
20
10
"tutu"@t1
Contenu Adresses /RéférencesNoms
Mémoire de l'ordinateur
0x80ff4f1
0x80ff4f2
0xff15af6
0xff15af5
.
.
@t2
0
1
2 0xff75121
0xff75122
.
.
@t0xff15af5
0x80ff4f1
"et"
20
0xff75123
0xff75124
0xff75125
0
0
1
1
2
3
4
my @t1 = ("tutu", 10);my @t2 = (20, 30);my @t = (2, \@t2, \@t1, ("et",20));
2 . 14
![Page 16: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/16.jpg)
Référence à un tableau dans une fonction
0x80ff4f1
10
"hello"@tab
Contenu Adresses /RéférencesNoms
Mémoire de l'ordinateur
0x80ff4f1
0x80ff4f2
0xff15af6
0xffffaf7
.
.
.
.
$ref
0
1
-22 0x80ff4f3
.
.
0x80ff4f1$reftab
sub f{ my ($reftab) = @_; $reftab->[2] = 40;}my @tab = ( "hello", 10, -2 );my $ref = \@tab;f( $ref );
2 . 15
![Page 17: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/17.jpg)
QCM
Comment accéder à $v depuis @t2?
$@$t2[1][2] ${$t2[1]->[2]} ${@{$t2[1]}[2]} $t2[1][2]
my $v = 10;my @t1 = (1,2, \$v);my @t2 = (20, \@t1);
2 . 16
![Page 18: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/18.jpg)
Références sur les tableauxassociatifs
2 . 17
![Page 19: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/19.jpg)
Principe
0x80ff4f1
70
10%hash
Contenu Adresses /RéférencesNoms
Mémoire de l'ordinateur
0x80ff4f1
0x80ff4f0
0x80ff4f2
0xff15af6
0xff15af5
0xff15af7
.
.
.
.
$refh
Jean
Jacques
my %hash = ("Jean" => 10, "Jacques" => 70);my $refh = \%hash;
2 . 18
![Page 20: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/20.jpg)
Principemy %hash = ('Jean' => 10, 'Jacques' => 70);my $refh = \%hash;
my %hash2 = %$refh;print "$hash2{'Jean'}\n";
print "$$refh{'Jacques'}\n";print "$refh->{'Jacques'}\n";
2 . 19
![Page 21: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/21.jpg)
PrincipeTableau associatif Référence
hash $refh%hash %$refh$hash{Paul} $$refh{Paul}$hash{Paul} $refh->{Paul}
2 . 20
![Page 22: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/22.jpg)
QCM
Quel est le contenu de $x?
SCALAR(0x7ff615809458) 11 140694899430489 Erreur
my $v = 10;my %hash1 = ('tata' => \$v, 'titi' => $v, 'toto' => $v);my %hash2 = ('toto' => 3, 'tutu' => \%hash1);my $refh = \%hash2;my $x = $refh->{'tutu'}->{'tata'}+1;
2 . 21
![Page 23: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/23.jpg)
Modules en Perl
3 . 1
![Page 24: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/24.jpg)
ModulesFichier Perl regroupant un ensemble de variables et de
fonctions touchant un à même domaine
~ Bibliothèque, librairie
3 . 2
![Page 25: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/25.jpg)
Liste des répertoires contenant desmodules
$ perl -VSummary of my perl5 (revision 5 version 16 subversion 0) configuration:
...
@INC: /Users/bbatut/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0/darwin-2level /Users/bbatut/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0 /Users/bbatut/perl5/perlbrew/perls/perl-5.16.0/lib/5.16.0/darwin-2level /Users/bbatut/perl5/perlbrew/perls/perl-5.16.0/lib/5.16.0 .
3 . 3
![Page 26: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/26.jpg)
Utilisation d'un moduleuse NomModule;
3 . 4
![Page 27: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/27.jpg)
Documentation$ perldoc File::Copy
NAME File::Copy - Copy files or filehandles
SYNOPSIS use File::Copy;
copy("file1","file2") or die "Copy failed: $!"; copy("Copy.pm",\*STDOUT); move("/dev1/fileA","/dev2/fileB");
use File::Copy "cp";
$n = FileHandle->new("/a/file","r"); cp($n,"x");
3 . 5
![Page 28: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/28.jpg)
Utilisationuse File::Copy;
copy("files/file1.txt","files/file2.txt") or die "Copy failed: $!";
copy("files/file1.txt",\*STDOUT);
move("files/file2.txt","files/file3.txt");
3 . 6
![Page 30: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/30.jpg)
Ecriture d'un module
3 . 8
![Page 31: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/31.jpg)
Principe1 fichier
Indépendant des scripts qui l'utiliseExtension : .pmDans un des répertoires de la variable @INC
3 . 9
![Page 32: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/32.jpg)
Structure du fichier# --- MonModule.pm ---
package MonModule;
use strict;use warnings;
sub bonjour { my ($prenom) = @_; print "Bonjour $prenom\n";}
1;
3 . 10
![Page 33: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/33.jpg)
Utilisation du module# --- script.pl ---
#!/usr/bin/perl
use strict;use warnings;
use MonModule;
MonModule::bonjour( "Paul" );
3 . 11
![Page 34: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/34.jpg)
Variables dans un moduleAccessibles seulement aux fonctions dans le module : myAccessibles depuis l'extérieur du module : our
3 . 12
![Page 35: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/35.jpg)
Variables dans un module
# --- MonModule.pm --- package MonModule; use strict; use warnings;
our $x = 'toto'; my $y = 'toto'; sub bonjour { # Variable locale my ($prenom) = @_; print "$x $y\n"; }
1;
# --- script.pl --- #!/usr/bin/perl use strict; use warnings; use Utils; Utils::bonjour("Paul"); print "$Utils::x\n"; print "$Utils::y\n"; # Erreur
3 . 13
![Page 36: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/36.jpg)
Dernière ligne d'un module
Valeur de chargement du module
1;
3 . 14
![Page 37: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/37.jpg)
Documentation# --- MonModule.pm ---
=head1 NAME
MonModule.pm - Useful functions
=head1 SYNOPSIS
use MonModule; bonjour("Paul");
=head1 DESCRIPTION
Blabla blabla
=cut
3 . 15
![Page 38: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/38.jpg)
Documentation# --- MonModule.pm (suite) ---package MonModule;use strict;use warnings;
=head1 FUNCTION bonjour
This function prints hello in french
=cut
sub bonjour { my ($prenom) = @_; print "Bonjour $prenom\n";}
1;
3 . 16
![Page 39: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/39.jpg)
Documentation$ perldoc MonModule.pm
NAME MonModule.pm - Useful functions
SYNOPSIS use MonModule; bonjour("Paul");
DESCRIPTION Blabla blabla
FUNCTION bonjour This function prints hello in french
3 . 17
![Page 40: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/40.jpg)
QCM
Comment accéder au premier élément du tableau t depuis unscript invoquant le module?
@{$UnModule::reft}[0] Impossible
@UnModule::t[0] @UnModule::reft[0]
package UnModule;use strict;use warnings;my @t = (13,24);our $reft = \@t;
3 . 18
![Page 41: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/41.jpg)
Programmationorientée objet
4 . 1
![Page 42: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/42.jpg)
Programmation procédurale
Quelles sont les fonctions/actions à faire ?
Programmation orientée objet
Quelles sont les données du problème ?
4 . 2
![Page 43: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/43.jpg)
PrincipeObjet/Instance
Objet/Instance
Classe
Méthodes(fonctions, actions)
Propriétés(variables, attributs)
Objet/Instance
4 . 3
![Page 44: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/44.jpg)
Exemple : EmployeClasse
PropriétésNomDate de naissanceSalaire
MéthodesRécupération des informationsAugmentation de salaire
4 . 4
![Page 45: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/45.jpg)
Exemple : EmployeEmbauche d'un nouvel employé
Création d'un nouvel objetRemplissage des différentes propriétés
4 . 5
![Page 46: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/46.jpg)
PrincipeClasse = ModuleObjet/Instance = Référence associée à la classe
4 . 6
![Page 47: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/47.jpg)
Construction d'une classe et desobjets
4 . 7
![Page 48: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/48.jpg)
Création d'un fichier Employe.pm# --- fichier Employe.pm ---package Employe;use strict;
...
1;
4 . 8
![Page 49: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/49.jpg)
Ecriture du constructeurCréation d'une référence vers un tableau associatifAssociation de la référence au package (bless)Remplissage du tableau associatif avec les propriétés
4 . 9
![Page 50: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/50.jpg)
Constructeur de la classe Employe# --- Employe.pm ---...
# Constructeursub new { my ($class, $nom, $salaire) = @_; my $this = {}; bless ($this, $class); $this->{NOM} = $nom; $this->{SALAIRE} = $salaire; return $this;}
...
4 . 10
![Page 51: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/51.jpg)
Création d'objets# --- script.pl ---
#!/usr/bin/perl
use strict;use warnings;
use Employe;
my $e1 = Employe->new("Jean Dupont", 2000);my $e2 = Employe->new("Robert Duval", 1500);
4 . 11
![Page 52: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/52.jpg)
Manipulation
4 . 12
![Page 53: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/53.jpg)
Connaissance de la classemy $e1 = Employe->new("Jean Dupont", 2000);print "$e1\n";
Employe=HASH(0x7fc802b5e698)
4 . 13
![Page 54: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/54.jpg)
Visualisation d'un objetuse Data::Dumper;print Dumper($e1)."\n";
$VAR1 = bless( { 'SALAIRE' => 2000, 'NOM' => 'Jean Dupont' }, 'Employe' );
4 . 14
![Page 55: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/55.jpg)
"Copie" d'un objet
0x80ff4f1
2000
Jean DupontEmploye
Contenu Adresses /RéférencesNoms
Mémoire de l'ordinateur
0x80ff4f1
0x80ff4f2
0xff15af6
0xaf65af5
.
.
.
$e1_bis
Nom
Salaire
0x80ff4f1..
$e1
my $e1_bis = $e1;print "$e1_bis\n"
4 . 15
![Page 56: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/56.jpg)
Méthodes
4 . 16
![Page 57: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/57.jpg)
Ecriture# --- Employe.pm ---...
sub recuperation_info{ my ($this) = @_; return $this->{NOM}." ".$this->{SALAIRE};}
sub augmentation_salaire { my ($this, $pourcentage) = @_; my $p = (100+$pourcentage)/100; $this->{SALAIRE} = $this->{SALAIRE}*$p;}
4 . 17
![Page 58: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/58.jpg)
Utilisation# --- script.pl ---
#!/usr/bin/perl
use strict;use warnings;
use Employe;
my $e1 = Employe->new("Jean Dupont", 2000);print "$e1->recuperation_info(2)\n";e1->augmentation_salaire(2);print "$e1->recuperation_info(2)\n";
4 . 18
![Page 59: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/59.jpg)
Question
Que manque-t-il pour bien déclarer la classe Vehicule avecdeux propriétés (nombre de roues et couleur)?
# --- fichier Vehicule.pm ---use warnings;
sub new{ my ($class, $nbRoues, $couleur) = @_; my $this = {}; $this->{NB_ROUES} = $nbRoues; return $this;}
4 . 19
![Page 61: Perl orienté objet - GitHub Pagesbebatut-edu.github.io/bioperl-cm/poo.pdfModules en Perl 3.1 Modules Fichier Perl regroupant un ensemble de variables et de fonctions touchant un à](https://reader034.fdocuments.fr/reader034/viewer/2022050608/5faf36a9c4d3e310b653a7df/html5/thumbnails/61.jpg)
BioPerl
5 . 2