この連載では,Javaを使って普段の仕事をラクにするツールを作っていきます。第11回では,今まであえて説明してこなかったオブジェクト指向について触れるとともに,連載で作成してきたツールの集大成を作りたいと思います。

こちらからサンプルプログラムをダウンロードできます。

 皆さんこんにちは,kikainekoです。この連載では,日々の定型的な業務をJavaで自動化してラクする方法を紹介しています。

 この連載も,残すところ2回になりました。連載の集大成として,今回と次回で,少し規模の大きなツールを作ってみようと思います。「規模が大きい」といっても,複雑なツールを作るわけではありません。この連載では,単純な家計簿ツールを数多く作成してきました。今までの連載で学んだ知識をフルに活用して,家計簿ツールにさまざまな機能を持たせてみようと思います。

 例えば,以下のような機能を実装してみます。

  • 月ごとの集計結果を表示する
  • 項目(食費や光熱費など)ごとに集計結果を表示する
  • PDFファイルやExcelファイルで表示する

 しかし,ただツールを作るだけでは面白くないですよね。そこで今回は,「オブジェクト指向」を押さえることを試みてみます。この連載では,Javaの使い方を覚えてもらうことを優先させて,あえてオブジェクト指向についてきちんとは説明してきませんでした。この機会に,オブジェクト指向の基礎を押さえてしまいましょう!

 といっても,「いきなり話が難しくなるのでは?」などと,恐れる必要はありません。オブジェクト指向のなかでも,ツールの作成に必要なほんの触りだけを説明していきます。

オブジェクト指向の基礎を押さえる

 はじめにお断りしておくと,「オブジェクト指向とは何?」という問いに対する答えを,一言で表現するのはなかなか難しいものです。例えば,ウィキペディアのオブジェクト指向の説明をみると,

オブジェクト指向(オブジェクトしこう)とは,オブジェクト同士の相互作用としてシステムの振る舞いをとらえる考え方である

と書かれています。これだけでは,よくわかりませんね。

 オブジェクト指向は,プログラムひいては情報システムの分析・設計・実装のための考え方や技法の総称です。非常に広い概念で,プログラミング言語にとどまらず,プログラムで再利用できる汎用的な設計の“定石集”であるデザインパターンや,分析・設計のためのモデリング言語であるUML(Unified Modeling Language)なども,オブジェクト指向の考え方に基づいています。

 プログラミング言語でのオブジェクト指向を見ても,そのアプローチの仕方はそれぞれの言語によって異なります。最初はあまり難しく考えずに,「ふーん,こういう便利なものがあるんやなぁ」くらいに思っておけばいいと思います。

 ここでは,Javaのオブジェクト指向の基礎となる「カプセル化」「継承」「ポリモーフィズム(多態性)」の三つを紹介します(図1)。これらは,オブジェクト指向の三大要素と呼ばれることもあります。実は今までの連載でも,継承などは何度か登場しています。では,順に見ていきましょう!

図1●オブジェクト指向の三大要素
図1●オブジェクト指向の三大要素