プログラムの組み立て方
この節の要点
- 変数などのデータとサブルーチンや関数などの操作がまとまったクラスと呼ばれる構造を組み合わせてプログラムを作成する。
- 操作(Cにおける関数)をメソッドと呼ぶ。
- プログラムを実行した際に最初に呼び出されるメソッド(
mainメソッド )は、public static void main(String[] args)で定義される。- クラスをひとまとまりにしたものをパッケージと呼ぶ。
プログラミングをする、つまりプログラムを組み立てる際には、プログラミング言語の命令の意味を理解するだけではなくて、プログラミング言語で記述されるプログラムの流れ(フロー)を理解する必要があります。
たとえば、Cでは、定数、変数、ポインタなどが持つデータ と、サブルーチンや関数、すなわち具体的な命令が逐次的に記述された処理(操作 )が、それぞれ独立して存在します。 操作はデータを使うことで様々な目的の処理を記述できます。プログラムを組み立てるためには、処理内容を小さな操作に分割して、操作から操作を呼び出していました。
図1にCでHello,Worldを表示するプログラムのソースコードを示します。
#include<stdio.h> // 標準入出力ライブラリの読み込み
int main(void) {
printf("Hello,World.\n"); // printf関数を使ってHello,World.と表示
}
図1のCのプログラムの読み方の説明は省略します。図1のプログラムについて、処理の流れを図示すると、図2になります。

このプログラムでは、図2に示すように、main関数からprintf関数を呼び出して、Hello,World.を表示する処理を組み立てています。つまり、操作単位で処理を組み立てる わけです。
しかし、Javaではクラス と呼ばれる、 データと操作がまとまった構造 を使って、これまでの手続き的な処理の書き方とは異なる、新たな処理の書き下し方をします。
図3にHello,World.の節で作成したJavaのプログラムを再掲載します。図3のプログラムは、図1のCのプログラムと同様で、実行するとコンソールにHello,World.と表示します。処理の流れを説明する前に、このプログラムを使って、Javaプログラムの基本的な書き方を見ていきましょう。
package javaapplication1; // このソースコードが含まれるパッケージ名
public class JavaApplication1 { // JavaApplication1クラスの定義始まり
public static void main(String[] args) {
System.out.println("Hello,World.");
}
} // JavaApplication1クラスの定義終わり
図3を見ると、public class JavaApplication1と呼ばれるブロック(直後の波括弧{から波括弧閉じ}までのソースコードの範囲)があることがわかります。このclassブロックで定義されるプログラム構造をクラス(class) と呼びます。
Javaのプログラムは クラスが少なくとも1つ定義されていなければなりません 。図3のプログラムの場合、JavaApplication1クラスがこの唯一のクラスに該当します。
また、JavaApplication1クラスは、public static void main(String[] args)と呼ばれるCの関数と似たブロックを持ちます。このブロックをmainメソッド と呼びます。
ここで、メソッド とは、プログラムの処理を1まとまりにして名前を付けたものです。この名前を使って処理を呼び出すことができます。現時点ではC言語などの、関数をイメージしてもらえば、それとほぼ同等の意味と捉えてもらって構いません。
mainメソッドはJavaのプログラムを実行した際に最初に実行される処理 になります。
Javaのプログラムは、1つ以上ある クラスのどれかにmainメソッドが1つ定義されていなければなりません 。図3のプログラムの場合、JavaApplication1クラスが持つmainメソッドがこれに該当します。
なお、図3の先頭の命令package javaapplication1;はソースコードが何のパッケージ に含まれているか示しています。ここで、パッケージとは、複数のクラスを分類してまとめることを目的とした名称のことです。1つのフォルダ(パッケージ)の中に複数のファイル(ソースコード)が含まれているイメージです。パッケージを明記することで、パッケージ名を使って定義されたクラスを呼び出すことができます。 基本的に全てのクラスはなんらかのパッケージに含まれなければなりません 。
図3では、JavaApplication1クラスがjavaapplication1パッケージに含まれる、ということを意味します。このクラスを呼び出す際には、javaapplication1.JavaApplication1と、ピリオドでつないで表記します。
これらクラスとメソッドがどのようにHello,World.を表示するか、図4にその流れを示します。

図4を見てもらうと分かるように、JavaApplication1クラスからSystemクラスを呼び出し、Systemクラスのout変数を介して、PrintStreamクラスのprintlnメソッドを呼び出しています。これはつまり、 クラス単位で処理を組み立てている と言えます。
一見すると、クラス単位に処理を分割することで、処理が複雑になってわかりにくくなっているような印象を受けると思います。なぜ、クラス単位に処理を分けることが良いのかは、以降で触れていきます。
繰り返しますが、ここでの要点は、Javaのプログラムはクラス単位で処理を組み立てる ということです。覚えておいてください。