orienté objetSE CONNECTER

orienté objet

La programmation orientée objet (POO, programmation orientée objet) est une architecture de programmation informatique. L'un des principes de base de la POO est qu'un programme informatique est composé d'une seule unité ou d'un objet qui peut fonctionner comme un sous-programme. trois objectifs du génie logiciel : réutilisabilité, flexibilité et évolutivité. Afin de réaliser l'opération globale, chaque objet peut recevoir des informations, traiter des données et envoyer des informations à d'autres objets. L’orientation objet a toujours été un sujet brûlant dans le domaine du développement logiciel. Tout d’abord, l’orientation objet s’inscrit dans les règles générales de la façon dont les humains perçoivent les choses. Deuxièmement, l'utilisation de méthodes orientées objet permet à chaque partie du système de remplir ses fonctions et de remplir ses fonctions. Cela ouvre la porte aux programmeurs pour écrire du code plus simple, plus facile à maintenir et plus réutilisable. Certains disent que PHP n’est pas un véritable langage orienté objet, et c’est vrai. PHP est un langage hybride, vous pouvez utiliser la POO ou la programmation procédurale traditionnelle. Cependant, pour les grands projets, vous devrez peut-être utiliser la POO pure pour déclarer des classes en PHP et utiliser uniquement des objets et des classes dans votre projet. Je n'entrerai pas dans les détails de ce concept car la principale raison pour laquelle de nombreuses personnes et amis restent à l'écart de la programmation orientée objet est qu'ils ne peuvent pas la comprendre lorsqu'ils entrent en contact avec elle, donc ils ne veulent pas apprendre. Attendez que les lecteurs aient lu le contenu global.

Puisque nous apprenons l'orientation objet, comprenons d'abord ce qui est orienté processus.

Orienté processus

