■Report5

■課題

 ●講義資料オブジェクト指向プログラムJavaIの中のサンプルプログラムについて考察せよ。

■サンプルプログラム

◎ クラスとオブジェクト

  

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について
   変数paiを宣言し、3.14を代入。変数circle(int r)を宣言。pai * r * r を実行する。
 class Demoについて double型の変数areaを宣言。
   クラスCircleCから新しいオブジェクトojb生成する。オブジェクト指向。
   オブジェクトobj中のメソッドcircleを使用する。obj.circle(10)で10をCircleCに送る。
   CircleCに送られた10はrに代入され、計算されてreturnされた値はareaに代入される。
   メソッドprintlnでareaの値が表示される。

 

◎オブジェクト

  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

*考察*

	最初のサンプルプログラムと違うのは、mainメソッドを最初で宣言したところ。
	これはjavaがオブジェクト指向だから、定義される順番は関係しないということ。
	
	下のクラスDisplayでメソッドDispを宣言し、上のクラスObjSampleで使用。

◎四則演算

  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

*考察*

	クラスComp4で、メソッドadd,substract,multiply,divideを定義。
クラスKeisanで、まずは変数a,b,wa,sa,seki,shoを宣言。 宣言した変数に値,式を代入。 printlnで表示。 ""でくくられた文字は文字列としてそのまま出力。 ++は文字列連結演算子で、変数と文字列を連結している。

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

  class Display {                              // 訂正 classs → class 
    int n;                                     // 訂正「;」を付け加えた クラス変数
    void Disp() {
      int i;                                   // ローカル変数
      for (i = 1; i <= n; i++)
        System.out.print(i + " ");             // 訂正 I → i
    }
  }                      // 訂正「}」を付け加えた

  class VarSample {
    public static void main(String args[]) {
      Display obj = new Display();             // クラスDisplayのオブジェクトobj生成
      obj.n = 10;                              // オブジェクトobjの変数nに10を代入
      obj.Disp();                              // オブジェクトobjのDisp()実行
    }
  }


※実行結果
  
 1 2 3 4 5 6 7 8 9 10

*考察*

	まず、クラスDisplayでクラス変数の"n"ローカル変数"i"を宣言。
	
	(クラス変数とローカル変数の違いは、メソッド「 void Disp(){ 」の中と外の違いである.)
	
	for文で、iがnになるまで出力する。

	obj.n = 10; で、クラスDisplayのオプジェクトobjの変数nに10を代入。
	つまり、iが10になるまで繰り返す。

	最後にオプジェクトobjのDisp()を実行

■オリジナルプログラム

public class repo5_1{                     // クラスRepo5_1を定義
public static void main(String[] args) {
repo5_2 keisan = new repo5_2(); // オブジェクトkeisanを作る
double area,ans1,h,r; // 変数area,ans1,h,rを宣言
keisan.j = 3.14; // 円周率3.14 = jとする
r = 5; // 円の半径をいれる
h = 10; // 円柱の高さをいれる
area = keisan.circle(r); // オブジェクトkeisanのメソッドで円の面積をもとめる
ans1 = keisan.Enchuu(h,area); // オブジェクトkeisanのメソッドで円柱の体積をもとめる
keisan.Display(ans1); // オブジェクトkeisanのメソッドで結果を出力させる
}
}
class repo5_2 { // クラスRepo5_2を定義
double j; // ローカル変数jを宣言
double circle(double r) {
return r * r * j; // 底面積を計算(半径×半径×円周率)
}
double Enchuu(double x, double y) {
double a; // ローカル変数aを宣言
a = x * y; // 底面積×高さで円柱の体積を求める
return a;
}
void Display(double x){
System.out.println("円柱の体積 = " + x); // "円柱の体積 =" をprintlnで出力
}
}
*実行結果 円柱の体積 = 785.0

■感想・反省

  サンプルが非常に多かったです。結構、時間を取られました。

  その分、しっかりと理解し、使いこなせるように努力したつもりです!!