
クラスの振る舞いを表すJavaの“メソッド”とは?
株式会社ガリレオ
小山博史
2009/5/21
これからプログラミングを学習したい方、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プレーヤーを動作させます。
![]() |
| 図1 CDプレーヤー |
ここで、このプログラムをオブジェクト指向で実現することを考えてみます。オブジェクト指向ではCDプレーヤーに対応するクラスを用意します。つまり、「CDPlayer」クラスを用意することになります。次に、CDPlayerが持つ再生や早送りの機能を何らかの方法で表したいのですが、前回解説した属性では、こういった機能を表現できません。そこで、これらの機能についてもう1度よく考えてみることにします。
「CDプレーヤーを動作させること」は、別のいい方をすれば「CDプレーヤーの使用者はCDプレーヤーのボタンを使ってCDプレーヤーへ指示を出している」ということになります。CDプレーヤーを主体として考えると、「CDプレーヤーは与えられた指示によって振る舞いを変える」ということになります。このことから、これらの機能を表現するためには「クラスの振る舞い」という概念を導入するとよいことが分かります。
![]() |
| 図2 CDプレーヤーへの指示 |
■ どのように振る舞うかを表す「パラメータ」
プログラミング言語Javaでは「クラスの振る舞い」というのはメソッドとして表現されます。「クラスの振る舞い」は1つとは限らないので、それぞれの振る舞いを区別できるようにメソッド名を付けます。何か振る舞い(「動作」と考えてもいいでしょう)をするに当たっては、何かの情報に基付いて行う場合があります。
例えば、「再生をする」という振る舞いにしても、「1番目の曲を再生する」「3番目の曲を再生する」というように曲番を指定したいこともあります。こういう指定ができるように、メソッドは「パラメータ(parameter、 引数)」を渡せるようにすることもできます。
■ 振る舞いの結果を表す「戻り型」
さらに、「振る舞いの結果がどうなったか」という情報を表現できることも必要です。そのため、メソッドの実行結果にはどんな型で表されるデータになるかを指定できます。これを、メソッドの「戻り型」といいます。
例えば、単純な振る舞いを行った結果として考えられる情報としては、振る舞いが「成功したか」「失敗したか」ということがあるでしょう。これを表現するためには、メソッドの戻り型はbooleanとすればよいということになります。
Javaにおけるメソッドの書き方の主な4パターン
ここまでの内容を理解したうえで、メソッドの文法を見てみましょう。パラメータを渡せるようにするためには、「仮パラメータ」を指定します。仮パラメータは「仮パラメータ型」「仮パラメータ名」から構成され、次のようになります。
戻り型 メソッド名(仮パラメータ型 仮パラメータ名) { 処理 }複数のパラメータも指定できます。その場合は「,」を使って、パラメータ間を区切ります。例えば、2つのパラメータを持つメソッドの場合は、次のようになります。
戻り型 メソッド名(仮パラメータ型 仮パラメータ名, 仮パラメータ型 仮パラメータ名) {
処理
}なお、パラメータを必要としないメソッドの場合は、次のようになります。
戻り型 メソッド名() { 処理 }結果を戻す必要がない場合は、「void」という特別な戻り型を使います。従って、次のようなコードになります。パラメータの指定については、上記で説明したことが同様に当てはまりますから、パラメータなしや、複数のパラメータを指定することもできます。
void メソッド名(パラメータ型 パラメータ名) { 処理 }次ページでは、サイコロをJavaプログラムで表現して使ってみましょう。
| Index | ||||||||
|
||||||||
【改訂版】Eclipseではじめるプログラミング バックナンバー 連載インデックスへ»
- 第1回 Eclipse 3.4で超簡単Javaプログラミング基礎入門
- 第2回 Javaで一から理解するプログラムの変数と演算子
- 第3回 プログラミングの醍醐味! Javaで“条件式”を理解する
- 第4回 プログラミングの真骨頂! Javaで“反復処理”を覚える
- 第5回 データ集合を扱うのに便利なJavaの配列と拡張for文
- 第6回 複雑なデータを表現できるクラスやフィールドって?
- 第7回 クラスの振る舞いを表すJavaの“メソッド”とは?
- 第8回 Javaの参照型を文字列操作で理解して文法を総復習
- 第9回 プログラムを「変更」しやすくする“インターフェイス”
- 第10回 Javaの実案件に必須のパッケージとインポートを知る
- 第11回 「static」でクラス共有の変数・メソッドを使いこなせ!
- 第12回 継承やオーバーライドで簡単にクラスを“拡張”しよう
- 第13回 “コンストラクタ”と初期化、本当に理解できてる?
- 第14回 再利用性の高いクラス作成に重要な“アクセス制御”
- 第15回 Javaは「抽象クラス」で実装を上手に再利用できる
- 第16回 “ネスト”した型で始める軽量Javaプログラミング!?
- 第17回 あなたの知らない、4つのマニアックなJava文法
| Java Solution全記事一覧 |
- あなたの知らない、4つのマニアックなJava文法 (2010/7/27)
ネストした型を深く活用するために、staticのネストしたクラス、内部クラス、隠蔽、無名クラス、ローカル内部クラスなどを解説 - 内部統制に効く! ID管理・シングルサインオンの常識 (2010/7/16)
ID管理や認証、シングルサインオンの概要を解説し、Java標準のJAASを紹介し、JBoss SSOでサンプルを作成します - 設計者/SEが覚えておきたいJavaと.NETの違い (2010/7/6)
GUI開発のクライアントサイド技術やユーザー配布技術、RIA、Webアプリ開発のサーバサイド技術、データアクセスについて基本から整理します - 開発者が知っておきたいAndroid 2.2新機能 12連発 (2010/7/1)
先日ソースコードが公開されたFroyoの新機能を紹介します。Flash PlayerやJITコンパイラ、マルチタッチのサポートなど
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報










