Report#5

1.課題(サンプルプログラムの考察)
2.課題(オリジナルプログラム)
3.感想・反省、参考文献
 
1.サンプルプログラムについての考察
オブジェクト指向プログラム

■サンプルプログラム

class CircleC {                                 
    double pai = 3.14;                          
    double circle(int r) {                     
        return pai * r * r;
    }
}
class Demo {                                    
    public static void main(String args[]) {    
        double area;;
        CircleC obj;                            
        obj  = new CircleC();
        area = obj.circle(10);
        System.out.println("area = " + area);
    }
}


■実行結果
    area = 314.0


考察



class CircleC { 
・クラスCircleCを宣言

    double pai = 3.14;
・double型変数paiに3.14(円周率)を代入

    double circle(int r) {
・circleメソッドが引数rを持つことを宣言

        return pai * r * r;
・pai * r * rの値をcircleに返す

class Demo {
・クラスDemoを宣言
    public static void main(String args[]) {

        double area;

        CircleC obj;
・CircleCクラス型の変数を宣言

        obj = new CircleC()
・オブジェクトを作成し、オブジェクトを扱う変数objに代入

        area = obj.circle(10);
・objオブジェクトのcircleメソッドに10の値を返している。
つまり、circleメソッドの引数rに10を代入し、pai * r * rを実行
し、その値をareaに代入している

        System.out.println("area = " + area);
・areaの値を表示

クラス

クラスは上のように変数の宣言(初期値が設定されていることもある)と関数の ような形態の処理プログラムとで構成されている。
クラスの基本構文
 [修飾子]  class  クラス名  [extends  スーパークラス名]
                              [implements  インターフェース名] {
    データ定義部
  メソッド定義部
}
 
修飾子
public : パッケージ外からもこのクラスを参照できるクラス
abstract : 実装されてない抽象クラス
final : スーパークラスとしてサブクラスを作れないクラス

メソッド

メソッドとは、本質的にはプログラムステートメントの集合体であり、Javaの基 本的な実行単位となる。プログラム実行中、メソッドは同じクラスあるいはほか のクラスのメソッドを呼び出すこともある。 メソッドの基本構文
 [修飾子]  メソッドの型  メソッド名([引数]) {
    処理内容
}
 

オブジェクト


オブジェクトとは、状態と動作の両方を定義する記憶領域のことであり、 データとそれを操作するコードの組み合わせである。記憶領域はメモリであるこ ともディスクであることもある。 
オブジェクトの基本構造
オブジェクトの宣言
 クラス名  オブジェクト変数名;
 

オブジェクトの生成
 オブジェクト変数  =  new  クラス名();
 
オブジェクトの宣言と生成をまとめて1行で記述することもできる
 クラス名  オブジェクト変数  =  new  クラス名();
 

■サンプルプログラム
  class ObjSample {
    public static void main(String args[]) {
      Display obj = new Display(); // クラスDisplayのオブジェクトobjの生成
      obj.Disp("Hello Java");      //オブジェクトobjのメソッドDispを呼ぶ
    }
  }
  class Display {                  // クラスDisplayの定義
    void Disp(String message) {    // メソッドDispの定義
      System.out.println(message);
    }
  }

 ■実行結果
  Hello Java
 
■サンプルプログラム
    public class Comp4 {                         // クラスComp4を定義
    int add(int x, int y) {                    // メソッドadd(int x,int
    y)を定義
      return x + y;                            // x + y を返す
    }
    int substract(int x, int y) {              // メソッドsubstractを定
    義
      return x - y;                            // x - y を返す
    }
    int multiply(int x, int y) {               // メソッドmultiplyを定義
      return x * y;                            // x * y を返す
    }
    int divide(int x, int y) {                 // メソッドdivideを定義
      return x / y;                            // x / y を返す
    }
  }
  
  class Keisan {
    public static void main(String args[]) {
      int a, b, wa, sa, seki, sho;
      Comp4 enzan = new Comp4();               // クラスComp4のオブジェ
      クトenzan作成
      a = 20;
      b = 10;
      wa   = enzan.add(a, b);                  // オブジェクトenzanの
      add(a,b)を実行
      sa   = enzan.substract(a, b);            // 同上のsubstract(a,b)を
      実行
      seki = enzan.multiply(a, b);             // 同上のmultiplu(a,b)を
      実行
      sho  = enzan.divide(a, b);               // 同上のdivide(a,b)を実
      行
      System.out.println(a + " + " + b + " = " + wa);
      System.out.println(a + " - " + b + " = " + sa);
      System.out.println(a + " * " + b + " = " + seki);
      System.out.println(a + " / " + b + " = " + sho);
    }
  }
 
■実行結果
  20 + 10 = 30
  20 - 10 = 10
  20 * 10 = 200
  20 / 10 = 2
 

考察

  public class Comp4 {
・クラスComp4を宣言
      int add(int x, int y) {
・int型のx、yを引数にもつaddメソッドを宣言
          return x + y;
・x+yの値を返す
        int substract(int x, int y) { 
・int型のx、yを引数にもつsubstractメソッドを宣言
          return x - y;
・x-yの値を返す
        int multiply(int x, int y) {
・int型のx、yを引数にもつmultiplyメソッドを宣言
          return x * y;
・x*yの値を返す
        int divide(int x, int y) {
・int型のx、yを引数にもつdivideメソッドを宣言
          return x / y;
・x/yの値を返す
  class Keisan {
・クラスKeisanを宣言
          Comp4 enzan = new Comp4();
・クラスComp4のオブジェクトenzanを生成
    a = 20;
          b = 10;
          wa   = enzan.add(a, b);                 
          sa   = enzan.substract(a, b);            
          seki = enzan.multiply(a, b);            
          sho  = enzan.divide(a, b);
 
それぞれのメソッドadd,substract,multiply,divideにa,bの値を渡す

ローカル変数とクラス変数

■サンプルプログラム
    classs Display {
    int n
    void Disp() {
      int i;
      for (i = 1; i <= n; i++)
        System.out.print(I + " ");
    }

  class VarSample {
    public static void main(String args[]) {
      Display obj = new Display();
      obj.n = 10; 
      obj.Disp();
    }
  }
 
■実行結果
    1 2 3 4 5 6 7 8 9 10
 

考察

    classs Display {
・クラスDisplyを宣言
    int n
・int型クラス変数nを宣言
    void Disp() {
・Disp()メソッドの宣言
      int i;
・int型ローカル変数iを宣言
  class VarSample {
・クラスVarSampleを宣言
      Display obj = new Display();
・クラスDisplayのオブジェクトobjを生成
      obj.n = 10;
・オブジェクトobjの変数nに10を代入
      obj.Disp();
・オブジェクトobjのDisp()実行


2.オリジナルプログラム
■オリジナルプログラム

import java.io.*;
import java.util.*;

public class Time2 {

    public static void main(String[] args) throws Exception {

    BufferedReader in = new BufferedReader(new
    InputStreamReader(System.in));

    System.out.println("イギリスとハワイの現在の時刻を出力します。");
    System.out.println("現在の日本の時刻を入力してください。");

    System.out.println("何日?");
    int x = Integer.parseInt(in.readLine());

    System.out.println("何時?");
    int y = Integer.parseInt(in.readLine());

    System.out.println("何分?");
    int z = Integer.parseInt(in.readLine());

    Hawaii obj1 = new Hawaii();
    int hinichi = obj1.HTh( x );

    Hawaii obj2 = new Hawaii();
    int jikan = obj2.HTj( y );


    England obj3 = new England();
    int hinichi2 = obj1.HTh( x );

    England obj4 = new England();
    int jikan2 = obj2.HTj( y );


    System.out.println("ハワイの現在時刻は" + hinichi + "日" + jikan ?
+ "
    時" + z + "分です。");
    System.out.println("イギリスの現在時刻は" + hinichi2 + "日" + jik?
an2
    + "時" + z + "分です。");
    }
}
class Hawaii {
    int hinichi;
    int jikan;
    Hawaii() {
    hinichi = 0;
    jikan = 0;
    }
    static {
    System.out.println("ハワイの現在時刻");
    }
    int HTh (int x) {
    hinichi = (int) ((x - 1) % 31);
    return hinichi;
    }
    int HTj (int y) {
    jikan = (int) ((y + 5) % 24);
    return jikan;
    }
}

class England {
    int hinichi2;
    int jikan2;
    England() {
    hinichi2 = 0;
    jikan2 = 0;
    }
    static {
    System.out.println("イギリスの現在時刻");
    }
    int HTh (int x) {
    hinichi2 = (int) (x);
    return hinichi2;
    }
    int HTj (int y) {
    jikan2 = (int) ((y - 9) % 24);
    return jikan2;
    }
}
■実行結果
イギリスとハワイの現在の時刻を出力します。
現在の日本の時刻を入力してください。
何日?
5
何時?
14
何分?
35
ハワイの現在時刻
イギリスの現在時刻
ハワイの現在時刻は4日19時35分です。
イギリスの現在時刻は5日5時35分です。


考察



public class Time2 {
・クラスTime2を宣言。
BufferedReader in = new BufferedReader(new InputStreamReade?
r(System.in));
 System.out.println("何日?");
 int x = Integer.parseInt(in.readLine());

 System.out.println("何時?");
 int y = Integer.parseInt(in.readLine());

 System.out.println("何分?");
 int z = Integer.parseInt(in.readLine());

Hawaii obj1 = new Hawaii();

int hinichi = obj1.HTh( x );

Hawaii obj2 = new Hawaii();
 int jikan = obj2.HTj( y );


 England obj3 = new England();
 int hinichi2 = obj1.HTh( x );

 England obj4 = new England();
 int jikan2 = obj2.HTj( y );

class Hawaii {
・クラスHawaiiを定義
    Int hinichi;
    int jikan;
・int型クラス変数hinichi、jikanを宣言
    Hawaii() {
・Hawaiiメソッドの定義
Hinichi = 0;
      jikan = 0;
・変数Hinichi、jikanの値をそれぞれ0に初期化
    Int HTh (int x) {
・メソッドHTh (int x)を定義
hinichi = (int) ((x - 1) % 31);
      return hinichi;
・hinichiの演算をしてその値を返す
    int HTj (int y) {
・メソッドHTj (int y)を定義
jikan = (int) ((y + 5) % 24);
      return jikan;
・jikanの演算をしてその値を返す
class England {
・クラスEnglandを定義
    int hinichi2;
    int jikan2;
・int型クラス変数hinichi2、jikan2を宣言
     hinichi2 = 0;
     jikan2 = 0;
・変数hinichi2、jikan2の値をそれぞれ0に初期化
    int HTh (int x) {
・メソッドHTh (int x)を定義
hinichi2 = (int) (x);
      return hinichi2;
・hinichi2の演算をしてその値を返す
    int HTj (int y) {
・メソッドHTj (int y)を定義
jikan2 = (int) ((y - 9) % 24);
      return jikan2;
 ・jikan2の演算をしてその値を返す
 

3.反省・感想、参考文献
反省・感想
 友達に助けてもらいました。勉強しないといけないです。
参考文献
 独習Java 第2版     ジョゼフ・オニール 著
                トップスタジオ 訳
                武藤 健志 監修
 新Java言語入門ビギナー編  林 晴比古 著