キーワードで学ぶオブジェクト指向プログラミング入門

JAVA Developer連載

結城浩

目次

はじめに

こんにちは、結城浩です。 ここは、 月刊誌『JAVA Developer』 の連載記事 『キーワードで学ぶオブジェクト指向プログラミング入門』 のサポートページです。

この連載では、キーワードと具体的なJavaのプログラムを通して、 オブジェクト指向プログラミングについて学んでいきます。

お知らせ

ソフトバンクパブリッシングJAVA Developer編集部によれば、 JAVA Developer誌は、2004年5月からWebマガジンとしてコンテンツの提供を行っていましたが、 2004年10月末で更新を停止し、2005年3月末でサイト自体がなくなることになりました。

それに伴い、残念ながら本連載も第9回までで中断することになりました。

紹介したキーワード

連載の各回について概要を紹介します。

第1回 (2003年11月号) : ファクトリ(Factory) —— 実装クラスを隠してオブジェクトを生成する

ファクトリは英語で「工場」という意味です。 工場は製品を作りますが、ファクトリはオブジェクト(あるクラスのインスタンス)を作ります。 ファクトリという名前がついたクラスは、オブジェクトを作るためのクラスになります。 生成されるインスタンスの本当のクラスを隠し、 生成されるインスタンスの性質をコントロールするために、 ファクトリは非常に重要な役割を持ちます。

第2回 (2003年12月号) : カプセル化(Encapsulation) —— 内部構造を隠して再利用性を高める

カプセル化という用語はいろんな意味合いを持ちますが、 ここでは「オブジェクトの内部状態を直接外部に見せない」という意味で使います。 オブジェクトの内部状態を表しているフィールドを直接外部には見せず、 内部状態を参照したり、変更したりする場合には、必ずアクセサと呼ばれるメソッドを介して行うようにします。 このようにしておけば、 オブジェクトの中身、実装を自由に変更することができるのです。

第3回 (2004年1月号) : 責務(Responsibility) —— そのクラスがなすべきこと

クラスの責務とは「そのクラスがなすべきこと」のことです。 クラスを設計する場合にはそのクラスの責務をよく検討する必要があります。 クラスの責務があいまいなままになっていると、 コーディングやデバッグがしにくくなり、 また機能追加も困難になることが多いものです。 クラスの責務を考える上で注意すべきことを整理します。

第4回 (2004年2月号) : インタフェース(Interface) —— クラスの境界面と役割をはっきりさせる

「メソッドの集まりがクラスの役割を特徴付ける」という観点で、 インタフェースについて紹介し、 インタフェースを使ったプログラミングの意味について考えます。

第5回 (2004年3月号) : 再利用性(Reusability) —— 使いまわすか、作り直すか

再利用性(Reusability)とは、一言で言えば 「一度作ったソフトウェアを、別の場面でも使うことができる」という性質のことです。 コストをかけずにさまざまな場面で利用できるソフトウェアができれば、 それは大きな価値を生みます。高い再利用性を持つソフトウェアをいかにして作るか、 これは、ソフトウェア工学の中心的な課題のひとつと言えるでしょう。

第6回 (2004年4月号) : 継承(Inheritance) —— 小さなフレームワーク

継承(Inheritance)は、オブジェクト指向プログラミングを学ぶときに必ず登場する概念です。 継承の意義と危険性について考えてみましょう。

第7回 (2004年5月号) : 多態性(Polymorphism) —— 型の制約をゆるめる

多態性(polymorphism)というのは、 「1つのオブジェクトがさまざまな型であるかのように振る舞える性質」です。 「多態性」と日本語で呼ぶ場合もありますが、ポリモルフィズムや ポリモーフィズムのように原語の読みを生かして使われることもよくあります。

polymorphismという単語をpoly-morph-ismと分解すると意味がもう少しはっきりします。 多角形のことをpolygonというように、poly-は「多くの」という意味です。 またmorph-というのは「形」という意味です。CGで形を変化させるmorphingという技法をご存知の読者も多いでしょう。 ですからpolymorphismは「多くの形を持つこと」という意味になります。

図形を描くサンプルプログラムを通して多態性について考えます。

第8回 (2004年6月号) : コラボレーション(Collaboration) —— オブジェクト同士の共同作業

コラボレーション(collaboration)というのは、 「オブジェクトとオブジェクトの相互作用」のことですが、 平たくいえば「オブジェクトが協調して動作すること」です。

オブジェクト同士がうまく協調して動作しなければ、 問題解決はスムーズにいきません。 ですから、設計者はオブジェクト同士がどのようにコラボレーションを行っているかに 注意を払う必要があります。

第9回 (2004年7月号) : 状態遷移(State Transition) —— 状態+イベントが次の状態を決める

オブジェクトは状態を持ち、メッセージを受け取って状態遷移を行います。 ですから、設計者は、オブジェクトが取りうる状態をすべて把握し、 オブジェクトがどのような状態遷移を行うかに注意を払う必要があります。 特に、オブジェクトが予想外の状態に落ちてしまうというのはプログラムのバグにほかなりません。

連載予定のキーワード

連載予定のキーワード
10. スレッドセーフティ(thread-safety)
11. ユーザインタフェース(User Interface)
12. トレードオフ(Trade Off)

関連リンク

ぜひ、感想をお送りください

あなたのご意見・感想をお送りください。 あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。

あなたの名前: メール:
学年・職業など: 年齢: 男性女性
(上の情報は、いずれも未記入でかまいません)

お手数ですが、以下の問いに答えてから送信してください(迷惑書き込み防止のため)。
今年は西暦何年ですか?

何かの理由でうまく送れない場合にはメールhyuki dot mail at hyuki dot comあてにお願いします。

更新履歴

豊かな人生のための四つの法則