23
Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Embed Size (px)

Citation preview

Page 1: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Introduction à la programmation II

Veronica DiegoMercredi 13 avril 2005

Page 2: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Sujets qui seront abordés :

Introduction à la programmation orientée objet

Les classes en Php 4 et 5

Les objets dans Php 4 et 5

Utilisation de librairies de classe

Page 3: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Introduction à la programmation orientée objet Avant la version 4 de php, la programmation orientée objet n’était pas

proposée dans ce langage. Les programmeurs devaient donc se débrouiller pour organiser des fonctions de la manière la plus propre possible en essayant de les faire communiquer entre elles et de leurs faire partager des données sans pour autant rendre le code incompréhensible. Par rapport à C++ ou Java, Php faisait figure de langage « brouillon » avec lequel il était très difficile de développer du code réutilisable et maintenable facilement.

La programmation orientée objet est né de ce genre de constat, d’abord en 1972 avec SmallTalk, mais surtout en 1983, lorsque Bjarn Stroustrup mit au point une extension orientée objet du langage C : le C++. Depuis, les mettre mots en matière de programmation sont réutilisabilité et facilité de maintenance. Le code doit être organisé de façon clair et logique de manière à atteindre ces objectifs. La programmation objet fournit un cadre idéal à ce genre de réalisation, car elle permet une meilleure conceptualisation, elle rend le principe de fonctionnement d’un programme plus « humain » en permettant de s’abstraire totalement du code pour s’atteler à la tâche principale : trouver la solution à un problème.

Page 4: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les classes Php 4 et 5

Définition :Une classe est un ensemble de variables et de fonctions.

Utilisation :Une classe démarre toujours par le mot class suivit du nom de la classe. Ensuite, nous écrivons entre accolade ({ }) les listes des variables membres et celles des méthodes (l'ordre n'a aucune importance), de la même façon que nous définirions des variables et des fonctions.

Page 5: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les classes

Exemple :

<?php//php 5class Animal {

// les trois caractéristiques d’un animal public $type;public $nom;public $nourriture;

// l’action que l’animal peut effectuer function emettreSon(){

print("Le $this->type pousse son cri !<br/>");}

}?>

Note : en Php 4, il faudrait mettre "var" à la place de "public"

Page 6: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5

Un objet regroupe toutes les informations et actions disponibles pour une entité donnée. Les informations, que nous appelons indifféremment « attributs », « champs », « propriétés » ou encore « membres », sont matérialisées par des variables, tandis que les actions, que nous appelons « méthodes », sont matérialisées par des fonctions.

Page 7: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5

Pour comprendre la notion d’objet, prenons un exemple. Imaginons que nous souhaitons simuler un zoo et, plus précisément, le moment où le gardien vient nourrir chaque animal. Nous voulons, en outre, que chaque animal lance son cri lorsque le gardien le nourrit (le lion va rugir, le mouton bêler, etc.), nous voulons également que le gardien donne le bon type de nourriture à chaque animal.

Page 8: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5

Dans notre exemple, nous sommes en présence de deux objets : un gardien et un animal. Chacun des deux sera défini par ses caractéristiques propres et par les actions qu’il peut effectuer. Les caractéristiques du gardien seront par exemple son nom et son prénom, et celles de l’animal duquel il s’approche seront son genre (koala, lion…), son nom et la nourriture qu’il consomme.

Page 9: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5 Voici en Php 5 à quoi ressemblerait la classe correspondant à notre objet animal :

class Animal {

// les trois caractéristiques d’un animal public $type;public $nom;public $nourriture;

// l’action que l’animal peut effectuer function emettreSon(){

print("Le $this->type pousse son cri !<br/>");}

}

Note : en Php 4, il faut remplacer "public" par "var"

Voir fichier zoo_1.php

Page 10: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5

Visibilité des variables (Php 5):En effet, dans un objet, il est possible de spécifier qui pourra accéder à quelles variables.Il existe trois niveaux de visibilité, symbolisés par trois mots clés :

public : indique que la variable est publique. Dans ce cas, la variable est directement accessible de l'extérieur de la classe (zoo_2a.php)

private : indique que la variable est privée. Dans ce cas, la variable n'est accessible qu'à l'intérieur de la classe. Si vous souhaitez y accéder de l'extérieur, il faudra écrire une méthode qui la retourne. (zoo_2b.php)

protected : cette visibilité se situe entre privée et publique. Dans ce cas, la variable ne sera pas accessible de l'extérieur de la classe, sauf pour les classes filles qui hériteront de ce champ comme champ privé (nous reviendrons plus tard sur la notion de classe fille, avec l'héritage). (zoo_2c.php)

Page 11: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5

Naissance des objets:

Pour utiliser une classe, il faut en créer une instance grâce à l'opérateur new (il s'agit de "l'instanciation" d'une classe) :

<?php

$animal = new Animal();

?>

Un problème se pose : nous souhaitons indiquer quels sont le nom et la race de l'animal et quelle nourriture il mange. Il est intéressant de pouvoir passer ces valeurs en paramètre lors de la création de l'objet, autrement dit de pouvoir écrire :

<?php

$animal = new Animal("lion", "Tony", "viande");

?>

Page 12: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5

Constructeurs :

C'est justement ce que permettent les constructeurs. Un constructeur est une méthode spéciale qui est appelée lors de l'instanciation de la classe avec new. Ici nous touchons à une différence entre Php 4 et Php 5. En effet, la fonction constructeur en Php 4 est définie par une fonction ayant le même nom que la classe, tandis que en Php 5 le constructeur est affublé d'un nom spécial : __construct. Nous allons donc pouvoir écrire cette méthode de façon à ce qu'elle assigne les valeurs passées en paramètres aux variables membres :

