■カプセル化された内部データと処理内容
もし、プログラムからオブジェクトの内部データを直接書き換えることができたらどうなるでしょうか(実際にそのようなオブジェクトはあり得ます)。
例えば、Textプロパティを使わずに、内部データの1つである「bartext」に直接文字列をセットするような場合です。これをしてしまうと、実際に表示されているウィンドウのタイトルバー文字列と、オブジェクトが保持しているデータの間に不整合が起きてしまいます。(SetTitleメソッドにあったような)実際のウィンドウに対する処理が行われていないためです。
OOPでは、こういったことが起きないように内部データの情報は隠ぺいされており、オブジェクトを操作するための手段は、基本的にそのオブジェクトが外部に公開しているメソッドとプロパティだけに限定されています。
図6では内部データだけが隠ぺいされているようになっていますが、実は、各メソッドやプロパティの内部処理も隠されています。これは、プログラマがオブジェクトの内部状態や、各メソッドがどのような方法で処理を実現しているかなどを知らなくても、オブジェクトを操作できるということです。
このようなオブジェクトによる内部状態や処理内容の隠ぺいは、「カプセル化」と呼ばれます。カプセル化により、内部データの構造やメソッドの内部的な処理方式が変更されたとしても、オブジェクトを操作している側(プログラム)は影響を受けないというメリットがあります。
ここまでで、オブジェクトの構造、オブジェクトを操作するためのプロパティとメソッド、そしてその使い方について解説しました。
途中で出てきたいくつかのコードなどを集めて、ウィンドウを開くまでの一連のコードを記述すると、次のような感じになります。
実際には、これらのコードの前にオブジェクトを生成するためのコードが必要となりますが、これについては次回で「クラス」について説明してから触れることにします。
Copyright© Digital Advantage Corp. All Rights Reserved.