"Orienté procédure" est une idée de programmation centrée sur le processus. Les idées de programmation « orientées processus » peuvent également être appelées « orientées enregistrement ». Elles ne prennent pas en charge les fonctionnalités riches « orientées objet » (telles que l'héritage, le polymorphisme) et ne permettent pas de mélanger la logique d'état persistant et de domaine.

consiste à analyser les étapes nécessaires pour résoudre le problème, puis à utiliser des fonctions pour mettre en œuvre ces étapes étape par étape. Lorsque vous les utilisez, appelez-les simplement une par une.

Avantages importants de l'orientation processus

  • Lisibilité

  • Réutilisabilité

  • Maintenabilité

  • Testabilité

Orienté processus signifie analyser et trouver des solutions Les étapes nécessaires à la problème, puis utilisez des fonctions pour mettre en œuvre ces étapes étape par étape. Lorsque vous les utilisez, appelez-les simplement une par une.

L'orientation objet consiste à décomposer la transaction qui constitue le problème en divers objets. Le but de l'établissement de l'objet n'est pas de terminer une étape, mais de décrire le comportement de quelque chose dans toute l'étape de résolution du problème. .

Par exemple, l'exemple suivant


QQ截图20161010091445.png

On voit clairement que l'orientation objet divise les problèmes par fonctions et non par étapes. Il s'agit également de dessiner un jeu d'échecs. Un tel comportement est dispersé en plusieurs étapes dans une conception orientée processus, et différentes versions de dessin sont susceptibles d'apparaître, car les concepteurs effectuent généralement diverses simplifications en tenant compte de la situation réelle. Dans la conception orientée objet, le dessin ne peut apparaître que dans l'objet échiquier, assurant ainsi l'unité du dessin.

La relation entre les classes et les objets

Objet : Un objet est tout ce que les gens veulent étudier. Il peut non seulement représenter des choses spécifiques, mais aussi des règles abstraites, des plans ou des événements. Les objets ont un état et un objet utilise des valeurs de données pour décrire son état. Les objets ont également des opérations, qui sont utilisées pour modifier l'état de l'objet. L'objet et ses opérations constituent le comportement de l'objet. Les objets réalisent la combinaison de données et d'opérations, de sorte que les données et les opérations soient encapsulées dans l'unité des objets.

Classe : Une abstraction d'objets ayant les mêmes caractéristiques (éléments de données) et comportement (fonctions) est une classe. Par conséquent, l'abstraction d'un objet est une classe, et la concrétisation d'une classe est un objet. On peut également dire qu'une instance d'une classe est un objet et qu'une classe est en fait un type de données. Les classes ont des attributs, qui sont des abstractions de l'état des objets, et utilisent des structures de données pour décrire les attributs de la classe. Une classe a une opération, qui est une abstraction du comportement de l'objet, décrite par le nom de l'opération et la méthode pour implémenter l'opération.

La relation entre les objets et les classes :

La relation entre les classes et les objets est comme la relation entre les moules et les moulages. Le résultat de la force de la classe est l'objet, et l'abstraction de. l'objet est la classe, et la description de la classe Un groupe d'objets avec les mêmes caractéristiques (propriétés) et le même comportement.

Propriétés membres et méthodes membres de la classe php

Méthodes définies par la classe

<?php
class phpClass {
  var $var1;
  var $var2 = "constant string";
  
  function myfunc ($arg1, $arg2) {
     [..]
  }
  [..]
}
?>
rrree


Remarque : il doit y avoir un modificateur devant l'attribut membre de la classe. Si vous ne savez pas comment utiliser le modificateur de déclaration, vous pouvez utiliser var (mot-clé). sont d'autres modificateurs, n'utilisez pas var.
Remarque : les attributs membres ne peuvent pas être des expressions avec des opérateurs, des variables, des méthodes ou des appels de fonction. Les méthodes membres déclarées doivent être liées à l'objet et ne peuvent pas être des opérations dénuées de sens.

Objet instancié

Le format d'instanciation de la classe est le suivant :

$Object name = nouveau nom de classe ([paramètre]); // Instanciation d'une classe : l'instruction selon laquelle la classe devient un objet

· Nom $Object : Le nom de l'objet renvoyé par l'instanciation de classe, utilisé pour faire référence aux méthodes de la classe.

· new : Mot clé, indiquant qu'un nouvel objet est à créer.

· Nom de la classe : Indique le nom de la classe.

· Paramètres : La méthode constructeur de la classe spécifiée est utilisée pour initialiser la valeur de la classe. Si aucun constructeur n'est défini dans la classe, PHP créera automatiquement un constructeur par défaut sans paramètres.

Le code source fourni dans new.php permet de voir clairement comment instancier et accéder aux objets. Le symbole

<?php
    class boy{
         
        var $name ="jw";
        var $age = "21";        
        var $sex = "男";        
        var $height = "182CM";        
        var $eye = "big";        //函数(成员方法)       
         function zuofan(){            
         return "做饭<br>";        }       
          function jiawu(){            
          return "家务<br>";        }
          };
?>

-> représente la classe sous le nom de l'objet d'accès.

Référence d'objet spécial "this".

Tant qu'il est membre d'un objet, vous devez utiliser cet objet pour accéder aux internes et aux méthodes de cet objet.

<?php
class boy{
    //变量(成员属性)    
    var $name ="jw";    
    var $age = "21";    
    var $sex = "男";    
    var $height = "182CM";   
    var $eye = "big";    
    //函数(成员方法)    
    function zuofan(){       
     return "做饭<br>";    }    
     function jiawu(){        
     return "家务<br>";    }
     }
     $boy1 = new boy();
     $boy1->name = "张三";
     $boy2 = new boy();
     $boy2 ->name = "李四";
     echo $boy1 -> sex."<br>";
     echo $boy2 -> height."<br>";
?>

Méthode constructeur

Le constructeur est une méthode spéciale. Il est principalement utilisé pour initialiser l'objet lors de la création de l'objet, c'est-à-dire pour attribuer des valeurs initiales aux variables membres de l'objet. Il est toujours utilisé avec l'opérateur new dans l'instruction pour créer l'objet.

1. C'est la première méthode appelée automatiquement après la création de l'objet (spécial)

2. Le nom de la méthode est spécial et peut être le même que le nom de la classe

<🎜. >3. Utilisé pour attribuer des valeurs initiales aux membres d'un objet.

<?php class boy{     
//变量(成员属性)    
 var $name ="jw";    
  var $age = "21";    
   var $sex = "男";     
    //函数(成员方法)     
    public function zuofan(){        
    echo "{$this->name} 做饭<br>";        
     $this->jiawu();     }     
     function jiawu(){       
      echo "家务<br>";     } 
      }  
      $boy1 = new boy(); 
       $boy2 = new boy;  
       $boy2 ->name = "李四";  
       $boy1->name = "张三";   
       $boy1->zuofan();  
       $boy2->zuofan();
?>

Méthode de destruction

Destructeur et constructeur Au contraire, lorsque l'objet termine son cycle de vie (par exemple, la fonction dans laquelle se trouve l'objet a été appelée), le système exécute automatiquement le destructeur.

PHP 5 a introduit le concept de destructeur, qui est similaire à d'autres langages orientés objet. Son format de syntaxe est le suivant :

