国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

オブジェクト指向

オブジェクト指向プログラミング (OOP、オブジェクト指向プログラミング) は、コンピューター プログラミング アーキテクチャです。OOP の基本原理の 1 つは、コンピューター プログラムが、OOP の 3 つの目標(biāo)を達(dá)成するための単一のユニットまたはオブジェクトで構(gòu)成されることです。ソフトウェア エンジニアリングの重要な點(diǎn)は、再利用性、柔軟性、拡張性です。全體的な操作を?qū)g現(xiàn)するために、各オブジェクトは情報(bào)を受信し、データを処理し、他のオブジェクトに情報(bào)を送信できます。オブジェクト指向はソフトウェア開発の分野で常に注目されています。まず第一に、オブジェクト指向は人間の物の見方の一般的なルールと一致しています。第二に、オブジェクト指向の手法を使用することで、システムの各部分がそれぞれの役割を果たし、任務(wù)を遂行できるようになります。これにより、プログラマーは、よりシンプルで保守が容易で再利用可能なコードを作成できるようになります。 PHP は真のオブジェクト指向言語ではないという人もいますが、これは事実です。 PHP はハイブリッド言語であり、OOP または従來の手続き型プログラミングを使用できます。ただし、大規(guī)模なプロジェクトの場(chǎng)合は、純粋な OOP を使用して PHP でクラスを宣言し、プロジェクト內(nèi)でオブジェクトとクラスのみを使用する必要がある場(chǎng)合があります。この概念については詳しく説明しません。なぜなら、多くの人や友人がオブジェクト指向プログラミングから遠(yuǎn)ざかる主な理由は、オブジェクト指向プログラミングに觸れても理解できないため、學(xué)びたくないからです。読者が全體の內(nèi)容を理解するまで待ちます。

オブジェクト指向を?qū)Wぶので、まずプロセス指向とは何かを理解しましょう。

手続き指向

「手続き指向」とは、プロセス中心のプログラミングの考え方です。 「プロセス指向」は、「レコード指向」プログラミングのアイデアとも呼ばれます。これらは、豊富な「オブジェクト指向」機(jī)能 (継承、ポリモーフィズムなど) をサポートせず、永続狀態(tài)とドメイン ロジックの混合を許可しません。

問題を解決するために必要な手順を分析し、関數(shù)を使用してこれらの手順を 1 つずつ呼び出すだけです。プロセス指向の重要な利點(diǎn)

プロセス指向は、問題の解決策を分析し、必要なステップを?qū)g行し、関數(shù)を使用してこれらのステップを 1 つずつ呼び出すだけです。

オブジェクト指向は、問題を構(gòu)成するトランザクションをさまざまなオブジェクトに分解することです。オブジェクトを確立する目的は、ステップを完了することではなく、問題を解決するステップ全體における何かの動(dòng)作を記述することです。

