13.大きなプログラムの作成

  1. ファイル分割
    • 複数のクラスは別々のファイルに記述することができる
      本来は1つのファイルに1つのクラスを宣言するべきである!
      (その際、ソースの主ファイル名はクラス名と同じにすべきで、publicクラスの場合はmust)
      結果として開発を分担することもできる
    • クラス(ファイル)毎にコンパイルできる
      必要なファイルだけコンパイルすればよい!
    • 実行時にクラスローダーが必要なクラスファイル読み込んで実行する
  2. パッケージ(package)
    • クラス(複数)をパッケージに含める手順
      1. 作業ディレクトリ(フォルダ)にパッケージ名と同じ名前のディレクトリ(フォルダ)を作成する
      2. パッケージに含めたいクラスを宣言しているソースファイルに package パッケージ名; と書く
      3. ソースファイルをパッケージディレクトリに保存する
      4. 作業ディレクトリで必要なソースファイルをコンパイルする
        > javac ディレクトリ名\ソースファイル名
        パッケージディレクトリにクラスファイルが生成される
      5. 作業ディレクトリから実行する
        > java パッケージ名.クラス名
    • packageを指定しないソースファイルで定義されたクラスは「名無しパッケージ」に含められる
    • 異なるパッケージのクラスを利用するには
      1. 利用されるクラスの先頭にpublicをつける(パッケージ外からアクセスできるように)
      2. 利用するクラスの中では、利用するクラス名にパッケージ名をつける
        パッケージ名.クラス名
        この正式名称を完全修飾名(完全限定名)という
    > javac pa\C1.java
    > java pa\C1
    • パッケージによって分けられているクラスの名前の集まりは名前空間(namespace)と呼ばれている
    • サブパッケージ(subpackage)を作って階層化できる
      1. 作業ディレクトリ(フォルダ)にサブパッケージ名と同じ名前のサブディレクトリ(サブフォルダ)を作成する
      2. サブパッケージに含めたいクラスを宣言しているソースファイルに package パッケージ名.サブパッケージ名; と書く
      3. ソースファイルをサブパッケージディレクトリに保存する
      4. 作業ディレクトリで必要なソースファイルをコンパイルする
        > javac ディレクトリ名\サブディレクトリ名\ソースファイル名
        サブパッケージディレクトリにクラスファイルが生成される
      5. 作業ディレクトリから実行する
        > java パッケージ名.サブパッケージ名.クラス名
    • クラスライブラリのパッケージ
      パッケージ名含まれるクラス
      java.lang 基本的なクラスSystem, String, Integer, Long, Float, Double, Math,
      java.io入出力関連のクラスBufferedReader, InputStreamReader,
      java.utilユーティリティ関連のクラスScanner, Date, Calendar, ArrayList, LinkedList,
      インポートしなくてもよい!



    > javac pa\sub\C2.java
    > java pa\sub\C2
  3. インポート(import)

     完全修飾名(完全限定名)を使用せずに、異なるパッケージに属するクラスやインターフェイスを簡単に使う方法がある。