オブジェクト指向プログラミングの概念
オブジェクト指向プログラミング (OOP、オブジェクト指向プログラミング) は、コンピューター プログラミング アーキテクチャです。OOP の基本原理は、コンピューター プログラムが機能する単一のユニットで構成されるということです。 OOP はサブルーチンとしてオブジェクトで構成され、再利用性、柔軟性、拡張性というソフトウェア エンジニアリングの 3 つの目標を達成します。全体的な操作を実現するために、各オブジェクトは情報を受信し、データを処理し、他のオブジェクトに情報を送信できます。オブジェクト指向はソフトウェア開発の分野で常に注目されています。まず第一に、オブジェクト指向は人間の物の見方の一般的なルールと一致しています。第二に、オブジェクト指向の手法を使用することで、システムの各部分がそれぞれの役割を果たし、任務を遂行できるようになります。これにより、プログラマーは、よりシンプルで保守が容易で再利用可能なコードを作成できるようになります。 PHP は真のオブジェクト指向言語ではないという人もいますが、
これは本当です。 PHP はハイブリッド言語であり、OOP または従来の手続き型プログラミングを使用できます。ただし、大規模なプロジェクトの場合は、純粋な OOP を使用して PHP でクラスを宣言し、プロジェクト内でオブジェクトとクラスのみを使用する必要がある場合があります。この概念については詳しく説明しません。なぜなら、多くの友人がオブジェクト指向プログラミングから遠ざかる主な理由は、オブジェクト指向の概念に触れても理解できないからです。もうそれを学ぶために。内容全体を読んだ後、読者にコンセプトを理解してもらいます。
2. クラスとは、オブジェクトとは、およびクラスとオブジェクトの関係
クラスの概念: クラスは、同じ属性とサービスを持つオブジェクトのコレクションです。これは、このクラスに属するすべてのオブジェクトに対して統一された抽象的な説明を提供します。これには、プロパティとサービスという 2 つの主要な部分が含まれます。オブジェクト指向プログラミング言語では、クラスは独立したプログラム単位であり、クラス名を持ち、属性の説明とサービスの説明という 2 つの主要な部分を含む必要があります。
オブジェクトの概念: オブジェクトは、システム内の客観的なものを記述するために使用される実体であり、システムを構成する基本単位です。オブジェクトは、プロパティのセットと、プロパティのセットに対して動作するサービスのセットで構成されます。より抽象的な観点から見ると、オブジェクトは、問題ドメインまたは実装ドメイン内の何かを抽象化したもので、保存する必要がある情報と、そのオブジェクトがシステム内で果たす役割を反映しています。それは、属性と許可されたオブジェクトのセットです。これらのプロパティは、それら上で動作する一連のサービスをカプセル化します。客観的な世界は、オブジェクト
とオブジェクト間のつながりで構成されます。
クラスとオブジェクトの関係は、型と鋳物の関係に似ています。クラスのインスタンス化の結果がオブジェクトであり、オブジェクトの型を抽象化したものがクラスです。クラスは、同じ特性 (プロパティ) と同じ動作 (メソッド) を持つオブジェクトのグループを記述します。
上記はおそらくオブジェクト指向の定義です。中関村に行って組み立て済みの PC を購入したい場合の例を説明します。最初のステップは何ですか?
設置エンジニアがあなたと一緒に座って、あなたが提供した情報に基づいて設置構成リストを作成しますか? この構成リストは単なる紙に過ぎませんが、たとえば、この構成リストを使用して 10 台のマシンを購入した場合、これらの 10 台のマシンはすべてこの構成リストに従って構成されているため、これらの 10 台のマシンは同じタイプになります。同じタイプとも言えます。では、オブジェクトとは何でしょうか? この構成シートを使用して構成 (インスタンス化) されたマシンはオブジェクトであり、10 台のマシン、10 個のオブジェクトを操作できます。各マシンは独立しています。これは、いずれかのマシンで実行されたアクションは他の 9 台のマシンには影響しません。ただし、クラスを変更する場合は、アクセサリが 1 つ欠落している場合に追加します。これは、クラスとオブジェクトの関係です (クラスのインスタンス化の結果はオブジェクトです)。
3.オブジェクト指向プログラミングとは何ですか?
彼のコンセプトは言うまでもありませんが、コンピューター教室を建てたい場合は、まず N 台のコンピューター、N 個のテーブル、N 個の椅子、ホワイトボード、プロジェクターなどを備えた部屋を用意する必要があります。先ほど述べたように、これらは何ですか? 、このコンピュータ教室の単位は、これらの個々の物理的なオブジェクトであると言えます。つまり、私たちはこのコンピュータ教室を構成していると言えます。 -指向?システム プログラムの開発は、コンピュータ教室を構築するのと似ています。このシステムでは、各独立した機能モジュールをクラスに抽象化し、複数のオブジェクトで構成されます。オブジェクトの送信およびその他のインタラクション。
4. クラスを抽象化するには?
上で紹介したように、オブジェクト指向プログラムの単位はオブジェクトですが、オブジェクトはクラスによってインスタンス化されるので、最初にクラスを宣言するだけで済み、クラスを作るのは簡単です。基本的なプログラム構文定義をマスターしながら
正しいルールに従って行うことができますが、何が難しいのでしょうか?プロジェクトで使用するクラスとオブジェクトの数、クラスを定義する場所、定義するクラスの種類、このクラスによってインスタンス化されるオブジェクトの数、クラス内に属性がいくつあるか、メソッドがいくつあるか、など、読者は実際の開発における実践的な問題を分析、設計、要約する必要があります。
クラスの定義:
class クラス名 {
}
キーワード class の後に希望のクラス名と中括弧のペアを使用して、内部にある限りクラスの構造を定義します。コードですが、そこには何が書かれているのでしょうか?何を書けばいいでしょうか?完全なクラスを作成するにはどうすればよいですか?前述したように、クラスを使用する目的は、使用するオブジェクトをインスタンス化することです。これには、前述のインストール構成シートと同様に、インストール構成シートに何が書かれているかを知る必要があります。機械について?たとえば、ある人がターゲットです。自分の好きな人をどのようにリーダーに推薦しますか?もちろん、詳細であればあるほど良いです:
まず、その人の名前、性別、年齢、身長、体重、電話番号、自宅の住所などを紹介します。
次に、この人が何ができるか、運転ができるか、英語を話せるか、コンピュータが使えるかなどを紹介しなければなりません。あなたがより多くを紹介する限り、他の人はこの人物についてもっと知るでしょう。これが私たちの人物の説明です。上で述べた人物の説明から、私たちが説明するものはすべて似ていることがわかります。クラスの作成は、定義の観点から 2 つの部分に分かれています。1 つ目は静的記述であり、2 つ目は動的記述です。上で見たように、静的記述
は、人の名前、性別です。 、年齢、身長、体重、電話番号、自宅の住所など。
ダイナミックとは、この人間オブジェクトの機能です。たとえば、この人は車を運転できます、英語を話せます、コンピューターを使用できます、などです。プログラムに抽象化すると、関数とメソッドは同じです。 。したがって、すべてのクラスは属性とメソッドという観点から記述されます。属性はこのクラスのメンバー属性とも呼ばれ、メソッドはこのクラスのメンバー メソッドとも呼ばれます。
クラスの人 {
メンバーの属性: 名前、性別、年齢、身長、体重、電話番号、自宅の住所
メンバーの方法: 車を運転できる、英語を話せる、コンピューターを使用できる
}
属性:
クラス定義のキーワードを使用する「var」は変数の宣言、つまりクラスの属性を作成するために使用されますが、メンバー属性の宣言時に初期値を与えることができますが、クラス宣言時にメンバー属性に初期値を与える必要はありません。たとえば、「Zhang San」という名前を割り当てる場合、このクラス インスタンスを使用して数十人を作成すると、この数十人は Zhang San と呼ばれるようになるため、メンバーの初期値を与えるだけで済みます。インスタンスからオブジェクトが作成された後の属性。
例: var $somevar;
メソッド(メンバー関数):
クラス定義で関数を宣言することで、クラスのメソッドが作成されます。
例: function somefun (パラメータリスト)
{ ... ... }
コードスニペット
<?php class Person{ //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say(){ //这个人可以说话的方法 echo "这个人在说话"; } function run(){ //这个人可以走路的方法 echo "这个人在走路"; } } ?>
class 矩形 { //矩形的属性 矩形的长; 矩形的宽; //矩形的方法 矩形的周长; 矩形的面积; }
コード スニペット
<?php class Rect{ var $kuan; var $gao; function zhouChang(){ 计算矩形的周长; } function mianJi(){ 计算矩形的面积; } } ?>