オブジェクト指向
○オブジェクト指向 (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 <クラス名> { //メンバ変数 [修飾子] <型> <変数名> = 値; //コンストラクタ [アクセス修飾子] <クラス名>([パラメタ]) { インスタンス化処理 } //メソッド [修飾子] <戻り値型> <メソッド名>([メソッド引数]) { コンピュータ制御 } } |
戻り値型 メソッド名(メソッド引数リスト) { 処理 return 戻り値; } |
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 |