void __destruct ( void )


<🎜. >

Hériter

PHP utilise le mot-clé extends pour hériter d'une classe. PHP ne prend pas en charge l'héritage multiple. Le format est le suivant :

<?php

.

classe Enfant étend Parent {

// Partie code

}


?>

Contrôle d'accès

PHP pour les attributs ou le contrôle d'accès des méthodes est réalisé en ajoutant les mots-clés public, protected ou private devant.

· Public : les membres de la classe publique sont accessibles de n'importe où.

· Protégé : les membres de la classe protégée sont accessibles par eux-mêmes, leurs sous-classes et leurs classes parentes.

·     Private (privé) : les membres de la classe privée ne sont accessibles que par la classe dans laquelle ils sont définis.

Vous pouvez consulter public.php protected.php private.php pour voir la différence

Réécriture de méthodeSurcharge de méthode (override)/override - dans quelles circonstances est-il utilisé : lorsque la classe parent sait que toutes les sous-classes doivent utiliser une méthode, mais que la classe parent ne sait pas comment écrire cette méthode, la surcharge de méthode doit être utilisée. À ce stade, vous pouvez laisser la sous-classe remplacer cette méthode.

Exemple populaire : la classe parent (animal) sait que ses sous-classes (chats et chiens) peuvent aboyer, mais leurs noms sont différents, donc la classe parent ne peut pas écrire cette méthode et ne peut laisser que les classes enfants (chat et chien) à définir. Le code est le suivant :

<?php class boy{    
 //变量(成员属性)     
 var $name;     
 var $age;     
 var $sex;      
 function __construct($name,$age,$sex="男"){        
  $this->name="$name";         
  $this->age="$age";         
  $this->sex="$sex";     }     
  //函数(成员方法)     
  public function zuofan(){         
  echo "{$this->name} 做饭<br>";         
  $this->jiawu();     }     
  function jiawu(){        
   echo "家务<br>";     } 
   }  
   $boy1 = new boy("名字",28); 
    $boy2 = new boy("名",26,"男");  
     $boy1->zuofan(); 
     $boy2->zuofan();
?>

Interface

L'interface est une stipulation, quelque chose dont les gens peuvent hériter, un peu comme les méthodes définies dans la classe abstraite
, mais elle n'est pas instanciée, mais nécessite d'autres classes pour l'implémenter, et l'interface doit être implémentée une par une . Toutes les méthodes définies, par exemple
interface Shop
{
public function buy($gid);
public function sell($gid); 🎜> }
Je déclare une classe d'interface de boutique et définis trois méthodes : acheter, vendre et visualiser. Ensuite, toutes les sous-classes qui héritent de cette classe doivent implémenter ces trois méthodes. Aucune d'entre elles ne fonctionnera. , ça ne marchera pas. En fait, la classe d'interface est, pour parler franchement, le modèle d'une classe et les règlements d'une classe. Si vous appartenez à cette catégorie, vous devez suivre mes règlements, peu importe comment vous le faites, je m'en fiche. comment vous le faites. Cela dépend de vous. Des choses comme :

<?php
class Animal{
 public $name;
 protected $price;
 function cry(){
 echo "不知道动物怎么叫";
 }
}
class Dog extends Animal{
 function cry(){
 echo "汪汪...";
 }
}
class Pig extends Animal{
 function cry(){
 echo "哼哼..."
 }
}
?>

Constant

Vous pouvez définir une valeur qui reste toujours inchangée dans la classe en tant que valeur. constante. Il n'est pas nécessaire d'utiliser le symbole $ lors de la définition et de l'utilisation de constantes.

La valeur d'une constante doit être une valeur fixe et ne peut pas être une variable, un attribut de classe, le résultat d'une opération mathématique ou un appel de fonction.

<?php
class BaseShop implements Shop  
{  
public function buy($gid)  
{  
echo('你购买了ID为 :'.$gid.'的商品');  
}  
public function sell($gid)  
  
echo('你卖了ID为 :'.$gid.'的商品');  
}  
public function view($gid)  
{  
echo('你查看了ID为 :'.$gid.'的商品');  
}  
}
?>

La signification de :: en php

Méthodes de référence des méthodes statiques et propriétés statiques dans les classes

Par exemple,

<?php
class MyClass
{
    const constant = '常量值';
 
    function showConstant() {
        echo  self::constant . PHP_EOL;
    }
}
 
echo MyClass::constant . PHP_EOL;
 
$classname = "MyClass";
echo $classname::constant . PHP_EOL; // 自 5.3.0 起
 
