【オブジェクト指向プログラム】

オブジェクト指向

○オブジェクト指向 (oo: object oriented) とは、現実世界での作業の考え方をソフトウェア上で実現する 設計思想のこと。 ○オブジェクト指向では、オブジェクトというモノどうしが会話をして、これに基づいて各々が振舞うこと で作業が進む。 ○オブジェクト指向では、プログラムは、データと振る舞いを一つにまとめたクラスの集合と考えて設計する。 処理は、クラスから生成したオブジェクトたちが会話をすることで実現する。 ○オブジェクト指向のプログラムでは、処理とデータを一つにしたオブジェクトを扱う。 ○オブジェクトは、他のオブジェクトとメッセージを交換することで振舞う。 ○オブジェクト指向コンパイラは、データと処理を組み合わせてオブジェクトを生成するコードを生成する。 ○実行環境はオブジェクトを生成し、オブジェクト間のメッセージの交換によってプログラムは動作する。

<例のプログラム>

class CircleC {                                 // クラスCircleCを定義。
    double pai = 3.14;                          // データ
    double circle(int r) {                      // メソッドを定義する。
        return pai * r * r;
    }
}
class Demo {                                    // クラスDemoを定義。
    public static void main(String args[]) {    
        double area;;
        CircleC obj;                            //クラスCircleCのオブジェクト変数objを宣言
        obj  = new CircleC();                   //クラスCircleCのオブジェクトobj作成
        area = obj.circle(10);                  //obj→オブジェクト、circle→メソッド、(10)→引数
        System.out.println("area = " + area);
    }
}

<実行結果>

[nw0364:~/sites/java/Repo_4] j03064% javac CircleC.java
[nw0364:~/sites/java/Repo_4] j03064% java Demo
area = 314.0

クラス

・クラスは、データとメソッド(動作・機能)を定義したもので、オブジェクト の雛形となる。 ・オブジェクトは別のオブジェクトによってクラスから作られる。 ・クラスはオブジェクトの設計図のようなものであり、プログラマは専らクラ スをコーディングする。 ・この設計図(クラス)からは任意の個数のオブジェクトを作ることが出来る。

●典型的なクラスは次のような構成をしている。
[修飾子] class <クラス名> {
	//メンバ変数
	[修飾子] <型> <変数名> = 値;

	    //コンストラクタ
	    [アクセス修飾子] <クラス名>([パラメタ]) {
	      インスタンス化処理
	      }

	      //メソッド
	      [修飾子] <戻り値型> <メソッド名>([メソッド引数]) {
		  コンピュータ制御
		  }
}

メソッド

メソッドは、メンバー変数(フィールド、属性)と並んでクラスのメンバーとして数えられる要素の代表格。 メソッドには、そのクラスをインスタンス化して作ったオブジェクトの機能を記述する。 *入力、処理、出力 (Input/Process/Output) を記述する。 多くの場合は、当該オブジェクトのデータであるメンバー変数に対する処理になる。 ●メソッドの入力と出力は、メソッド引数と戻り値と呼ばれる。 ☆メソッドの本質は、入力(メソッド引数)、出力(戻り値)、処理の三つ。
戻り値型 メソッド名(メソッド引数リスト) {
処理
return 戻り値;
}

オブジェクト

オブジェクト (object) とは、操作する「対象」のこと。 更に詳しく言うなら、データとそれを処理する方法(メソッド)を一つのカプセルにしたもの。

<例のプログラム>

public class comp {                         // クラスcompを定義
    int add(int x, int y) {                    // メソッドadd(intx,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;           //変数宣言。
        comp enzan = new comp();               // クラスcompのオブジェクト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);
    }
}

<実行結果>

[nw0364:~/sites/java/Repo_4] j03064% javac comp.java
[nw0364:~/sites/java/Repo_4] j03064% java Keisan
20 + 10 = 30
20 - 10 = 10
20 * 10 = 200
20 / 10 = 2

☆戻る