例えば次の例です

  • オブジェクト指向では問題をステップではなく機(jī)能で分割していることがはっきりとわかります。チェスのゲームの描畫でも、プロセス指向の設(shè)計(jì)ではこのような動(dòng)作が複數(shù)のステップに分散されており、通常、デザイナーは実際の狀況を考慮してさまざまな簡略化を行うため、異なる描畫バージョンが表示される可能性があります。オブジェクト指向設(shè)計(jì)では、描畫はチェス盤オブジェクト內(nèi)にのみ表示できるため、描畫の統(tǒng)一性が保証されます

    クラスとオブジェクトの関係

    オブジェクト: オブジェクトは人々が研究したいもの、それです。具體的なものだけでなく、抽象的なルール、計(jì)畫、イベントを表すこともできます。オブジェクトには狀態(tài)があり、オブジェクトはデータ値を使用してその狀態(tài)を記述します。オブジェクトには、オブジェクトの狀態(tài)を変更するために使用される操作もあります。オブジェクトとその操作は、オブジェクトの動(dòng)作です。オブジェクトはデータと操作の組み合わせを?qū)g現(xiàn)するため、データと操作はオブジェクトの単一性の中にカプセル化されます。

    クラス: 同じ特性 (データ要素) と動(dòng)作 (関數(shù)) を持つオブジェクトを抽象化したものがクラスです。したがって、オブジェクトの抽象化がクラスであり、クラスの具體化がオブジェクトです。クラスのインスタンスがオブジェクトであり、クラスが実際にはデータ型であるとも言えます。クラスにはオブジェクトの狀態(tài)を抽象化した屬性があり、データ構(gòu)造を使用してクラスの屬性を記述します。クラスには、オブジェクトの動(dòng)作を抽象化したオペレーションがあり、オペレーション名とそのオペレーションを?qū)g裝するメソッドによって記述されます。

    オブジェクトとクラスの関係:

    クラスとオブジェクトの関係は、型と鋳物の関係に似ており、クラスの強(qiáng)さの結(jié)果がオブジェクトであり、オブジェクトの抽象化がクラスです。は、同じ特性 (屬性) を持つオブジェクトのグループと同じ動(dòng)作を持つオブジェクトを表します。

    phpクラスのメンバー屬性とメンバーメソッド

    クラスによって定義されたメソッド

    <?php
    class phpClass {
      var $var1;
      var $var2 = "constant string";
      
      function myfunc ($arg1, $arg2) {
         [..]
      }
      [..]
    }
    ?>
    <?php
        class boy{
             
            var $name ="jw";
            var $age = "21";        
            var $sex = "男";        
            var $height = "182CM";        
            var $eye = "big";        //函數(shù)(成員方法)       
             function zuofan(){            
             return "做飯<br>";        }       
              function jiawu(){            
              return "家務(wù)<br>";        }
              };
    ?>


    注: クラスのメンバー屬性の前に修飾子が必要です。宣言修飾子の使用方法がわかりません。var (キーワード) を使用できます。他の修飾子がある場(chǎng)合は、var を使用しないでください

    注: メンバー屬性は、演算子、変數(shù)、メソッド、または関數(shù)呼び出しを含む式にすることはできません。宣言されたメンバー メソッドはオブジェクトに関連している必要があり、無意味な操作であってはなりません。

    インスタンス化されたオブジェクト

    クラスのインスタンス化形式は次のとおりです:

    $object name = new class name ([parameter]) // クラスのインスタンス化: というステートメント。クラスはオブジェクトになります


    · $Object name: クラスのインスタンス化によって返されるオブジェクト名。クラス內(nèi)のメソッドを參照するために使用されます。

    · new: 新しいオブジェクトが作成されることを示すキーワード。

    ?クラス名:クラスの名前を示します。

    · パラメータ: 指定されたクラスのコンストラクター メソッドは、クラスの値を初期化するために使用されます。クラスにコンストラクターが定義されていない場(chǎng)合、PHP はパラメーターのないデフォルトのコンストラクターを自動(dòng)的に作成します。

    new.php で提供されるソース コードでは、オブジェクトをインスタンス化してアクセスする方法が明確にわかります。

    <?php
    class boy{
        //變量(成員屬性)    
        var $name ="jw";    
        var $age = "21";    
        var $sex = "男";    
        var $height = "182CM";   
        var $eye = "big";    
        //函數(shù)(成員方法)    
        function zuofan(){       
         return "做飯<br>";    }    
         function jiawu(){        
         return "家務(wù)<br>";    }
         }
         $boy1 = new boy();
         $boy1->name = "張三";
         $boy2 = new boy();
         $boy2 ->name = "李四";
         echo $boy1 -> sex."<br>";
         echo $boy2 -> height."<br>";
    ?>

    -> 記號(hào)はアクセスオブジェクト名の下のクラスを表します。

    特別なオブジェクト參照「this」。

    それがオブジェクトのメンバーである限り、このオブジェクトの內(nèi)部およびメソッドにアクセスするには、このオブジェクトを使用する必要があります。

    <?php class boy{     
    //變量(成員屬性)    
     var $name ="jw";    
      var $age = "21";    
       var $sex = "男";     
        //函數(shù)(成員方法)     
        public function zuofan(){        
        echo "{$this->name} 做飯<br>";        
         $this->jiawu();     }     
         function jiawu(){       
          echo "家務(wù)<br>";     } 
          }  
          $boy1 = new boy(); 
           $boy2 = new boy;  
           $boy2 ->name = "李四";  
           $boy1->name = "張三";   
           $boy1->zuofan();  
           $boy2->zuofan();
    ?>

    コンストラクターメソッド

    コンストラクター関數(shù)は特別なメソッドです。これは主に、オブジェクトの作成時(shí)にオブジェクトを初期化する、つまりオブジェクトのメンバー変數(shù)に初期値を割り當(dāng)てるために使用され、オブジェクトを作成するステートメント內(nèi)で常に new 演算子と一緒に使用されます。

    1. オブジェクトの作成後に最初に自動(dòng)的に呼び出されるメソッドです (特殊)

    2. メソッド名はクラス名と同じにすることができます

    3. 初期値を割り當(dāng)てるために使用します。オブジェクト內(nèi)のメンバーに .

    <?php class boy{    
     //變量(成員屬性)     
     var $name;     
     var $age;     
     var $sex;      
     function __construct($name,$age,$sex="男"){        
      $this->name="$name";         
      $this->age="$age";         
      $this->sex="$sex";     }     
      //函數(shù)(成員方法)     
      public function zuofan(){         
      echo "{$this->name} 做飯<br>";         
      $this->jiawu();     }     
      function jiawu(){        
       echo "家務(wù)<br>";     } 
       }  
       $boy1 = new boy("名字",28); 
        $boy2 = new boy("名",26,"男");  
         $boy1->zuofan(); 
         $boy2->zuofan();
    ?>

    Destructor メソッド

    Destructor (デストラクター) コンストラクターとは逆に、オブジェクトがそのライフサイクルを終了するとき (たとえば、オブジェクトが配置されている関數(shù)が呼び出されたとき) )、システムは自動(dòng)的にデストラクターを?qū)g行します。

    PHP 5 では、他のオブジェクト指向言語と同様のデストラクターの概念が導(dǎo)入されました。構(gòu)文形式は次のとおりです。

    void __destruct ( void )

    Inheritance

    PHP は、キーワード extends を使用してオブジェクトを継承します。 class の場(chǎng)合、PHP は多重継承をサポートしていません。形式は次のとおりです:

    <?php

    class Child extends Parent {
    // コード部分
    }

    ?>

    アクセス制御

    PHP屬性またはメソッドの場(chǎng)合、アクセス制御はキーワード public (パブリック)、protected (保護(hù))、または private (プライベート) を先頭に追加することで実現(xiàn)されます。

    · パブリック: パブリック クラスのメンバーにはどこからでもアクセスできます。

    · 保護(hù): 保護(hù)されたクラスのメンバーは、それ自體、そのサブクラス、親クラスからアクセスできます。

    · プライベート: プライベート クラスのメンバーには、それが定義されているクラスのみがアクセスできます。

    public.php protected.php private.php を參照して違いを確認(rèn)できます

    メソッドの書き換え

    メソッドのオーバーライド/オーバーライド - どのような狀況で使用されるか: 親クラスがすべてのサブクラスを認(rèn)識(shí)している場(chǎng)合 すべてが必要ですメソッドを使用しますが、親クラスがこのメソッドの書き方を知らない場(chǎng)合は、メソッドのオーバーロードを使用する必要があります?,F(xiàn)時(shí)點(diǎn)では、サブクラスでこのメソッドをオーバーライドすることができます。

    人気のある例 - 親クラス (animal) は、そのサブクラス (貓と犬) が吠えることを知っていますが、その鳴き聲は異なるため、親クラスはこのメソッドを作成できず、サブクラス (貓と犬) には犬のみを許可できます)定義します。コードは次のとおりです:

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

    インターフェース

    インターフェースは規(guī)定であり、抽象クラスに似た、人が継承できるものです
    その中で定義されたメソッドはインスタンス化されませんが、それを?qū)g裝するには他のクラスが必要であり、インターフェースによって定義されたすべてのメソッドは 1 つずつ実裝する必要があります。たとえば、
    インターフェイス Shop
    {
    public function buy($gid);
    public function view($gid);
    }
    ショップ インターフェイス クラスを宣言し、次の 3 つのメソッドを定義します。 、sell、view の場(chǎng)合、このクラスを継承するすべてのサブクラスは、これら 3 つのメソッドのいずれかを?qū)g裝する必要があります。サブクラスがこれらを?qū)g裝していない場(chǎng)合、機(jī)能しません。実際、インターフェイス クラスは、端的に言えば、クラスのテンプレートであり、クラスの規(guī)則です。このカテゴリに屬する??場(chǎng)合は、どのような方法であっても、私の規(guī)則に従わなければなりません。

    <?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.'的商品');  
    }  
    }
    ?>

    定數(shù)

    クラス內(nèi)で常に変更されない値を定數(shù)として定義できます。定數(shù)を定義および使用するときに $ 記號(hào)を使用する必要はありません。

    定數(shù)の値は固定値である必要があり、変數(shù)、クラス屬性、數(shù)學(xué)的演算や関數(shù)呼び出しの結(jié)果にすることはできません。

    <?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 起
    ?>

    phpの::の意味

    クラス內(nèi)の靜的メソッドと靜的屬性の參照メソッド

    例えば

    <?php
    class Test{     
    public static $test = 1;    
    public static function test(){ 
       }
       }
    ?>

    Test::$testを使用すると、オブジェクトをインスタンス化せずに$test屬性の値を直接取得できます

    靜的メソッド呼び出しも同様に、Test::test(); で靜的メソッド test を直接呼び出します

    抽象クラス

    PHP プログラマーにとって、習(xí)得するのが最も難しい點(diǎn)は PHP 抽象の知識(shí)點(diǎn)ですクラスの申し込み。私は初心者なので、まだオブジェクト指向の知識(shí)を使ってプログラミングする準(zhǔn)備ができていませんが、將來的には、クラスを使用してカプセル化したり、インターフェイスを使用してさまざまなモジュール形式でプログラムを開発したりすることは避けられません。

    自然言語では、抽象概念をオブジェクトの大きな説明として理解します。これは、特定の種類のオブジェクトに共通する特性です。 PHP にも同じことが當(dāng)てはまります。クラスを抽象化する場(chǎng)合、このクラスは、そのサブメソッドが実裝する必要があるいくつかの動(dòng)作を示すテンプレートである必要があります。

    PHP抽象クラスアプリケーションの定義:

    抽象クラスClassName{

    }

    PHP抽象クラスアプリケーションのキーポイント:

    1. いくつかのメソッドを定義し、サブクラスはこの抽象化のすべてのメソッドを完全に実裝する必要があります

    2.抽象クラスからオブジェクトを作成することはできません。その意味は拡張されることです

    3. 抽象クラスには通常、抽象メソッドがあり、メソッドには中括弧がありません

    PHP 抽象クラスの適用ポイント:

    1. 抽象メソッドは次のことを行います特定の関數(shù)を?qū)g裝する必要はなく、サブクラスによって完了します

    2. サブクラスが抽象クラスのメソッドを?qū)g裝する場(chǎng)合、サブクラスの可視性は抽象メソッドの定義以上である必要があります

    3.抽象クラスのメソッドはパラメータを持つことも、空にすることもできます

    4 . 抽象メソッドにパラメータがある場(chǎng)合、サブクラスの実裝にも同じ數(shù)のパラメータが必要です

    PHP抽象クラスの適用例:

    abstract public function_name( ); //中括弧がないことに注意してください

    PHP 抽象クラスのルール:

    1. クラスに少なくとも 1 つの抽象メソッドが含まれている限り、抽象クラスとして宣言する必要があります

    2. 抽象メソッドには関數(shù)本體を含めることはできません

    3.クラスを?qū)g裝する場(chǎng)合、抽象メソッドを?qū)g裝する人は、抽象メソッドと同じか、それ以下のアクセス レベルを持つ必要があります

    4. 抽象クラスのサブクラスを継承するすべての抽象メソッドを?qū)g裝しない場(chǎng)合、そのサブクラスも抽象クラスになります。

    実裝してみましょう 単純な抽象クラス: 長方形の面積を計(jì)算します。この長方形は形狀クラスから拡張できます。

    abstract.php コードを表示できます

    Final キーワード

    クラスを継承したくない場(chǎng)合は、final を使用してこのクラスを変更します。このクラスは継承されません。

    final---クラスとメソッドの前に使用されます。

    最終クラス --- 継承できません。

    最終メソッド --- オーバーライドできません。
    最終クラスは継承できません。
    クラスを拡張不可能にするだけの場(chǎng)合は、クラスの前に Final を追加して、クラスが継承できないようにすることができます。

    靜的キーワード

    PHP の変數(shù)スコープのもう 1 つの重要な機(jī)能は、靜的変數(shù)です。靜的変數(shù)はローカル関數(shù)スコープ內(nèi)にのみ存在し、プログラムの実行がこのスコープを離れるときに一度だけ初期化され、その値は消えず、最後の実行の結(jié)果が使用されます。

    PHP_EOL


    改行

    親クラスのコンストラクターメソッド

    parent::__construct() を呼び出します。

    PHP は、サブクラスのコンストラクターで親クラスのコンストラクターを自動(dòng)的に呼び出しません。親クラスのコンストラクターを?qū)g行するには、サブクラスのコンストラクターでそれを呼び出す必要があります

學(xué)び続ける
||
<?PHP class boy{ //變量(成員屬性) var $name ="jw"; var $age = "21"; var $sex = "男"; var $height = "182CM"; var $eye = "big"; //函數(shù)(成員方法) function zuofan(){ return "做飯<br>"; } function jiawu(){ return "家務(wù)<br>"; } }; ?>
提出するリセットコード