Page 13: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5

//php 4class Animal {

// les trois caractéristiques d’un animalvar $type;var $nom;var $nourriture;

//le constructeur de notre classefunction Animal($type, $nom, $nourriture) {

$this->type = $type;$this->nom = $nom;$this->nourriture = $nourriture;

}

Page 14: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5

// l’action que l’animal peut effectuer function emettreSon(){

print("Le $this->type pousse son cri !<br/>");}

function getType() {return $this->type;

}

function getNom() {return $this->nom;

}

function getNourriture() {return $this->nourriture;

}}

Page 15: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5//php5

class Gardien {

// les deux caractéristiques d’un gardienpublic $nom;public $prenom;

//le constructeur prends deux variables en paramètresfunction __construct($nom,$prenom){$this->nom = $nom;$this->prenom = $prenom;}

// l’action que le gardien peut effectuer function nourrir($animal){

print("$this->nom $this->prenom donne de la $animal->nourriture" . " au $animal->type.<br/>");

$animal->emettreSon();}

}

Voir fichier zoo_3.php

Page 16: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5

Destructeur:Lorsque les objets ne sont plus utilisés, ils sont détruits. Php 5 s'occupe automatiquement de compter le nombre de références sur les objets afin de savoir quand ils ne sont plus utilisés et peuvent donc être effacés sans danger. Lors de cette destruction, il peut être nécessaire de réaliser des opérations pour que la destruction de l'objet soit correctement effectuée. Pour cela, une classe peut posséder un destructeur, qui comme le constructeur est une méthode portant un nom spécial : __destruct. A la différence du constructeur, le destructeur ne peut accepter de paramètres puisqu'il est appelé automatiquement par Php. Ajoutons un destructeur à notre classe Animal afin d'afficher un message lors de sa destruction :

//le destructeur de notre classefunction __destruct() {

print("Un objet de type Animal ($this->type) a été détruit.<br/>");}

Voir fichier zoo_4.php

Page 17: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5

L’héritage :

L'héritage permet de faire dériver une classe d'une autre afin qu'elle hérite de tous ses champs de type public et protected ainsi que de toutes ses méthodes. Nous pouvons ensuite en ajouter et aussi redéfinir ces méthodes afin de les spécialiser. Ici, nous allons garder notre classe Animal et en faire hériter une classe Lion et une classe Koala.

class Lion extends Animal {function __construct($nom) {

$this->type = "lion";$this->nourriture = "viande";parent::__construct($nom);

}function emettreSon() {

print("Grooooooooar!<br/>");}

}

Page 18: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Les objets dans php 4 et 5

Note : l’opérateur « :: » permet d’accéder aux fonctions et variables de la classe parente, « parent » aurait pu être remplacé par le nom de la classe parente (Animal). Pour accéder à une variable de classe qui n’est pas encore instanciée, il faut utiliser l’opérateur « :: » avec une variable « static » (ex: public static $type)

Voir fichier zoo_5.php

Page 19: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Utilisation de librairies de classes

Définition :

L'appellation de librairie vient d'un import abusif du mot "library" en anglais. C'est un synonyme de bibliothèque. Une librairie est un ensemble de méthodes, d'attributs et de classes réunis dans un fichier directement utilisable à l'intérieur d'une application.Une librairie à un Application Programmer’s Interface (API), c’est-à-dire une liste de fonctions (ou procédures ou méthodes) et de variables (ou classes) documentées et que vous pouvez utilisez.

Page 20: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Utilisation de librairies de classes

Utilisation :Pour utiliser une librairie, il suffit d’installer sur son serveur la librairie en question quelque part (sur le serveur), puis dans votre page Php, il faut faire un « include » avec le chemin jusqu’à la librairie.

Exemple : include('/path/to/set/here/adobd.inc.php');

Ensuite, il faut se référer à l'API pour connaître les fonctions utilisable.

Page 21: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Tableau récapitulatif

Php 4 Php 5

Constructeur Fonction ayant le même nom que la classeEx : Class Etudiant { function Etudiant()

Fonction __construct()

Ex : Class Etudiant {

function __construc()

Notion « destructeur » d’objets N/A Fonction __destruct()

Ex :function __destruct()

Notion de « clonage » N/A Fonction __clone()

Ex :function __clone()

Traitement des erreurs Via des fonctions spécifiques

Ex :function division_par_zero ()

Possibilité d’utiliser les notions « try {} »   et « catch {}» 

Niveaux de visibilités des variables $GLOBAL Public : variable accessible de l'extérieur de la classe

Private : variable accessible uniquement à l'intérieur de la classe

Protected : variable non accessible depuis l'extérieur de la classe sauf pour les classes filles.

Etc.

Page 22: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

Références

Classes et librairies PHP :

Borde, N., Marhin, A. & Thevenet, M. (2004). Php 5. Micro Applications : Paris.

Choi, W., Kent, A., Lea, C., Prasad, G. et Ullman, C. (2000). Maîtrisez Php 4. Wrox : Paris.

http://tecfa.unige.ch/guides/php/php5_fr/language.oop.html http://tecfa.unige.ch/guides/php/php5_fr/language.oop5.html http://tecfa.unige.ch/guides/tie/pdf/files/php-libs.pdf

Page 23: Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005

TP

Prenez le fichier "tp.php" et ajoutez du code permettant l'utilisation des fonctions définies dans les classes.

Exemple :