体験クラスとオブジェクト
##1、PHP オブジェクト指向の概要
オブジェクト指向プログラミング (英語: Object-owned programming 、略称: OOP) において、オブジェクトとは、情報とその情報の処理方法の記述から構成される全体であり、現実世界を抽象化したものである。 現実世界では、私たちが直面しているのはコンピューター、テレビ、自転車などの物体です。 オブジェクトの主な 3 つの特性: オブジェクトの動作: オブジェクトにどのような操作を適用できるか、ライトをオンにするかオフにするかが動作です。オブジェクトの形状: これらのメソッドが適用されたときにオブジェクトがどのように反応するか、色、サイズ、外観。オブジェクトの表現: オブジェクトの表現は ID カードに相当し、特に同じ動作とステータスの違いを区別します。 たとえば、Animal は抽象クラスです。犬と羊を指定できます。犬と羊は具体的なオブジェクトです。これらは色の属性を持ち、書き込み、実行、およびその他の行動状態を持ちます。
#オブジェクト指向コンテンツ
クラス - 物の抽象的な特性を定義します。クラスの定義には、データの形式とデータに対する操作が含まれます。
Object -クラスのインスタンスです。
メンバー変数-クラス内で定義された変数。この変数の値は外部からは見えませんが、メンバー関数を通じてアクセスでき、クラスがオブジェクトとしてインスタンス化された後は、変数をオブジェクトの属性と呼ぶことができます。
メンバー関数-クラス内で定義され、オブジェクトのデータにアクセスするために使用できます。
継承-継承は、サブクラスが親クラスのデータ構造とメソッドを自動的に共有するメカニズムであり、クラス間の関係です。クラスを定義して実装するときは、既存のクラスに基づいて実行したり、既存のクラスによって定義されたコンテンツを独自のコンテンツとして取得したり、新しいコンテンツを追加したりできます。
親クラス - クラスは他のクラスによって継承され、このクラスは親クラス、基本クラス、またはスーパークラスと呼ばれます。
サブクラス-他のクラスを継承するクラスはサブクラスと呼ばれます。または、派生クラスとも呼ばれます。
ポリモーフィズム-ポリモーフィズムとは、同じ関数またはメソッドが複数の種類のオブジェクトに作用し、異なる結果が得られることを意味します。同じメッセージを受信したときに、オブジェクトが異なれば結果も異なる場合があり、この現象はポリモーフィズムと呼ばれます。
オーバーロード - 簡単に言うと、関数またはメソッドの名前は同じですが、パラメーター リストが異なる状況です。名前が同じでパラメーターが異なるこのような関数またはメソッドは、オーバーロードされた関数またはメソッドと呼ばれます。
抽象化-抽象化は、一貫したデータ構造(属性)と動作(操作)を持つオブジェクトをクラスに抽象化することを指します。クラスは、アプリケーションに関連する重要なプロパティを反映し、その他の無関係なコンテンツを無視する抽象化です。クラスの分割は主観的ですが、特定のアプリケーションに関連している必要があります。
カプセル化-カプセル化とは、現実世界に存在するオブジェクトのプロパティと動作をバインドし、論理ユニットに配置することを指します。
Constructor - 主に、オブジェクトの作成時にオブジェクトを初期化するために使用されます。つまり、オブジェクトのメンバー変数に初期値を割り当てます。オブジェクトを作成するステートメントでは常に new 演算子と一緒に使用されます。
Destructor - デストラクター (デストラクター) コンストラクターとは対照的に、オブジェクトがそのライフサイクルを終了すると (たとえば、オブジェクトが配置されている関数が呼び出されたとき)、システムは自動的にデストラクターを実行します。デストラクターは、「クリーンアップ」作業を行うためによく使用されます (たとえば、オブジェクトを作成するとき、new を使用してメモリー空間を開きます。このメモリー空間は、終了する前にデストラクターの delete で解放する必要があります)。
2. 学生クラスを定義する
オブジェクト指向の考え方では、クラスとオブジェクトという 2 つの概念が提唱されています。クラスは型への参照です。物事の抽象的な説明、つまり、クラスにはこのオブジェクトの特性が必要です。私たちは通常、人の特性をどのように説明しますか?
たとえば、生徒を理解したい場合は、次のようにします。まず、少なくとも生徒の名前と性別、年齢、容姿などを知る必要があります...クラスメンバーのこれらの属性を属性と呼びますが、人の基本的な属性を理解した後、その人がどのようなものであるかをより深く理解したいと考えています。これはその人の行動に関係します。これはクラスのメンバー メソッドと呼ばれます。このメソッドでは、この人の特定の役割を定義できます。学生を例に挙げます。
最初に学生クラスを作成します。 Student.class.php ファイルとして定義されます (ここでは、通常のスクリプト ファイルとの違いは、クラス名が通常 ".class.php" の形式に変更されることです。クラス名はファイル名と一致する必要があります)
注: クラスのファイル名は Consistent クラスの名前と一致している必要があるため、php ファイルには 1 つのクラス定義エンコーディングのみを含めることができます。
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 9:42 */ //定义student类 class Student{ //成员属性 //成员方法 }
通常、PHP のクラスの命名規則は次のとおりです:
(1). 英語の名詞を使用し、クラス ファイルではキャメルケース表記。単語は大文字で区切ります。その他の文字はすべて小文字を使用し、名詞の最初の文字には大文字を使用し、下線は使用しないでください。
(2). 完全な単語を使用し、略語は避けてください (URL、HTML など、略語がより広く使用されている場合を除く)
(3). クラスに名前を付ける前に最初に知っておくべきことそれは何ですか。クラス名が提供する手がかりに基づいてクラスが何であるかをまだ思い出せない場合は、設計が十分ではありません。
(4). 3 語以上のクラス名が混在すると、システム内のさまざまなエンティティ間で混乱が生じやすくなりますので、クラス名を再設計してください。
例:
クラス UserAccount{
...
}
クラス PaintingOrder{
。 . .
}
3, メンバー属性とメンバー メソッドの定義
<?php class Student{ //成员属性 public $studentId; //学生学号 public $studentName;//学生姓名 public $studentAge; //学生年龄 //成员方法 public function goSchool(){ echo "{$this->studentName}去上学<br>"; } public function study($time){ echo "学习到{$time}"; } }
4 , オブジェクトの作成
学生オブジェクトをインスタンス化する新しい php ファイルを作成します
object.php:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 10:25 */ header("content-type:text/html;charset=utf8"); require './Student.class.php'; $student=new Student(); echo "<pre>"; var_dump($student);//查看对象的类型以及具体数据 echo "</pre>";
印刷結果は次のようになります。
5. メンバー属性の設定
上に出力された属性は、属性が設定されていないため、すべて null であることがわかります。プロパティ
コードは次のとおりです:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 10:25 */ header("content-type:text/html;charset=utf8"); require './Student.class.php'; $student=new Student(); $student->studentName='小张'; $student->studentId=1; $student->studentAge=25; echo "<pre>"; var_dump($student); echo "</pre>";
印刷結果は次のとおりです:
6 、メンバーメソッド呼び出し
#オブジェクトに次のコードを追加します:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 10:25 */ header("content-type:text/html;charset=utf8"); require './Student.class.php'; $student=new Student(); $student->studentName='小张'; $student->studentId=1; $student->studentAge=25; $student->goSchool(); $student->study("22:00");
結果を出力: