ホームページ バックエンド開発 PHPチュートリアル オブジェクト指向の特徴 PHPオブジェクト指向入門(1) オブジェクト指向の基礎知識

オブジェクト指向の特徴 PHPオブジェクト指向入門(1) オブジェクト指向の基礎知識

Jul 29, 2016 am 08:40 AM

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(){
長方形の面積を計算する;
}
}
?>


このクラスを使用して複数の長方形オブジェクトを作成する場合、各長方形オブジェクトは独自の長さと幅を持ち、独自の周囲長と面積を計算できます。
クラス宣言は以上です! !
以上、オブジェクト指向の特徴を紹介しました PHP オブジェクト指向ガイド(1) オブジェクト指向の特徴を含めたオブジェクト指向の基礎知識、PHPチュートリアルに興味のある友人の参考になれば幸いです。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

この記事では、Laravel Webフレームワークの通知システムを検討します。 Laravelの通知システムを使用すると、さまざまなチャネルでユーザーに通知を送信できます。今日は、通知ovを送信する方法について説明します

See all articles