カプセル化

カプセル化

カプセル化とは、データを隠蔽し、直接アクセスすることを防ぐことです。

例えば、以下のようにプロパティをpublicにし、そのまま値を取得したとしましょう。


<?php

class Food {
public $name;
}

$food = new Food;

echo $food->name . "は果物で、" . $food->name .
"は甘酸っぱく" . $food->name . "は300円で売っている";



では、クライアントの要望で、食べ物の名前には全て「」をつけて欲しいという仕様変更があったとします。


<?php

echo "「" . $food->name . "」" . "は果物で、" . "「" . $food->name . "」" .
"は甘酸っぱく" . "「" . $food->name . "」" . "は300円で売っている";



このように三箇所全てに「」をつけなければなりません。ではこれを


<?php

class Food {
private $name;

public funciton getName() {
return $this->name;
}
}

echo $food->getName() . "は果物で、" . $food->getName() .
"は甘酸っぱく" . $food->getName() . "は300円で売っている";



と作っておけば


<?php

class Food {
private $name;

public funciton getName() {
return "「" . $this->name . "」";
}
}



のように一箇所だけ変更すれば、一箇所の変更で対応できます。企業向けのアプリケーションでは、数百枚のファイル中の数箇所から一つの変数を参照することが一般的です。こういった場合、仕様変更に対応するのは非常に困難となります。

プロパティ$foodをpublicにしておくと、プログラマが$foodに直接アクセスしてしまう恐れがあるため、仕様変更がおこった場合、直接アクセスした箇所だけ変更が適用されなくなってしまいます。

よって、プロパティは基本的に全てprivate、またはprotectedに設定します。

読み込み用のメソッド名は、

getプロパティ名

書き込み用のメソッド名は

setプロパティ名

とします。

こういった単純なゲット、セットだけをするメソッドをアクセサメソッドといいます。


では、次回は、実践的な使い方について説明します。
| Comment(0)
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。