Javaプログラムの構成
3.1 Javaプログラムの構成
プログラムは、コンピュータに渡す「作業指示書」です。現実の世界にある多くの作業指示書に決まった書式があるように、Javaプログラムの作業指示書にも書式(ルール)があります。
この章では、Javaプログラムの書式の基本的な構成や、ルールを説明していくことにします。
図 3.1.1は、Javaプログラムがどのように構成されているかを大まかに表しています。Javaプログラムは大きく分けて、「パッケージ」、「インポート」、そして「クラス」という3つの記述部分があります。さらに、「クラス」の記述部分の中には、「フィールド」、「コンストラクタ」、「メソッド」という3つの記述が存在します。(プログラムの内容によっては「クラス」や「メソッド」が複数になったり「コンストラクタ」を記述しないなどという場合もあります。)
本章では、これらのJavaプログラムの構成要素の中でも重要な位置づけである、クラス、パッケージ、メソッドについて説明していきます。
図 3.1.1 : Javaプログラム構成図
3.1.1 Javaプログラムの構成要素 – クラス
クラスとは、プログラムを構成するための小さな単位のようなもので、機能や働きを示す設計図のようなものです。Javaではプログラムを作成するときは、必ずこのクラスを活用します。それぞれの機能や働きを持つクラスをたくさん作り、それらのクラスを連携させてJavaは動くようになっています。Javaでプログラムを作成するということは、「クラス」を作成するということと同じ意味であるとも言えます。
具体的にクラスがどこの部分に記述されるのかを確認するために、下記の手順に従ってサンプルプログラムを作成してみましょう。
1. 新規クラスの作成
ファイル > 新規 > クラス
新規のクラスの作成を行ないます。Eclipseを使って進めていきます。これまでは、「Javaファイルを作成する」、という表現を使っていましたが、これからは、「新規クラスを作成する」という表現が多くでてきます。新規のクラスを作成する方法を、ここでしっかりと身につけましょう。
図 3.1.2 : 新規クラスの作成
新規Javaクラスウィンドウが表示されますので、次の項目を記入し、「完了」をクリックします。
① ソース・フォルダー :myproj_intro/src
② パッケージ :jp.co.f1.intro.ch3
③ 名前 :HelloJava
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる
図 3.1.3 : 新規Javaクラス作成
2. 作成されたクラスの確認
正しく作成されていれば、図 3.1.4のようにJavaファイルが開かれます。
図 3.1.4 : 新規クラスの作成確認
3. コーディング
続いて、ソースコードに手を加えていきます。下記のサンプルコードと同じになるように、打ち間違えに注意しながら記述してください。英数字やスペースは全て半角です。
※ 行番号は、わかりやすくするための目印ですので、これらは記述しません。
➢ HelloJava.java
package jp.co.f1.intro.ch3; public class HelloJava { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ System.out.println("Hello Java!"); } }
4. 保存
サンプルコードと同じ記述にできたら、Eclipse画面の左上のフロッピーアイコンをクリックし、保存します。
図 3.1.5 : 保存アイコン
5. ソースコードの確認
ソースコードに、赤い波線や×印が出なければ、それはエラーが無いことを表しています。
図 3.1.6 : エラーの無いソースコード
コンパイルエラーの発生下図では、10行目に赤い波線と×印が表示されているます。
これは「コンパイルエラーが発生している」ことを示していおり、Javaの構文が間違っている箇所がどこかにある場合に起こります。
この表示が出た場合は、ソースコードをよく確認して、間違っているところが無いかどうかを調べましょう。確認後、もう一度保存し、波線と×印が消えればエラーが解消したということです。
図 3.1.7 : コンパイルエラーが発生しているソースコード
6. 実行
HelloJava.javaを右クリック > 実行 > Javaアプリケーション
プログラムを実行します。
図 3.1.8 : プログラムの実行
7. 実行結果の確認
正しく実行できた場合、Eclipseの下部にあるコンソールビューに、「Hello Java!」と表示されます。(図 3.1.9)
図 3.1.9 : コンソールビューへの実行結果表示
では、記述したソースコードのどこの部分がクラスに当たるのかを確認しましょう。
次の図 3.1.10は、クラスの範囲を示しています。
クラスは、「public class クラス名」と記述した後の「 { 」から「 } 」までがその範囲となります。計算や文字列の画面表示、また、それらに必要な数値の記述など、プログラムで行う処理に関するものは全てクラスの中に記述します。
図 3.1.10 : クラスの範囲
3.1.2 Javaプログラムの構成要素 – メソッド
メソッドとは、プログラムに行わせる処理の手順をまとめたものです。プログラムに行わせる処理を、「部品」としてメソッドというものにまとめておくことで、同じ処理の繰り返しが楽になったり、特定の条件で行う処理を定義しておくことができます。
また、Javaプログラムにはmainメソッドという特殊なメソッドがあり、これはJava仮想マシンがプログラムを実行する際に最初に呼び出されるもので、Javaのプログラムは原則として必ずmainメソッドの一文から処理が開始します。
今取り組んでいるHelloJavaプログラムには、2つのメソッドが含まれています。1つ目は、図 3.1.11で表しているmainメソッドで、2つ目は、図 3.1.12で表しているprintlnメソッドです。
図 3.1.11 : mainメソッド
図 3.1.12 : printlnメソッドの呼び出し
それでは、このHelloJavaプログラムの記述を詳しく解説していきます。
このプログラムには、mainメソッドとprintlnメソッドの2つのメソッドが出てきます。
プログラムの実行時に行いたい処理は、mainメソッドの範囲である8行目の「 { 」から11行目の「 } 」までの間に記述します。ここでは、mainメソッドの中にprintlnメソッドの呼び出しが記述されています。printlnメソッドは、設定した文字列を画面に表示させるメソッドです。
プログラムを実行すると、mainメソッドがJVMによって呼び出され、mainメソッド内に記述した処理が実行されます。mainメソッド内の10行目では、文字列を画面に表示させるprintlnメソッドを呼び出しているので、「Hello Java!」という文字列が表示されます。次の図 3.1.13では、プログラムの流れを示しています。
図 3.1.13 : メソッドは呼び出した時だけ実行される
メソッドに関するより詳しい説明は 9 章で行います。現段階では、メソッドは処理の手順をまとめたもので、それを呼び出して利用すること、また、main メソッドがプログラムを実行する際に最初に呼び出される特殊なメソッドであることを理解しておいてください。
3.1.3 Java プログラムの構成要素 – パッケージ文
少しプログラムの規模が大きくなると、別のプログラマの作った色々なクラスを利用する場面がでてきます。
場合によっては、複数のプログラマが作った同じ名前のクラスが、ひとつのプログラムの中で混在してしまうこともあるかもしれません。このとき、Java プログラムでは、パッケージという仕組みを使って、クラス名を区別します。
図 3.1.14 は、パッケージを記述した部分を示しています。
図 3.1.14 : パッケージ文
まず、このパッケージに入っている HelloJava というソースファイルが、どこに格納されているのかを見てみましょう。
Windows エクスプローラーで、下記の場所を開いて下さい。
C:\usr\kis_java_pkg_2023\workspace\myproj_intro
これは、Eclipse で作成したプロジェクトです。
図 3.1.15 の①の「myprow_intro」フォルダをクリックし、フォルダ階層をツリー表示にして下さい。その中に「src」フォルダというソースフォルダがありますので開きます。ここには、ソースコードが格納されています。
さらにたくさんのフォルダがありますので、HelloJava.java が見つかるまで、次々とフォルダを開いて下さい。
「ch3」フォルダまで到達すると、「HelloJava.java」ファイルが見つかります。
図 3.1.15 : HelloJava.java が格納されている場所
図の②の部分が、パッケージ文で示されていたパッケージです。Eclipse 上では省略されて表示されますが、パッケージ名に「 . 」(ドット)を使うと、そこを区切りとしてフォルダが作成され、それは「入れ子構造」になります。こうすることで、名前が重複するのを防いでいます。
図 3.1.16 : Eclipse で見たプロジェクトのパッケージ構造
入れ子構造とは入れ子構造とは、同様の形状の大きさの異なる容器などを順に中に入れたもののことです。
代表的なものとして、ロシアの伝統的な人形であるマトリョーシカがあります。プログラミングの場合は、フォルダの中にフォルダがあり、そのフォルダの中にまたフォルダがあるということを入れ子と表現します。