$class = new MyClass();
$class->showConstant();
 
echo $class::constant . PHP_EOL; // 自 PHP 5.3.0 起
?>

peut utiliser Test:: directement sans instanciation des objets. $test pour obtenir la valeur de l'attribut $test

Il en va de même pour les appels de méthode statique Test::test(); Appeler directement la méthode statique test



Résumé class

Pour les programmeurs PHP, le point le plus difficile à maîtriser est l'application des classes abstraites PHP. En tant que novice, je ne suis pas encore prêt à utiliser des connaissances orientées objet pour programmer, mais à l'avenir, il sera inévitable d'utiliser des classes pour encapsuler ou d'utiliser des interfaces pour développer des programmes dans divers formats modulaires.

En langage naturel, nous comprenons les concepts abstraits comme une description large d'un objet, qui est une caractéristique commune pour un certain type d'objet. La même chose est vraie en PHP. Lorsque nous faisons abstraction d'une classe, nous pouvons indiquer le comportement général de la classe. Cette classe doit être un modèle, qui indique certains comportements que ses sous-méthodes doivent implémenter.

Définition de l'application de classe abstraite PHP :

Classe abstraite ClassName{

>

Points clés de l'application de classe abstraite PHP :

1. Définissez certaines méthodes, et la sous-classe doit implémenter pleinement toutes les méthodes de cette abstraction

2. Les objets ne peuvent pas être créés à partir de classes abstraites, sa signification doit être étendue

3. Les classes abstraites généralement ont des méthodes abstraites, il n'y a pas d'accolades dans la méthode

Points clés de l'application de classe abstraite PHP :

1. Les méthodes abstraites n'ont pas besoin d'implémenter de fonctions spécifiques et sont complétées par des sous-classes

2. Dans les sous-classes Lors de l'implémentation d'une méthode d'une classe abstraite, la visibilité de sa sous-classe doit être supérieure ou égale à la définition de la méthode abstraite

3. La méthode de la classe abstraite peut avoir des paramètres ou être vide

4. Si Si une méthode abstraite a des paramètres, alors l'implémentation de la sous-classe doit également avoir le même nombre de paramètres

Exemple d'application de classe abstraite PHP :

abstract public function_name(); //Notez qu'il n'y a pas d'accolades

Règles des classes abstraites PHP :

1. Tant qu'une classe contient au moins une méthode abstraite, elle doit être déclarée comme classe abstraite

2. Méthode abstraite, non Peut contenir un corps de fonction

3 L'héritage d'une sous-classe d'une classe abstraite et l'implémentation d'une méthode abstraite doivent avoir le même niveau d'accès ou un niveau inférieur à celui de la méthode abstraite

4. une sous-classe d'une classe abstraite Class, si toutes les méthodes abstraites ne sont pas implémentées, alors la sous-classe est aussi une classe abstraite

Implémentons une classe abstraite simple : calculons l'aire d'un rectangle. Ce rectangle peut être étendu à partir de la classe de forme.

Vous pouvez visualiser le code abstract.php

Mot-clé final

Si nous ne voulons pas qu'une classe soit héritée, nous utilisons final pour modifier cette classe. Cette classe ne sera pas héritée.

final---utilisé avant les cours et les méthodes.
Classe finale --- ne peut pas être héritée.
Méthode finale --- ne peut pas être remplacée.
Les classes finales ne peuvent pas être héritées.
Lorsque nous voulons uniquement qu'une classe soit non extensible, nous pouvons ajouter Final devant la classe afin que la classe ne puisse pas être héritée.

Mot-clé statique

Une autre fonctionnalité importante de la portée des variables en php concerne les variables statiques. Les variables statiques n'existent que dans la portée de la fonction locale et ne sont initialisées qu'une seule fois. Lorsque l'exécution du programme quitte cette portée, sa valeur ne disparaîtra pas et le résultat de la dernière exécution sera utilisé.

PHP_EOL

Saut de ligne

Appelez la méthode constructeur de la classe parent

parent::__construct().

PHP n'appellera pas automatiquement le constructeur de la classe parent dans le constructeur de la sous-classe. Pour exécuter le constructeur de la classe parent, vous devez appeler


dans le constructeur de la sous-classesection suivante
<?PHP class boy{ //变量(成员属性) var $name ="jw"; var $age = "21"; var $sex = "男"; var $height = "182CM"; var $eye = "big"; //函数(成员方法) function zuofan(){ return "做饭<br>"; } function jiawu(){ return "家务<br>"; } }; ?>
soumettreRéinitialiser le code
chapitredidacticiel