1. オブジェクト指向の概念
オブジェクト指向プログラミング (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 (パラメータリスト)
{ ... ... }
コードスニペット
コードをコピー
コードは次のとおりです:
class Person{
/ //以下は人間のメンバー属性ですvar $name; //その人の名前var $sex; //その人の年齢//以下はその人のメンバーメソッドです; (){
// この人の話し方echo 「この人は話している」;
} function run(){
// この人の歩き方
echo 「この人は歩いている」
}
?>
上記はクラスの宣言、属性とメソッドの観点から宣言されたクラスですが、
を宣言するときにメンバーの属性に初期値を与えないことをお勧めします。説明情報であり、将来オブジェクトのインスタンス化で使用されます。たとえば、10 人の個人オブジェクトがインスタンス化された場合、これら 10 人のそれぞれに異なる名前、性別、年齢が割り当てられることになります
したがって、割り当てないことが最善です。ここではメンバー属性に初期値を割り当てていますが、値は各オブジェクトに個別に割り当てられます。
同じメソッドを使用して、属性とメソッドを使用してエンティティを記述できる限り、必要なクラスを作成できます。
それをクラスとして定義し、オブジェクトをインスタンス化します。
クラスの理解を強化するために、形状の範囲をもう少し広げた別のクラスを作成してみましょう。まず、長方形とは何かを考えてみましょう。属性?長方形の機能は何ですか?
コードは次のとおりです四角形の ;
class Rect{
var $kuan;
var $gao;
function zhouChang(){
長方形の周囲を計算する
} function mianJi(){
長方形の面積を計算する;
}
}
?>