Javaプログラミング基礎

演習問題

解答は

に提出しなさい。クラスファイル (〜.class) は提出しなくてよい。 提出には gFTP 等の ftp ソフトを用いること。

問題1

クラスとインスタンスの関係にある身近な例を一つ挙げなさい。 また、そのクラス定義を書きなさい。 クラス定義は厳密なプログラムの形でなくても良い。 最低限、クラス名、属性名、メソッド名、メソッドの内容 (言葉で説明すれば良い) が整理されていれば良い。 解答はファイル ClassDefinition.txt に記述すること。

問題2

円の面積と外周を求めるプログラムを書きなさい。

この問題を「円」というモノに着目すると、 以下のような円オブジェクトを考えることができる。

main メソッドを作成するクラスは PropertyOfCircle とする。 Java では main メソッドのあるクラスの名前と ファイル名 を同じ名前にするという決まりがある。 したがって、このプログラムのファイル名は PropertyOfCircle.java となる。

プログラムの概略は次のようになるはずである。

class PropertyOfCircle {
    public static void main(String[] args) {
        円オブジェクトを生成する ;
        円の半径を設定するメソッドを実行 ;

        System.out.println("Area: " + 円の面積を計算するメソッドの実行 );
        System.out.println("Outline: " + 円の外周を計算するメソッドの実行 );
    }
}

class Circle {
    属性「半径」の宣言

    void setRadius(int r) {
        ......
        半径の属性値を設定する処理
    }

    int area() {
        ......
        半径の属性値を用い、面積を計算する処理
    }

    int outline() {
        ......
        半径の属性値を用い、円周を計算する処理
    }
}

なお、半径は任意に決めて良い。 円周率は 3 とする。各計算は整数で行えば良い。

問題3

成長するサボテンの例題のプログラムを改造し、 成長率の異なる2つのサボテンの成長をみることができるプログラムにしなさい。 main メソッドを作成するクラスは CactusesObservation とする。 (ファイル名 CactusesObservation.java)

問題4

現実世界のペットボトルと同様の動きを プログラムの世界の中で再現しなさい。

現実世界でのペットボトルの性質を考えてみると、 飲料の名前、値段、容量、残量、色、形、重さなどがある。 また、我々がペットボトルに対して行うことができる操作は、 飲む、開ける、閉める、つぶすなどである。

このようにペットボトルに対して分析を行った結果、 今回のプログラムでは次のようなペットボトルをプログラムの中に 書くことにする。

このような動きを実現するクラス PETBottle を作成しなさい。

属性の登録を行うメソッドは、 引数に与えられた情報を自分のクラスの属性に代入するだけのメソッドである。 また、属性の値を調べるメソッドは、 自分のクラスの属性を return 文で返すだけのメソッドになる。

飲むというメソッドをペットボトルから見ると、 飲まれたぶんだけ残量が減少することになる。 何 ml 飲むかを引数で指定するようにする。 これをプログラムとして書くとどうなるか考えること。

main メソッドを作成するクラスは PETBottleDrinker (ファイル名 PETBottleDrinker.java) とすると、 プログラムの大枠は次のようになる。

class PETBottleDrinker {
    public static void main(String[] args) {
        PETBottle gogo = new PETBottle();

        // 名前と容量の登録
        gogo.setName("午後も紅茶");
        gogo.setVolume(500);

        System.out.println(gogo.getName() + " の残量は " +
                           gogo.getVolume() + " です");

        // 100ml 飲む
        gogo.drunk(100);
        System.out.println(gogo.getName() + " の残量は " +
                           gogo.getVolume() + " です");

        // 150ml 飲む
        gogo.drunk(150);
        System.out.println(gogo.getName() + " の残量は " +
                           gogo.getVolume() + " です");

        // 250ml 飲む
        gogo.drunk(250);
        System.out.println(gogo.getName() + " の残量は " +
                           gogo.getVolume() + " です");
    }
}

class PETBottle {

    // クラス PETBottle の定義をここに書く

}