<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>オブジェクト指向PHP &#187; カプセル化</title>
	<atom:link href="http://www.objectphp.jp/category/encapsulation/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.objectphp.jp</link>
	<description>PHP5入門</description>
	<lastBuildDate>Tue, 31 Jan 2012 01:30:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>メソッドの隠蔽</title>
		<link>http://www.objectphp.jp/2007/09/14/method-2/</link>
		<comments>http://www.objectphp.jp/2007/09/14/method-2/#comments</comments>
		<pubDate>Thu, 13 Sep 2007 23:26:32 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[カプセル化]]></category>
		<category><![CDATA[メソッド]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/encapsulation/method-2</guid>
		<description><![CDATA[メソッドの実装を気にする必要が無い]]></description>
			<content:encoded><![CDATA[<p>メソッドの実装を気にする必要が無いのも、隠蔽のメリットと言えるでしょう。</p>
<p><span id="more-65"></span></p>
<p>仮に、クラス内では価格がドルで計算されているとしましょう。個々のインスタンスにはドル建ての価格を与え、ドル円為替レートを掛けることで日本円の価格が計算されます。</p>
<pre>
    private $price;
    static private $rate_usdjpy;
    public function show_price() {
		return $this-&gt;price * $this-&gt;rate_usdjpy ;
	}
</pre>
<p>メソッドを外から呼び出す場合、戻り値として円建て価格を返してくれれば良いのです。クラス内部での価格の実装方法(円orドル)を考慮する必要はありません。ドル建てなら$priceはintでは無くてfloatなのか?といったことも考える必要はありません。(もっともPHPでは型を意識することは少ないですが。)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2007/09/14/method-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>プロパティのアクセス制限</title>
		<link>http://www.objectphp.jp/2007/09/11/private_property/</link>
		<comments>http://www.objectphp.jp/2007/09/11/private_property/#comments</comments>
		<pubDate>Tue, 11 Sep 2007 10:28:40 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[カプセル化]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/%e3%82%ab%e3%83%97%e3%82%bb%e3%83%ab%e5%8c%96/private_property</guid>
		<description><![CDATA[カプセル化することで、クラス設計の想定外のアクセスを防ぐことができます。]]></description>
			<content:encoded><![CDATA[<p>カプセル化することで、クラス設計の想定外のアクセスを防ぐことができます。スクリプト例では以下のように$priceをprivateに設定しています。</p>
<p><span id="more-20"></span></p>
<pre>
    private $price;
    public function show_price() {
		return $this-&gt;price ;
	}
</pre>
<p>$priceをprivateに設定することで、クラス外から直接$priceにアクセスすることはできません。クラス外からはshow_price()を呼び出す必要があります。 show_price()は単に$priceを表示するだけのメソッドですが、このメソッドを定義するのには、ちゃんとした理由があります。</p>
<p>クラス外から$priceにアクセスできると、単に$priceの値を表示するだけでなく、値を変更することも可能になってしまいます。値を好き勝手に変更されると困るので、privateに設定します。表示するだけのメソッドを公開することで、クラス外からは$priceの値を取得できるが、変更できないことになります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2007/09/11/private_property/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>カプセル化とは</title>
		<link>http://www.objectphp.jp/2007/09/07/encapsulation/</link>
		<comments>http://www.objectphp.jp/2007/09/07/encapsulation/#comments</comments>
		<pubDate>Fri, 07 Sep 2007 10:02:58 +0000</pubDate>
		<dc:creator>mizuno</dc:creator>
				<category><![CDATA[カプセル化]]></category>

		<guid isPermaLink="false">http://www.objectphp.jp/%e3%82%ab%e3%83%97%e3%82%bb%e3%83%ab%e5%8c%96/%e3%82%ab%e3%83%97%e3%82%bb%e3%83%ab%e5%8c%96/5</guid>
		<description><![CDATA[クラス内プロパティ・メソッドには外部からのアクセスを制限する設定]]></description>
			<content:encoded><![CDATA[<p>プロパティで解説しましたが、クラス内プロパティ・メソッドには外部からのアクセスを制限する設定ができます。これをカプセル化と呼びます。</p>
<p><span id="more-10"></span></p>
<dl>
<dt>修飾子</dt>
<dd>意味</dd>
<dt>public</dt>
<dd>どこからでもアクセス可能</dd>
<dt>protected</dt>
<dd>同一クラスおよび派生クラスからアクセス可能</dd>
<dt>private</dt>
<dd>同一クラスからのみアクセス可能</dd>
</dl>
<p> 例えば、publicに設定すると、プログラムのどこからでもアクセスできることになります。このため、public に設定されたプロパティやメソッドを変更する場合は、プログラム全体に影響する可能性があり、プログラム全体を調べる必要があります。</p>
<p>一方、privateに設定されているプロパティ・メソッドを変更する場合は、当クラスのみを調べれば良くなります。protectedなら当クラ スおよ びそれを継承する派生クラスのみ調べればOKです。(ただし付随してpublicなプロパティ・メソッドも改変するとプログラム全体に影響を及ぼす可能性 があります。)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.objectphp.jp/2007/09/07/encapsulation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

