DESS TEXTE. Outils informatiques 4. Programmation objet en Perl p.1

Documents pareils
Exonet : sauvegarde automatisée d une base de données

Perl Orienté Objet BioPerl There is more than one way to do it

WebDAV en 2 minutes. Tous ces objectifs sont complémentaires et ils sont atteints grâce au seul protocole WebDAV. Scénarii

A QUOI SERVENT LES BASES DE DONNÉES?

INSTALLATION ET CONFIGURATION DE OPENLDAP

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

STAGE IREM 0- Premiers pas en Python

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

4D Server et les licences : fonctionnement et environnement

A QUOI SERVENT LES BASES DE DONNÉES?

Chapitre VI- La validation de la composition.

Utiliser un tableau de données

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Génie Logiciel avec Ada. 4 février 2013

Ingénérie logicielle dirigée par les modèles

Classes et Objets en Ocaml.

Sommaire. G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Plan du cours Cours théoriques. 29 septembre 2014

Serveur d Applications Web : WebObjects

Logiciel libre, OpenMeetings permet de créer ou simplement de participer à des conférences en ligne.

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

OCL - Object Constraint Language

10. Base de données et Web. OlivierCuré

Algorithmique et Programmation, IMA

Notion de base de données

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Premiers Pas en Programmation Objet : les Classes et les Objets

GOL502 Industries de services

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

RMI le langage Java XII-1 JMF

ASR3. Partie 4 Le système de fichier. Arnaud Clérentin, IUT d Amiens, département Informatique

Ecran principal à l ouverture du logiciel

Programmation impérative

L exclusion mutuelle distribuée

Cours STIM P8 TD 1 Génie Logiciel

progecad NLM Guide de l'utilisateur

PG208, Projet n 3 : Serveur HTTP évolué

Dans l'article précédent, vous avez appris

Programmation Web. Madalina Croitoru IUT Montpellier

TRUECRYPT SUR CLEF USB ( Par Sébastien Maisse 09/12/2007 )

Initiation à la Programmation en Logique avec SISCtus Prolog

Rappel sur les bases de données

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Programmation système en C/C++

OMGL 6 Cahier des charges

MANUEL DRIVELINK DRIVELINK

PARIS, le 20 Juin 2000 LE MINISTRE DE L INTERIEUR MESDAMES ET MESSIEURS LES PREFETS

Manipulation 4 : Application de «Change».

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Initiation à la Comptabilité

SYSTÈMES D INFORMATIONS

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Auditer une infrastructure Microsoft

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

PROJET ARCHI WINDOWS SERVER

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

TP1. Outils Java Eléments de correction

Compte Rendu d intégration d application

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Projet Active Object

Bonnes pratiques concernant l usage de la messagerie

Reporting Services - Administration

Introduction au Génie Logiciel

BASE. Vous avez alors accès à un ensemble de fonctionnalités explicitées ci-dessous :

TD/TP PAC - Programmation n 3

CREATION WEB DYNAMIQUE

Cours Langage C/C++ Programmation modulaire

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Comment développer et intégrer un module à PhpMyLab?

Création et Gestion des tables

1 Lecture de fichiers

Competence Management System (Système de Gestion de Compétences)

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Licence Sciences et Technologies Examen janvier 2010

Mise en œuvre des serveurs d application

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Manuel d installation De la Cryptolib CPS Dans un environnement client/serveur TSE/CITRIX

GPO. Stratégie de groupe dans un environnement Active Directory. Nathan Garaudel PCplus 01/01/2014

Bonnes pratiques de développement JavaScript

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Rapport de stage d initiation

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Introduction aux SGBDR

Veuillez utiliser la liste de vérification ci-dessous pour vous assurer de ne rien oublier. Les demandes incomplètes ne seront pas étudiées.

Gestion des utilisateurs : Active Directory

nombre vendu par mois ( Pôle Hosting ) Total Prix CA

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Imprimantes et partage réseau sous Samba avec authentification Active Directory

as Architecture des Systèmes d Information

Remote Method Invocation (RMI)

Back up Server DOC-OEMSPP-S/6-BUS-FR-17/05/11

FORMATIONS FORMATIONS : E-COMMERCE / E-MARKETING / WEBDESIGN / VENTE / INFORMATIQUE / BUREAUTIQUE LE CATALOGUE DE

