連載
» 2014年05月21日 19時00分 UPDATE

情シスの本棚(7):プログラミングの納得感が高まる「オブジェクト指向超入門」

考え方や仕組みに納得できれば、今よりもプログラミングやモデリングを使いこなすことができる。あらためてオブジェクト指向を学び直してみてはいかがだろう。

[内野宏信,@IT]
本連載「情シスの本棚」のインデックス

連載目次

オブジェクト指向の知識を、あらためて整理してみませんか?

ALT ●著者:河合昭男●技術評論社●ISBN-10:4774164046●ISBN-13:978-4774164045●発売日:2014/4/12

 「『オブジェクト指向は難しい』というのは誤解で、迷信です。オブジェクト指向は人間の自然な考え方に近いものです。普段の日常生活で人は知らずにその考え方を利用しています。確かにオブジェクト指向には様々な専門用語がでてきます。用語に慣れるのに一定の時間と訓練が必要ですが、その本質的な考え方は誰もが持っている自然な考え方です」。「プログラミングに関係ないと思われるかもしれませんが、オブジェクト指向の本質」を理解し、「納得できればJavaもUMLも理解できるようになります」――。

 本書「ゼロからわかるオブジェクト指向超入門」は、Javaプログラミングの基礎を学んだ人に向けて、プログラミング技術、モデリング技術に利用されているオブジェクト指向について、タイトル通り、基礎中の基礎から説いた作品だ。「オブジェクト指向」以前に、「オブジェクトとは何か」「オブジェクトの特徴」「クラスとは」「インスタンスとは」といった具合に、用語レベルまで分解して解説している点が大きな特徴となっている。

 「オブジェクト指向言語」についても、シンプルかつ分かりやすく紹介している。例えば、JavaやC++といったオブジェクト指向言語は、周知の通り「カプセル化」「継承」「多態性」という3つの特徴により、「変更に強い」「再利用しやすい」「拡張しやすい」というメリットを提供する。ソフトウェアは一度完成したら終わりではなく、「不具合修正、機能拡張や仕様変更などの要求が次々と出てくる」もの。それだけに、この「3つの特徴」が大きな意味を持つわけだが、本書の場合、なぜそうしたメリットが得られるのか、仕組みまでひも解いて解説している点がポイントだ。

 例えば「カプセル化」について。C言語などの手続き型言語は、「手続き(プロシージャ)を記述することでプログラミングを」行う。プログラムには「手続き」と「データ」が要素として必要だが、手続き型言語では「手続きを重視し、データ処理は手続きの中で」行う。このため、プログラムが大きく複雑になっていくにつれて、「個々のデータが、どの手続きからどのように使用されるのか」が分かりにくくなってくるという課題がある。

 これに対して、JavaやC++といったオブジェクト指向言語は「データと手続きを一体化した」「クラス」の集まりでプログラムを作成する。また「外部からデータに直接アクセスさせず、手続きを呼び出して(データに)アクセス」させる「カプセル化」を行う。これにより、「個々のデータが、どの手続きからどのように使用されるのか」、プログラムの規模が大きくなるにつれて分かりにくくなるという問題を避けられる点で、変更や拡張に強いというメリットを担保できる、といった具合だ。

 「あるクラスに定義されたデータと手続き」を新たに定義しなくても別のクラスでそのまま再利用できる「継承」や、同じ名前の手続きが異なる振る舞いをする「多態性」についての解説も同様だ。例えば、手続き型言語で「図形の面積を求めるプログラム」を作成しようとすれば、図形が長方形、三角計、楕円形とあった場合、プログラム上では「長方形面積( )」「三角形面積( )」「楕円形面積( )」といった具合に、それぞれ名前の異なる手続きを呼び出す必要がある。

 だがオブジェクト指向言語の場合、多態性の仕組みによって、「xxx面積( )」という手続きを「面積( )」の1つにまとめられる。つまり面積を求める図形の種別が増えたところで、図形種別に応じてプログラムを条件分岐させる必要がない。こうした点が拡張に伴う修正作業の手間削減に有効であり、「ソフトウェアの保守作業の効率化に大きく効いてくる」とシンプルに説いている。

 この他、オブジェクト指向によるモデル表記法である「UML」についても基礎から順を追って解説。まずは本書の前半でこうした“超入門”的な解説を行い、後半で「カプセル化はオブジェクト指向の原点」「継承でクラスを再利用する」「多態性ってどうやるの?」といった章を設け、それぞれより詳しく説く構成としている。オブジェクト指向を学ぶ上で最初の壁となる「クラスとインスタンス」「継承」に特にフォーカスしている他、各章の最後に設けられた「練習問題」によって理解度をチェックできる点もポイントだ。

 “超入門”であるだけに、入門レベルにある人にとって参考になるのはもちろんだが、既にある程度、知識のある人にとっても知識を整理する上で大いに役立つのではないだろうか。何よりプログラミング、モデリングの双方に「視界が開ける」ことで、経営環境の変化に応じて求められる、迅速なシステムの整備、変更、拡張、再利用といったタスクに対し、より効率的に、また納得感をもって当たれるようになるはずだ。オブジェクト指向という言葉に苦手意識を抱いてきた人は、一度手に取ってみてはいかがだろう。

引用箇所の仮名遣いは、紹介書籍の仮名遣いを踏襲しています。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

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

メールマガジン登録

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