連載
» 2004年06月16日 00時00分 公開

連載 オブジェクト指向プログラミング超入門:第1回 オブジェクトの正体 (3/3)

[遠藤孝信,デジタルアドバンテージ]
前のページへ 1|2|3       

■カプセル化された内部データと処理内容

 もし、プログラムからオブジェクトの内部データを直接書き換えることができたらどうなるでしょうか(実際にそのようなオブジェクトはあり得ます)。

 例えば、Textプロパティを使わずに、内部データの1つである「bartext」に直接文字列をセットするような場合です。これをしてしまうと、実際に表示されているウィンドウのタイトルバー文字列と、オブジェクトが保持しているデータの間に不整合が起きてしまいます。(SetTitleメソッドにあったような)実際のウィンドウに対する処理が行われていないためです。

 OOPでは、こういったことが起きないように内部データの情報は隠ぺいされており、オブジェクトを操作するための手段は、基本的にそのオブジェクトが外部に公開しているメソッドとプロパティだけに限定されています。

図6 隠ぺいされている内部データ
オブジェクトを操作するための手段は、基本的にそのオブジェクトが外部に公開しているメソッドとプロパティだけに限定される。

 図6では内部データだけが隠ぺいされているようになっていますが、実は、各メソッドやプロパティの内部処理も隠されています。これは、プログラマがオブジェクトの内部状態や、各メソッドがどのような方法で処理を実現しているかなどを知らなくても、オブジェクトを操作できるということです。

 このようなオブジェクトによる内部状態や処理内容の隠ぺいは、「カプセル化」と呼ばれます。カプセル化により、内部データの構造やメソッドの内部的な処理方式が変更されたとしても、オブジェクトを操作している側(プログラム)は影響を受けないというメリットがあります。

今回のまとめ

 ここまでで、オブジェクトの構造、オブジェクトを操作するためのプロパティとメソッド、そしてその使い方について解説しました。

 途中で出てきたいくつかのコードなどを集めて、ウィンドウを開くまでの一連のコードを記述すると、次のような感じになります。

 実際には、これらのコードの前にオブジェクトを生成するためのコードが必要となりますが、これについては次回で「クラス」について説明してから触れることにします。

「連載 オブジェクト指向プログラミング超入門 ― .NETでオブジェクト指向プログラミングを始めよう ― 」のインデックス

連載 オブジェクト指向プログラミング超入門 ― .NETでオブジェクト指向プログラミングを始めよう ― 

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。