oujood.com

Utilisation des classes et des objets

nous allons voir comment les implémenter, c'est-à-dire écrire du code dedans. Nous verrons ensuite comment utiliser notre classe : donc on l'instanciera, c'est-à-dire créer un objet

chercher |

PHP cours tutorial

Utilisation des classes et des objets


Bien Dans le chapitre précédent nous avons créé notre classe.

 Notre classe est désormais prête mais ne sert à rien tout seule.

Comme nous l'avons expliqué dans le cours précédent, une classe est perçue comme un moule capable de réaliser autant d'objets de même type et de même structure qu'on le souhaite.

Nous allons donc passer maintenant à la phase de concrétisation d'une classe.

On a créé notre classe,  mais nos méthodes sont vides !

 Dans ce chapitre, nous allons voir comment les implémenter, c'est-à-dire écrire du code dedans.

Nous verrons ensuite comment utiliser notre classe : donc on l'instanciera, c'est-à-dire on créera un objet

Implémenter des méthodes

Pour implémenterons nos méthodes, nous aurons besoin d'accéder aux attributs de notre objet et de les modifier. Nous allons utiliser une pseudo-variable $this.

La pseudo-variable $this

 La pseudo-variable $this est une simple variable disponible dans toutes les méthodes lorsque l'on se servira de notre classe.

 La variable $this est tout simplement l'objet que nous sommes en train d'utiliser, elle le représente.

C'est à partir de cette variable que l'on pourra appeler des méthodes de notre objet ou modifier un attribut.

Et pour cela on utilise l’opérateur ->

L'opérateur -> doit être placé juste après $this.

Cet opérateur signifie « dans cet objet, on prend cet attribut » ou « dans cet objet, on  appele telle méthode »

Et le code aura la forme suivante :

Exemple :       Copier le code

<?php
  class Vehicule
  {
    // Attributs(les variables ) sont les suivates
        private $roue = 4 ;
        /* le nombre de roues du véhicule par défaut est 4 */
        private $porte ;
        private $carburant ;
        private $compteur ;
        private $consomation ;
    
    // Constantes 
 
    // Méthodes  (les fonctions)
public function deplacer() /* Une méthode qui déplacera le véhicule (modifiera son attribut compteur).*/
        {
         $this->compteur = $this->compteur + 50;
        }
  }
?>

Explications du code :

Nous avons décidé de déplacer l’objet vehicule de 50 kilomètre et donc augmenter son compteur de 50.

La pseudo-variable $this veut dire « cet objet ».

L’expression  $this->compteur veut dire « dans cet objet je prend l’attribut compteur ».

En fin $this->compteur = $this->compteur + 50 veut dire « Dans cet objet, assigne à l'attribut compteur cette valeur qui est l’ancien compteur augmenté de 50 »

On peut aussi écrire cette ligne d’une autre manier plus courte :

Exemple :       Copier le code

  <?php
  $this -> compteur  += 50 ;
  ?>

Instanciation, accéder aux propriétés et aux méthodes


On va donc voir comment créer un objet, c'est-à-dire qu'on va utiliser notre classe pour créer notre objet.

La création d'un objet à partir d'une classe, s'appelle l'instanciation.

Un objet est alors appelé instance d'une classe.

La création d'un objet permet:

- La création d'un espace mémoire qui sera réservé pour recevoir toutes les propriétés durant  l’utilisation de cet objet.

- L'attribution d'un nom à l'objet.

- Chaque instance possède son propre jeu d’attributs (de propriétés), mais ses méthodes sont communes à toutes les instances de cette classe.

Objet = identité + état (attributs) + comportement (méthodes)

L’identité :
L’objet possède une identité (un nom), qui permet de le distinguer des autres objets, indépendamment de son état. On construit généralement cette identité grâce à un identifiant découlant naturellement du problème.
Les attributs :
Il s’agit des données caractérisant l’objet. Ce sont des variables stockant des informations d’état de l’objet
Les méthodes (appelées aussi fonctions membres):
Les méthodes d’un objet caractérisent son comportement, c’est-à-dire l’ensemble des actions ( opérations) que l’objet est à même de réaliser.
Ces opérations permettent de faire réagir l’objet aux sollicitations extérieures (ou d’agir sur les autres objets).
De plus, les opérations sont étroitement liées aux attributs, car leurs actions peuvent dépendre des valeurs des attributs, ou bien les modifier

Pour créer un nouvel objet, vous devez faire précéder le nom de la classe à instancier du mot-clé new, comme ceci :

Dans cet exemple nous allons créer deux objets :

L’objet Vehicule1

L’objet Vehicule2

Exemple :       Copier le code

  <?php
      $vehicule1 = new Vehicule(5 ,25,12570);
      $vehicule2 = new Vehicule(6,2,70,125760);
  ?>

Ainsi, $Vehicue1 et  $Vehicue2 seront deux objets de type Vehicule. On dit qu'on instancie la classe Vehicule ou qu'on crée deux instances de la classe Vehicule.

Auto-chargement de classes

Si vous essayez de créer une instance de la classe alors que vous n'avez pas déclaré la classe, une erreur fatale sera générée pour dire que vous instanciez une classe qui n'existe pas.         

Quand on crée une classe c’est pour pouvoir la réutiliser quand on veut et là où on veut.

Donc et pour une question d'organisation, il vaut mieux créer un fichier par classe.

Pour déclarer vos classes vous pouvez le faire de deux manières :

1 – par la fonction include ou require de php L'inconvénient majeur de cette méthode est d'avoir à écrire une longue liste d'inclusions de fichier classes au début de chaque script : une inclusion par classe. 2 – Vous créez dans votre fichier principal (c'est-à-dire celui où vous voulez créer une instance de votre classe) une ou plusieurs fonction(s) qui tenteront de charger le fichier déclarant la classe. En général une seule fonction suffit. Voici une fonction

Exemple :       Copier le code

<?php
    function chargerClasse ($classe)
    {
        include( $classe.‘.php’ ); /* On inclue la classe correspondante au paramètre passé*/
} spl_autoload_register ('chargerClasse'); /* enregistrement de la fonction en autoload pour qu'elle soit appelée dès qu'on instancie une classe non déclarée*/ ?>

Cette fonction doit être placée au début du fichier où vous voulez instancier votre classe puis vous pouvez instancier votre classe où vous voulez dans ce fichier comme suit :

Exemple :       Copier le code

  <?php
      $classe= "maclass" ;/* ici on donne à la variable $classe la valeur maclass.php
  on suposant que le fichier qui contient la classe porte le même nom que la classe
  soit maclasse */
      $objet = new maclass();
  ?>

Accéder aux méthodes de l'objet


Avant de commencer je vous rappelle notre classe Vehicule de tout à l'heure à laquelle j’ai ajouté  quelques modifications à enregistrer dans un fichier « Vehicule.php »:

Code de « Vehicule.php »:

Exemple :       Copier le code

  <?php
    class Vehicule
    {
      // Attributs(les variables ) sont les suivates
                                                      private $roue = 4 ;
                                                      /* le nombre de roues du véhicule
  par défaut est 4 */
                                                      private $porte ;
                                                      private $carburant ;
                                                      private $compteur ;
                                                      private $tauxConsomation ;
     
      // Constantes
      // Méthodes  (les fonctions)
  /* Une méthode qui déplacera le véhicule (modifiera son attribut compteur).*/
  public function deplacer()
          {
           $this->compteur = $this->compteur + 50;
          }
  /* Une méthode qui déplacera le véhicule (modifiera son attribut compteur).*/
  public function consommer()
          {
           $this->carburant = $this->carburant -($this->tauxConsomation * 50);
          }
  /* cette fonction sert à donner un nombre de roues à un véhicule*/                 
  public function setRoue($R)
          {
            $this->roue=$R;
           }
  /* ces fonctions servent à l’affichage des attributs (propriétés) ou accesseurs */
  public function roue()
          {
              return $this->roue ;
          }
  public function carburant()
          {
              return $this->carburant ;
          }
    }
  ?>

Vu que tous les attributs doivent être privés pour les protéger et alors pour pouvoir quand même accéder à leur valeur, on a inventé les accesseurs.

Les accesseurs


Ce sont des méthodes simples qui ne font que renvoyer le contenu de l'attribut.

Chacune de ces méthodes porte le même nom que l'attribut dont elle renvoie la valeur, comme par exemple roue() dans l’exemple précédent.

Nous allons créer deux instances de notre classe c’est à dire deux objets.

Nous utilisons  l'opérateur ->  qui veut dire « dans cet objet, donne-moi cet attribut » ou « dans cet objet, appele cette méthode ».

Mettez le code dans un fichier « teste.php » comme suit et exécutez le :

Code de « teste.php » :

Exemple :       Copier le code

  <?php
      function chargerClasse ($classe)
      {
          include( $classe.'.php'); /* On inclue la classe correspondante au paramètre
  passé*/
      }
     
      spl_autoload_register ('chargerClasse'); /* enregistrement de la fonction en
  autoload pour qu'elle soit appelée dès qu'on instancie une classe non déclarée*/
   /* ici on donne à la variable $classe la valeur maclass.php on supposant que le
  fichier qui contient la classe porte le même nom que la classe soit maclasse */
      $classe= "Vehicule" ;
  // On crée deux objets
      $vehicule1 = new Vehicule (); // Un premier véhicule.
      $vehicule2 = new Vehicule (); // Un second véhicule.
  /* On donne un nombre de roues au véhicule 2    donc  on modifie l’attribut $roue */
      $vehicule2->setRoue(6);
  // On appele la méthode  deplacer()
      $vehicule1->deplacer (); // $vehicule1 va se déplacer de 50 kilomètres.
     
     
      echo 'Le véhicule 1 a  ', $vehicule1->roue(), ' roues,alors que le deuxième
  véhicule a ', $vehicule2->roue(), ' roues.<br />';
      echo 'Le véhicule 1 a ', $vehicule1->carburant(), ' litres dans son
  réservoir.<br />';
  ?>

Ce qui affichera :

  le véhicule a été déplacé de 50 kilomètres
Le vehicule 1 a 4 roues,alors que le deuxième vehicule a 6 roues.
Le vehicule 1 a 0 litres dans son résérvoir.


Par carabde 20 Aout 2014



Voir aussi nos tutoriel :

Balise ligne horiontalle hr

Définit un changement dans le contenu thématique

overflow

Spécifie ce qui se passe si les débordements contenu d'un élément boîte

text-indent

Spécifie l'indentation de la première ligne dans un bloc de texte