ホームページ php教程 php手册 PHP オブジェクト指向ガイド (5) カプセル化

PHP オブジェクト指向ガイド (5) カプセル化

Jun 13, 2016 pm 12:21 PM
php 完全な戦略 そして 物体 カプセル化 属性 はい 特性 プログラミング のために

9. カプセル化
カプセル化は、オブジェクト指向プログラミングの 3 つの主要な特徴の 1 つであり、オブジェクトのプロパティとサービスを
の独立した同一のユニットに結合することです。オブジェクトの内部詳細を隠すことには 2 つの意味があります。 1. オブジェクトのすべての属性とすべてのサービスを結合して、分割できない独立した単位 (つまり、オブジェクト) を形成する。 2. 情報の隠蔽。つまり、オブジェクトの内部の詳細を可能な限り隠し、外界との境界を形成し(または障壁を形成し)、外界と接続するための限られた外部インターフェイスのみを保持します。ソフトウェアにおける
カプセル化の原理の反映は、オブジェクト以外の部分がオブジェクトの内部データ
(属性) に自由にアクセスできないことを要求し、それによって外部データの「相互感染」を効果的に回避します。エラーとその原因 ソフトウェア エラーを特定できるため、トラブルシューティングやトラブルシューティングの困難さが大幅に軽減されます。
例を使用して、ある人のオブジェクトに年齢や給与などの属性があるとします。そのような個人のプライバシー属性
は、カプセル化を使用しない場合、他の人が取得できるようになります。彼らは知りたいと思っていますが、
それをカプセル化すると、あなたがそれを伝えない限り、他の人はカプセル化された属性を取得する方法がありません
別の例として。 、すべてのパソコンにはパスワードがあります。他人に自由にログインさせたくない場合は、パスワードをコピーして
コンピュータに貼り付けてください。また、人間などの物体の場合、身長や年齢などの属性は自分自身でのみ増加させることができ、他人が任意に割り当てることはできません。
private キーワードを使用してプロパティとメソッドをカプセル化します。
元のメンバー:
var $name; //宣言者の名前
var $sex; //宣言者の性別
var $age; //その人の年齢を宣言します
function run(){… … .}
カプセル化された形式に変更します:
private $name //その人の名前には private キーワードを使用します Encapsulateprivate $sex; //プライベート キーワードを使用して個人の性別をカプセル化します
private $age //プライベート キーワードを使用して個人の年齢をカプセル化します
private function run(){… … } //プライベート キーワードを使用します人の歩行方法をカプセル化する
注: メンバー属性の前に他のキーワードがある限り、元のキーワード「var」を削除する必要があります。
プライベートを通じて人間のメンバー (メンバーのプロパティとメンバーのメソッド) をカプセル化できます。パッケージ内のメンバーにはクラスの外部から
直接アクセスできません。次のコードではエラーが生成されます。
コード スニペット



コードをコピーします

コードは次のとおりです。

class Person{ //以下は person のメンバー属性ですprivate $name;その人の名前は、privateprivate $sex でカプセル化されます。 //その人の性別、privateprivate $age でカプセル化されます。 //その人の年齢、private

でカプセル化されます。//この人ができる方法speech

function Say(){
echo "私の名前は: ".$this->name." 性別: ".$this->性別" 私の年齢: ".$this-> ;age. "
";
}
//この人が歩くことができるメソッドはプライベートにカプセル化されます
private function run(){
echo "この人は歩いています";
}
}
//人のインスタンス オブジェクトをインスタンス化します
$p1=new Person();
//プライベート属性に値を割り当てようとすると、エラーが発生します
$ p1->name="張三";
$p1->sex="男性";
$p1->age=20>//プライベート属性を出力しようとしています、結果 エラーが発生します
echo $p1->name.”
”;
echo $p1->sex.”
echo $p1->”; ;age. "
"
//プライベートメンバーメソッドを出力しようとするとエラーが発生します


は:
致命的なエラー: プライベート プロパティにアクセスできません Person::$name
致命的なエラー: プライベート プロパティ Person::$sex にアクセスできません
致命的なエラー: プライベート プロパティ Person::$age にアクセスできません
致命的エラー: プライベート プロパティ Person::$name にアクセスできません
致命的エラー: コンテキスト '' からプライベート メソッド Person::run() を呼び出します
上記の例からわかるように、プライベート メンバーには外部からアクセスできませんプライベートメンバーはこのオブジェクト
内でのみアクセスできるため、たとえば、$p1 オブジェクトがプライベート属性を共有したい場合は、say() メソッドでプライベート属性にアクセスします。 (アクセス制御は追加されません。デフォルトはパブリックで、どこからでもアクセスできます。)

コード スニペット



コードをコピー

コードは次のとおりです。


