これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipse 3.4とJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります
第6回「複雑なデータを表現できるクラスやフィールドって?」では、実際の世界に存在する人や物をクラスとして分類できることを解説しました。これらの分類項目は名前を付けて区別できました。クラスに属する実在の人や物を示す場合は、クラスとは別に「オブジェクト」と呼ぶことや、プログラムでオブジェクトの情報を格納するために作成されるものを「インスタンス」と呼ぶことも説明しました。また、各クラスの性質はクラスの「属性」(フィールド)として表現することも説明しました。
これだけでも、プリミティブ型や配列型を使うよりはるかに簡単にデータをプログラムで扱えるようになりますが、オブジェクト指向では、さらにクラスを特徴付ける「振る舞い」というものがあります。Javaでは「クラスの振る舞い」というのは「メソッド(method、方法)」として表現されます。
今回は「クラスの振る舞い」と「Javaのメソッド」について解説します。EclipseでJavaプログラミングを始める準備がまだの方は、連載第1回の「Eclipse 3.4で超簡単Javaプログラミング基礎入門」で準備しておいてください。
それでは、「クラスの振る舞い」について説明します。例として、CDプレーヤーの機能をオブジェクト指向プログラムで実現することを考えてみましょう。一般的なCDプレーヤーに必要な機能は、「聴きたいCDを挿入できる」「挿入されているCDを再生できる」「早送りができる」「曲のスキップができる」「挿入されているCDを取り出せる」などです。
物理的なCDプレーヤーでは、これらの機能に対応するボタンが用意されています。CDプレーヤーの使用者は、CDプレーヤーのボタンを使って自分の好きなようにCDプレーヤーを動作させます。
ここで、このプログラムをオブジェクト指向で実現することを考えてみます。オブジェクト指向ではCDプレーヤーに対応するクラスを用意します。つまり、「CDPlayer」クラスを用意することになります。次に、CDPlayerが持つ再生や早送りの機能を何らかの方法で表したいのですが、前回解説した属性では、こういった機能を表現できません。そこで、これらの機能についてもう1度よく考えてみることにします。
「CDプレーヤーを動作させること」は、別のいい方をすれば「CDプレーヤーの使用者はCDプレーヤーのボタンを使ってCDプレーヤーへ指示を出している」ということになります。CDプレーヤーを主体として考えると、「CDプレーヤーは与えられた指示によって振る舞いを変える」ということになります。このことから、これらの機能を表現するためには「クラスの振る舞い」という概念を導入するとよいことが分かります。
プログラミング言語Javaでは「クラスの振る舞い」というのはメソッドとして表現されます。「クラスの振る舞い」は1つとは限らないので、それぞれの振る舞いを区別できるようにメソッド名を付けます。何か振る舞い(「動作」と考えてもいいでしょう)をするに当たっては、何かの情報に基付いて行う場合があります。
例えば、「再生をする」という振る舞いにしても、「1番目の曲を再生する」「3番目の曲を再生する」というように曲番を指定したいこともあります。こういう指定ができるように、メソッドは「パラメータ(parameter、 引数)」を渡せるようにすることもできます。
さらに、「振る舞いの結果がどうなったか」という情報を表現できることも必要です。そのため、メソッドの実行結果にはどんな型で表されるデータになるかを指定できます。これを、メソッドの「戻り型」といいます。
例えば、単純な振る舞いを行った結果として考えられる情報としては、振る舞いが「成功したか」「失敗したか」ということがあるでしょう。これを表現するためには、メソッドの戻り型はbooleanとすればよいということになります。
ここまでの内容を理解したうえで、メソッドの文法を見てみましょう。パラメータを渡せるようにするためには、「仮パラメータ」を指定します。仮パラメータは「仮パラメータ型」「仮パラメータ名」から構成され、次のようになります。
戻り型 メソッド名(仮パラメータ型 仮パラメータ名) { 処理 }
複数のパラメータも指定できます。その場合は「,」を使って、パラメータ間を区切ります。例えば、2つのパラメータを持つメソッドの場合は、次のようになります。
戻り型 メソッド名(仮パラメータ型 仮パラメータ名, 仮パラメータ型 仮パラメータ名) { 処理 }
なお、パラメータを必要としないメソッドの場合は、次のようになります。
戻り型 メソッド名() { 処理 }
結果を戻す必要がない場合は、「void」という特別な戻り型を使います。従って、次のようなコードになります。パラメータの指定については、上記で説明したことが同様に当てはまりますから、パラメータなしや、複数のパラメータを指定することもできます。
void メソッド名(パラメータ型 パラメータ名) { 処理 }
次ページでは、サイコロをJavaプログラムで表現して使ってみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.