オブジェクト指向の詳しい説明の前に、オブジェクト指向を取り入れることの意義について検討してみます。
処理の流れに重点を置いてコーディングを行う構造化プログラムに対し、オブジェクト指向ではオブジェクト(対象物)に関する特徴及び処理を明確にし、その上でコーディングを行うことになります。コーディングの単位をプロシージャ(関数)ではなく、オブジェクト(対象物)にしているところが重要な点です。
オブジェクト(対象物)と言ってもピンとこない方がいると思うので、ここでハッキリとさせておきましょう。オブジェクトとはデータ(変数)やメソッド(関数)を集め寄せたものにすぎません。
このような図を見てしまうと、オブジェクト指向は少し複雑なようにも見えますが、やっていることは構造化プログラミングに制御のための決まりごとを付け、擬似的にオブジェクトとして見なしているのと同じことです。その決まりごとを理解することこそが、オブジェクト指向をマスターするためのツボということになります。
例えば、テキストエディタをオブジェクト指向のプログラムコードで作成するときに、どのような要素をデータとして、処理として、またはオブジェクトとして捉えれば良いのか考えてみます。
テキストエディタに必要なデータというものは、実はここでは存在しません。必要なデータというのは、実は下で述べる集約関係にあるオブジェクトが保持しているのです。といっても、例題ですので、「バージョン情報」でも持たせておきましょう。
続いて、テキストエディタに必要不可欠なメンバ関数を考えてみます。集約関係にあるオブジェクトを初期化または破棄するための「初期化」「終了」というメンバ関数、その他は「新規作成」「開く」「保存」といったところでしょうか。
最後に、テキストエディタか持つオブジェクトについて考えます。テキストエディタはウィンドウアプリケーションとなるので、メインウィンドウは必要不可欠です。ユーザーの入力を受け付けるためのエディットコントロールも必要です。あとは、各処理をユーザーが任意で呼び出せるように、メニューなんかも持たせてみると良いでしょう。
テキストエディタ オブジェクト | |
メンバ変数 | バージョン情報 |
メンバ関数 | 初期化(Initialize) |
終了(Destroy) | |
新規作成 | |
開く | |
保存 | |
保持するオブジェクト ※集約の関係にあります | メインウィンドウ |
メニュー | |
ツールバー | |
エディットコントロール |
保持するオブジェクト、即ち集約とは、メンバ変数としてオブジェクトを持つことを言います。例えば、「自動車」というオブジェクトに対して、「ハンドル」や「タイヤ」などのオブジェクトが集約関係にあると言えます。このように、オブジェクト指向プログラミングを行うと、オブジェクト同士が縦の関係、横の関係を持つようになります。
どうですか?この考え方こそがオブジェクト指向なんです。これらの要素がわかってしまえば、あとは文法に従ってコーディングを行うだけです。
構造化プログラミングで単純テキストエディタを作れる人だったら、それをオブジェクト指向に書き換えることは簡単な作業です。結局の所、実行されるプログラムコードは構造化プログラムでも、オブジェクト指向でも変わらないということですね…。
講座インデックスへ戻る | ©2005 Discoversoft |