//この人は話すことができ、自分のプライベート属性を話すことができ、ここからプライベート メソッドにアクセスすることもできます
function Say(){
echo "My name is : ".$ this->name." 性別: ".$this->sex." 私の年齢: ".$this->age."
"
//プライベート メソッドでは次のこともできます。ここからアクセスします

//$this->run() }
メンバー メソッドsay() は public であるため、上記の
コードを変更します。

コードをコピーします コードは次のとおりです。

class Person{
//以下は person のメンバー属性です
private $name;個人の名前、private
private $sex でカプセル化 //個人の性別は private
private $age でカプセル化 //個人の年齢は private
でカプセル化されます。コンストラクター パラメーターはプライベート属性名 $name、性別 $sex、年齢 $age に割り当てられます。
function __construct($name, $sex, $age){
//コンストラクターを通じて渡される $nameメソッドはプライベート メンバーに割り当てられます。属性 $this->name には初期値が割り当てられます。
$this->name=$name
//構築メソッドを通じて渡された $sex には、プライベート メンバー属性の初期値 $this->sex Value
$this->sex=$sex;
//コンストラクターを通じて渡された $age は、プライベート メンバー プロパティに初期値が割り当てられます。 $this->age
$this->age =$age;
}
//この人の話し方、個人的なプロパティの話し方、ここからプライベート メソッドにアクセスすることもできます。 🎜>function Say(){
echo "私の名前 名前: ".$this->name." 性別: ".$this->性別" 私の年齢: ".$this->age ."
";
}
}
//構築メソッドを通じて 3 つのオブジェクト $p1、p2、$p3 を作成し、3 つの異なる実際のパラメーターを渡します: 名前、性別、年齢
$p1=新しい人("張三","男性", 20);
$p2=新しい人("李思","女性", 30); "王五","男", 40) ;
//以下は $p1 オブジェクトの発話メソッドにアクセスします
$p1->say();
//以下は発話メソッドにアクセスします$p2 オブジェクトのメソッド
$p2->say ();
//以下は $p3 オブジェクトの発話メソッドにアクセスします
$p3->say(); 🎜>
出力結果は次のとおりです。
私の名前は: Zhang San 性別: 男性 私の年齢: 20
私の名前は: Li Si 性別: 女性 私の年齢: 30
私の名前は: Wang Wu 性別: 男性 私の年齢: 40 歳

コンストラクターはデフォルトの public メソッド (コンストラクターを private に設定しないでください) であるため、クラス外からアクセスできるため、コンストラクターを使用して作成することができますさらに、コンストラクターはクラス内の関数でもあるため、構築メソッドを使用してプライベート プロパティに初期値を割り当てることができます。 Say() メソッドはデフォルトでパブリックであるため、外部からアクセスすることもでき、
独自のプライベート属性を呼び出します。
上記の例から、プライベート メンバーはクラス内でのみ使用でき、クラス外から直接アクセスすることはできません
が、クラス内ではアクセスできるため、場合によっては値を割り当てる必要があることがわかります。プライベート プロパティにアクセスし、クラスの外でそれらを読み出します
。つまり、クラスの外にアクセス可能なインターフェイスを提供します。上記の例では、構築メソッドは代入
の形式ですが、構築メソッドのみです。オブジェクトの作成時に値を割り当てます。すでに既存のオブジェクトがあり、この既存のオブジェクトに値を割り当てたい場合、この時点でコンストラクター メソッドも使用して値を渡すと、
新しいオブジェクトが作成されます。 、これは既存のオブジェクトではありません。したがって、外部からアクセスできるプライベート属性用のいくつかの
インターフェイスを作成する必要があります。目的は、オブジェクトが存在するときに属性の値を変更してアクセスすることです。ただし、必要なのは外部
のみであることに注意してください。これは、変更されたプロパティに対してのみ行われ、外部からアクセスされないプロパティにはこのようなインターフェイスはありません。これにより、すべての機能が完了します。オブジェクト自体は、外部の世界にできるだけ少ない操作を提供します。
クラスの外にインターフェイスを提供する場合、クラスの外にプライベート プロパティの設定メソッドと取得メソッドを提供して、プライベート
プロパティを操作できます。たとえば、
コード スニペット


コードをコピー

コードは次のとおりです:


private $age; //プライベート属性 age
function setAge($age) {
/ /外部提供 年齢を設定するためのパブリックメソッド

if($age<0 || $age>130) //属性に値を代入する際、不正な値が属性に設定されることを避けるためreturn; $this-> ;age=$age; } function getAge(){ // 年齢を外部から取得するための public メソッドを提供します

return($this-> age);

}


上記のメソッドは、メンバー属性の値を設定および取得するものです。もちろん、各属性に同じメソッドを使用して
を割り当てることもできます。値を取得してクラス外へのアクセスを完了します。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

コーディングの鍵: 初心者のための Python の力を解き放つ コーディングの鍵: 初心者のための Python の力を解き放つ Oct 11, 2024 pm 12:17 PM

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Oct 11, 2024 pm 08:58 PM

Python は、問題解決の初心者に力を与えます。ユーザーフレンドリーな構文、広範なライブラリ、変数、条件文、ループによる効率的なコード開発などの機能を備えています。データの管理からプログラム フローの制御、反復的なタスクの実行まで、Python が提供します

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

C の謎を解く: 新人プログラマーのための明確でシンプルな道 C の謎を解く: 新人プログラマーのための明確でシンプルな道 Oct 11, 2024 pm 10:47 PM

C は、初心者がシステム プログラミングを学習するのに最適な選択肢です。ヘッダー ファイル、関数、メイン関数のコンポーネントが含まれています。 「HelloWorld」を印刷できる単純な C プログラムには、標準入出力関数宣言を含むヘッダー ファイルが必要で、main 関数で printf 関数を使用して印刷します。 C プログラムは、GCC コンパイラーを使用してコンパイルして実行できます。基本をマスターしたら、データ型、関数、配列、ファイル処理などのトピックに進み、熟練した C プログラマーになることができます。

See all articles