Principe de fonctionnement du lanceur d'application "AdisTlsStartCfgLotus"

LA GESTION COMMERCIALE DES VEHICULES

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Transcription:

Outils informatiques 4. Programmation objet en Perl DESS TEXTE Outils informatiques 4. Programmation objet en Perl p.1

Introduction En programmation orientée objet, on définit des éléments ayant des caractéristiques propres et réalisant certaines opérations. Ces éléments sont ce qu on appelle des objets. On peut voir un objet comme un petit programme autonome ayant ses variables et ses fonctions. Les variables sont appelées des attributs(ou propriétés) et les fonctions des méthodes. Pour utiliser un objet, on doit faire appel à ses méthodes. L intérêt des objets : cacher des comportements complexes derrière une interface "simple" à utiliser. En programmation orientée objet : on se concentre sur les données à traiter. Outils informatiques 4. Programmation objet en Perl p.2

Plan du chapitre Chapitre 4 : Programmation objet en Perl 1. Notions de Classe, Objet, Attributs et Méthodes 2. Création d une classe 3. Constructeur et autres méthodes 4. Destructeur 5. Documentation de l interface 6. Agrégation 7. Héritage Outils informatiques 4. Programmation objet en Perl p.3

Notions de Classe, Objet, Attributs et Méthodes En perl, une classe correspond à un module spécial (cf support n 3), elle contient la définition d un type d objets (définitions d attributs et de méthodes), un objet est une référence à une structure plus ou moins complexe (en général une table de hachage), un attribut est un élément de cette structure, une méthode est une procédure (ou fonction) manipulant cette structure. une méthode peut être appelé par une classe (méthode de classe) ou par un objet (méthode d objet). Remarque : à la différence des modules classiques, une classe est un espace de nommage protégé. Outils informatiques 4. Programmation objet en Perl p.4

Création d une classe Pour créer une classe, il faut procéder comme suit : 1. choisir le nom de la classe, ce sera le nom du fichier contenant sa définition (avec pour extension.pm). 2. définir les propriétés d un objet de la classe. 3. définir un (ou plusieurs) moyen(s) de créer des objets. 4. définir des opérations assurées par les objets appartenant à la classe (i.e. ses méthodes). Ces méthodes représentent la seule interface que l on ait avec l objet (pour manipuler ses attributs notamment). Outils informatiques 4. Programmation objet en Perl p.5

Constructeur et autres méthodes (1) un constructeur est une méthode spéciale renvoyant un objet (i.e. une référence sur une structure), pour se faire, on utilise dans le constructeur la fonction bless() associant une référence à une classe d objets, l objet ainsi créé a la particularité de pouvoir appeler des méthodes à partir de lui-même, on notera que le constructeur peut avoir n importe quel nom (en règle général on utilise new). Outils informatiques 4. Programmation objet en Perl p.6

Constructeur et autres méthodes (2) Ma première classe : #!/usr/bin/perl use strict; package Personne; sub new { my($classe,$un_nom,$un_age) = @_; my $self = {}; $self->{nom} = $un_nom; $self->{age} = $un_age; $self->{prenoms} = []; bless($self,$classe); return($self); } 1; # pour que la classe soit correctement chargée Le constructeur new() est une méthode de classe appelée par $moi = Personne->new("Eric",24) ; Outils informatiques 4. Programmation objet en Perl p.7

Constructeur et autres méthodes (3) On définit également des méthodes manipulant la structure référencée par l objet : sub nommer { my($homme,$nouveau_nom) = @_; $Homme->{NOM} = $nouveau_nom; } sub dire_age { my $Homme = shift(@_); return ($Homme->{AGE}); } Ces méthodes sont des méthodes d objet et s appellent via $moi->nommer(jean) ; La première permet de définir l attribut NOM d un objet de type Personne, la seconde de lire l attribut AGE. Dans les méthodes d objet, le nom de l objet est le 1 er argument, alors que dans les méthodes de classe, c est le nom de la classe. Outils informatiques 4. Programmation objet en Perl p.8

Destructeur (1) De même qu un objet est créé, il est détruit après utilisation. La méthode destructeur est appelée implicitement lorsque l objet disparaît. Le nom de cette méthode est imposé : DESTROY. Le rôle du destructeur est de libérer la mémoire occupée par l objet. Dans de nombreux cas, il n est pas nécessaire de définir de destructeur car Perl gère la destruction lui-même. L exception est dans le cas des références circulaires : $moi->{suivant}=$moi ; Outils informatiques 4. Programmation objet en Perl p.9

