オブジェクト指向プログラミングa 第3回 (Javaを学ぶ第2回)


●プログラムの実体はどの部分?「Javaを学ぶ 第2回 (2002年6月 P68)」

 ◆以下のList 1,4,5は,内容的には同じプログラムだが,List 1はプログラムの構造が
  把握しやすいのに対して,List 4, 5はプログラムの構造が把握しにくい。

List 1 "Hello.java" 構造を把握しやすい書き方
public class Hello {
  public static void main( String args[] ) {
    System.out.println( "hello!" );
  }
}

List 4 "Hello.java" 構造を把握しにくい書き方1
public class Hello {public static
void main( String args[] ) {System.out.println( "hello!" );}}

List 5 "Hello.java" 構造を把握しにくい書き方2
public class Hello
{public static void main( String args[] ) { System.out.println ("hello!") ;}}

 ◆List 1, 4, 5に含まれるプログラムの実体を下図に示す。

したがって,List 4, 5はプログラム的には間違っていない。しかし,プログラムには
「構造」があり,それを把握しやすいように書くことが大事である。

以下に,JavaやC言語のプログラムに現れる「構造」の典型的な形を示す。

この様な構造を見やすくするには,List 1のような書き方がよい(下図)。


見やすく書くには,「字下げ(indent)」というテクニックが有効である(下図)。


また,プログラムを書く鉄則に,「対応するカッコは先に書く」というものがある。


慣れないうちは,教科書やプリントのプログラムの構造を把握しやすくするために,蛍光ペンなどで
マーキングすると良い(下図)。プロでも長いプログラムや他人の書いたプログラムを読むときには,
マーキングをする。


プログラムの内容を把握しやすくする手段として,プログラムの中に注釈(コメント)を書く方法がある。


●クラスとは

クラス(class)とは,ある「事物」がどのようなものであるかを,プログラム上で表現したもの。
「事物」には,
  ・属性(データ)
  ・振る舞い(処理)
がある。したがって,これらを組み合わせれば,「事物」を表現できる。
このとき,
  ・属性(データ)は,変数で表現する
  ・振る舞い(処理)は,メソッド(C言語の関数にあたる)で表現する(下図)。
Javaのプログラムは,クラスを単位として構成されている。言い換えれば,
Javaのプログラムはクラスの集合体」なのである。


クラスの定義の仕方を下図に示す。


メソッドは,「事物」の「振る舞い」を表す。C言語の「関数」にあたる。
メソッドが実行されることで,プログラムは動作する。
メソッドの詳細については,後日学習する。ここでは,簡単な紹介だけにとどめる。

つまり,List 1のクラスHelloは,mainという1個のメソッドを持っていることになる。

●Javaの約束事
 Javaのプログラムでは,いくつか約束事がある(下図)。
  ・1個ファイルの中にクラスはいくつでも書けるが,先頭にpublicという指定が付いたクラス(publicクラス)は1個だけしか書けない
    ※publicという指定の意味は,後の回で学習する。
  ・1個ファイルの中に複数のクラス書かれている場合,
    (1)その複数のクラスの中に,public指定されているクラスが(1個だけ)ある場合,
      ファイル名は,1個だけのpublicクラスのクラス名を使って,
        publicクラスの名前.java
      という名前にしなくてはならない(List 1の例では,Hello.java)。
    (2)その複数のクラスの中に,public指定されているクラスが1個も無い場合,
      ファイル名は,いずれかのクラス名を使って,
        クラスの名前.java
      という名前にしなくてはならない。
    class_and_file_name

  ・クラスファイルを実行するときは,そのクラスの
     public static void main( String args[] ) { }
   という形式のmainメソッドが実行される。下図(2)参照。
  ・ ソースファイルをコンパイルすると,その中に書かれた各クラス毎に
     クラス名.class
   という名称のクラスファイルが生成される。下図(3)参照。
   L03Fig14