Outils pour utilisateurs

Outils du site


perl:programmation_oriente_objet_utilisation

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
perl:programmation_oriente_objet_utilisation [2010/11/27 17:09] rootperl:programmation_oriente_objet_utilisation [2013/03/12 23:39] (Version actuelle) root
Ligne 1: Ligne 1:
 +====== Objets ======
 +
 ====== 1. Programmation orientée objet ====== ====== 1. Programmation orientée objet ======
  
Ligne 6: Ligne 8:
  
 Cela implique dans un programme de se soucier de la donnée avant de la manipuler, comme on le fait déjà pour la déclaration et l'initialisation. La création d'un objet peut être considéré comme une initialisation sophistiquée et sur mesure : Cela implique dans un programme de se soucier de la donnée avant de la manipuler, comme on le fait déjà pour la déclaration et l'initialisation. La création d'un objet peut être considéré comme une initialisation sophistiquée et sur mesure :
 +<code perl>
   my $file = FileHandle->new(">sortie.txt"); # my $file; open($file, ">sortie.txt");   my $file = FileHandle->new(">sortie.txt"); # my $file; open($file, ">sortie.txt");
   my $line = $file->getline(); # my $line = <$file>;   my $line = $file->getline(); # my $line = <$file>;
   $file->close(); # close($file);   $file->close(); # close($file);
 +</code>
  
 ===== Classe et instance ===== ===== Classe et instance =====
Ligne 25: Ligne 29:
  
 Une classe est en général définie comme le cumul de fonctions de classes existantes, plus des nouvelles fonctionnalités. Cette conception "par couche", où l'on peut empiler les fonctions pour créer des classes plus sophistiquées (ou plus spécialisées) est appelée l'héritage. Une classe est en général définie comme le cumul de fonctions de classes existantes, plus des nouvelles fonctionnalités. Cette conception "par couche", où l'on peut empiler les fonctions pour créer des classes plus sophistiquées (ou plus spécialisées) est appelée l'héritage.
 +<code perl>
   my $mirza = Chien->new();   my $mirza = Chien->new();
   $mirza->aboie();   $mirza->aboie();
Ligne 31: Ligne 36:
   $medor->aboie(); # donc il peut en particulier aboyer, comme tout "Chien"   $medor->aboie(); # donc il peut en particulier aboyer, comme tout "Chien"
   $medor->attaque(); # mais il peut aussi attaquer!   $medor->attaque(); # mais il peut aussi attaquer!
 +</code>
  
 ====== 2. Utilisation des objets en Perl ====== ====== 2. Utilisation des objets en Perl ======
  
 La majorité des modules du répertoire CPAN sont fournis sous forme de classes, il faut donc en général commencer par instancier des objets pour pouvoir accéder à leurs fonctionnalités. Par convention (et il ne s'agit que d'une convention), le constructeur est en général est la méthode //new()//. Il y a bien sûr des exceptions : La majorité des modules du répertoire CPAN sont fournis sous forme de classes, il faut donc en général commencer par instancier des objets pour pouvoir accéder à leurs fonctionnalités. Par convention (et il ne s'agit que d'une convention), le constructeur est en général est la méthode //new()//. Il y a bien sûr des exceptions :
 +<code perl>
   use DBI;   use DBI;
      
   my $db = DBI->connect($dsn, $user, $password);   my $db = DBI->connect($dsn, $user, $password);
 +</code>
  
 Un objet en Perl est une référence sur une structure quelconque (scalaire, liste, tableau, etc), qu'on a en plus associé à une classe particulière (nous verrons comment en concevant nos propres objets). Ainsi ces deux éléments sont différents : Un objet en Perl est une référence sur une structure quelconque (scalaire, liste, tableau, etc), qu'on a en plus associé à une classe particulière (nous verrons comment en concevant nos propres objets). Ainsi ces deux éléments sont différents :
 +<code perl>
   my $mirza = Chien->new();   my $mirza = Chien->new();
   print "Ce chien s'appelle: ".$mirza->name(); # Il s'agit de la méthode 'name'   print "Ce chien s'appelle: ".$mirza->name(); # Il s'agit de la méthode 'name'
   print "Ce chien s'appelle: ".$mirza->{'name'}; # Il s'agit de l'élément 'name' du tableau %{$mirza}   print "Ce chien s'appelle: ".$mirza->{'name'}; # Il s'agit de l'élément 'name' du tableau %{$mirza}
 +</code>
  
 Il est assez courant que les paramètres d'un constructeur soient passés sous la forme d'un tableau (associatif), ceci rendant plus lisible l'utilisation de l'objet. Dans ce cas on veille bien à utiliser une référence vers un tableau : Il est assez courant que les paramètres d'un constructeur soient passés sous la forme d'un tableau (associatif), ceci rendant plus lisible l'utilisation de l'objet. Dans ce cas on veille bien à utiliser une référence vers un tableau :
 +<code perl>
   use DBIx::SearchBuilder::Handle;   use DBIx::SearchBuilder::Handle;
      
Ligne 53: Ligne 63:
   Database => "my_test_db"   Database => "my_test_db"
   });   });
 +</code>
  
 Profitez de l'héritage: quand vous manipulez un objet de la classe **Toto**, vous avez le droit d'utiliser les méthodes de tout ses "parents". Profitez de l'héritage: quand vous manipulez un objet de la classe **Toto**, vous avez le droit d'utiliser les méthodes de tout ses "parents".
Ligne 60: Ligne 71:
 ==== Création d'un module ==== ==== Création d'un module ====
    
-  * **Fichier //modules/joueur.pm//** +  * **Fichier classe : //modules/joueur.pm//** 
-<code>+<code perl joueur.pm>
 package joueur; package joueur;
  
Ligne 123: Ligne 134:
 </code> </code>
  
-==== Utilisation du module ====+==== Utilisation du module et de ses classes ====
   * **Programme principal :**   * **Programme principal :**
-<code>+<code perl mail.pl>
 #!/usr/bin/perl -w #!/usr/bin/perl -w
  
 use lib "./modules"; use lib "./modules";
 use joueur; use joueur;
- 
-#print join("\n",@INC),"\n"; 
  
 print $joueur::info; print $joueur::info;
Ligne 155: Ligne 164:
 $p2->mourir; $p2->mourir;
 </code> </code>
- 
  
perl/programmation_oriente_objet_utilisation.1290877782.txt.gz · Dernière modification : 2010/11/27 17:09 de root