Destructeur (2) Exemple de destructeur : sub DESTROY { my $Homme = shift(@_); print "Fin de $Homme \n"; } Ici nous affichons un message lorsqu un objet de type Personne est détruit. Remarque : le desctructeur est une méthode d objet. Outils informatiques 4. Programmation objet en Perl p.10

Documentation de l interface Documenter l interface revient à insérer des commentaires spéciaux dans le code. Ces commentaires respectent un format spécifique (de type Plain Old Documentation). Ils sont alors traités par des programmes dédiés (tels que pod2man, pod2html, etc). Exemple : =head1 NAME Personne - classe implémentant des personnes (...) =head1 SYNOPSIS $mon_age=$moi->{dire_age}; =head1 DESCRIPTION (...) Outils informatiques 4. Programmation objet en Perl p.11

Agrégation (1) Il existe deux façons de réutiliser des objets : 1. L agrégation. 2. L héritage. On utilise l agrégation lorsque l on a un objet composé d autres objets. On utilise l héritage lorsqu un objet est un autre objet (relation de spécialisation). Outils informatiques 4. Programmation objet en Perl p.12

Agrégation (2) Imaginons que nous souhaitons qu une personne puisse avoir un surnom (un surnom étant un objet) : package Personne; sub new { my($classe,$un_nom,$un_age,$un_surnom) = @_; my $self = {}; $self->{nom} = $un_nom; $self->{age} = $un_age; $self->{prenoms} = []; $self->{surnom} = Surnom->new($un_surnom); bless($self,$classe); return($self); } Outils informatiques 4. Programmation objet en Perl p.13

Héritage (1) L héritage permet à un objet d étendre un autre objet (on dit aussi spécialiser). Lorsqu une classe hérite d une autre, elle recupère toutes ses méthodes et attributs. En Perl, la (ou les) classe(s) mères sont stockées dans le tableau @ISA (variable globale - déclarée non pas via my mais our). Outils informatiques 4. Programmation objet en Perl p.14

Héritage (2) Imaginons que nous avons la classe Employe héritant de Personne (l employé est une personne ayant un statut) : package Employe; use Personne; our @ISA = ("Personne"); sub est_embauche { my($classe,$un_nom,$un_age,$un_statut) = @_; my $self = $classe->super::new($un_nom,$un_age); $self->{statut} = $un_statut; bless($self,$classe); return($self); } Outils informatiques 4. Programmation objet en Perl p.15

Héritage (3) Notons enfin, qu il est possible d utiliser une méthode de classe en tant que méthode d objet, en utilisant la fonction ref : package Personne; sub new { my($classe,$un_nom,$un_age) = @_; $classe = ref($classe) $classe ; my $self = {}; $self->{nom} = $un_nom; $self->{age} = $un_age; $self->{prenoms} = []; bless($self,$classe); return($self); } L intérêt de cela est de prévenir tout problème en cas d oubli du SUPER dans la définition de est_embauche. Outils informatiques 4. Programmation objet en Perl p.16

Héritage (4) L appel à la fonction ref permet de tester si le 1 er argument du constructeur est une référence ou non. si oui elle nous renvoie la classe de l objet correspondant à la référence, sinon, via le, l instruction nous donne directement la classe appelant la méthode. Par ce procédé, il est possible d utiliser des méthodes de classe comme des méthodes d objets, c est-à-dire que les deux appels suivants sont tolérés : my $a = Personne->new(); my $b = $a->new(); Outils informatiques 4. Programmation objet en Perl p.17

Remarque Lors de l écriture d un programme orienté objet en Perl, nous avons les éléments suivants : un fichier contenant la définition d une classe (nommé maclasse.pm), débutant par l instruction package maclasse ; un fichier client manipulant des objets de maclasse, contenant l instruction use maclasse ; Exemple de script client : #!/usr/bin/perl use strict; use Personne; my $pers = Personne->new("Jean",21); $pers->nommer("pierre"); print "Mon age est ".$pers->dire_age()." ans\n"; Outils informatiques 4. Programmation objet en Perl p.18