ホーム > キーワードで学ぶオブジェクト指向プログラミング入門 | 検索 | 更新情報 |
増補改訂版Java言語で学ぶデザインパターン入門 |
|
こんにちは、結城浩です。 ここは、 月刊誌『JAVA Developer』 の連載記事 『キーワードで学ぶオブジェクト指向プログラミング入門』 のサポートページです。
この連載では、キーワードと具体的なJavaのプログラムを通して、 オブジェクト指向プログラミングについて学んでいきます。
お知らせ
ソフトバンクパブリッシングJAVA Developer編集部によれば、 JAVA Developer誌は、2004年5月からWebマガジンとしてコンテンツの提供を行っていましたが、 2004年10月末で更新を停止し、2005年3月末でサイト自体がなくなることになりました。
それに伴い、残念ながら本連載も第9回までで中断することになりました。
連載の各回について概要を紹介します。
ファクトリは英語で「工場」という意味です。 工場は製品を作りますが、ファクトリはオブジェクト(あるクラスのインスタンス)を作ります。 ファクトリという名前がついたクラスは、オブジェクトを作るためのクラスになります。 生成されるインスタンスの本当のクラスを隠し、 生成されるインスタンスの性質をコントロールするために、 ファクトリは非常に重要な役割を持ちます。
カプセル化という用語はいろんな意味合いを持ちますが、 ここでは「オブジェクトの内部状態を直接外部に見せない」という意味で使います。 オブジェクトの内部状態を表しているフィールドを直接外部には見せず、 内部状態を参照したり、変更したりする場合には、必ずアクセサと呼ばれるメソッドを介して行うようにします。 このようにしておけば、 オブジェクトの中身、実装を自由に変更することができるのです。
クラスの責務とは「そのクラスがなすべきこと」のことです。 クラスを設計する場合にはそのクラスの責務をよく検討する必要があります。 クラスの責務があいまいなままになっていると、 コーディングやデバッグがしにくくなり、 また機能追加も困難になることが多いものです。 クラスの責務を考える上で注意すべきことを整理します。
「メソッドの集まりがクラスの役割を特徴付ける」という観点で、 インタフェースについて紹介し、 インタフェースを使ったプログラミングの意味について考えます。
再利用性(Reusability)とは、一言で言えば 「一度作ったソフトウェアを、別の場面でも使うことができる」という性質のことです。 コストをかけずにさまざまな場面で利用できるソフトウェアができれば、 それは大きな価値を生みます。高い再利用性を持つソフトウェアをいかにして作るか、 これは、ソフトウェア工学の中心的な課題のひとつと言えるでしょう。
継承(Inheritance)は、オブジェクト指向プログラミングを学ぶときに必ず登場する概念です。 継承の意義と危険性について考えてみましょう。
多態性(polymorphism)というのは、 「1つのオブジェクトがさまざまな型であるかのように振る舞える性質」です。 「多態性」と日本語で呼ぶ場合もありますが、ポリモルフィズムや ポリモーフィズムのように原語の読みを生かして使われることもよくあります。
polymorphismという単語をpoly-morph-ismと分解すると意味がもう少しはっきりします。 多角形のことをpolygonというように、poly-は「多くの」という意味です。 またmorph-というのは「形」という意味です。CGで形を変化させるmorphingという技法をご存知の読者も多いでしょう。 ですからpolymorphismは「多くの形を持つこと」という意味になります。
図形を描くサンプルプログラムを通して多態性について考えます。
コラボレーション(collaboration)というのは、 「オブジェクトとオブジェクトの相互作用」のことですが、 平たくいえば「オブジェクトが協調して動作すること」です。
オブジェクト同士がうまく協調して動作しなければ、 問題解決はスムーズにいきません。 ですから、設計者はオブジェクト同士がどのようにコラボレーションを行っているかに 注意を払う必要があります。
オブジェクトは状態を持ち、メッセージを受け取って状態遷移を行います。 ですから、設計者は、オブジェクトが取りうる状態をすべて把握し、 オブジェクトがどのような状態遷移を行うかに注意を払う必要があります。 特に、オブジェクトが予想外の状態に落ちてしまうというのはプログラムのバグにほかなりません。
連載予定のキーワード 10. スレッドセーフティ(thread-safety) 11. ユーザインタフェース(User Interface) 12. トレードオフ(Trade Off)
あなたのご意見・感想をお送りください。 あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。