ホームページ作成の小技-BreathTake-

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--------(--) --:-- スポンサー広告 編集 |

JAVA クラスの概要

■オブジェクト指向とは?

※現実の事象をオブジェクト(物)単位で表現
※クラス:オブジェクトの単位
  クラスは、フィールドとメソッドから構成
    フィールド:オブジェクトを構成するデータを表現するもの
    メソッド:オブジェクトの動作(動き)を表現するもの


■Menseki.java
import com.nttdocomo.ui.*;
public class Menseki{ //クラス名
  
  public int x; //フィールド(属性)
  public int y; //フィールド(属性)
  
  public int Sikaku(){//メソッド(動作) int型のデータが戻り値
    int Ans;//メソッド(動作)
    Ans = x * y;//メソッド(動作)
    return Ans;//メソッド(動作)
  }
  
  public int Sankaku(){//メソッド(動作) int型のデータが戻り値
    int Ans;//メソッド(動作)
    Ans =( x * y)/2;//メソッド(動作)
    return Ans;//メソッド(動作)
  }
}


■ClassSample1.java
import com.nttdocomo.ui.*;
public class ClassSample1 extends IApplication {
  
  public void start(){
    
    int Kekka1, Kekka2;
    
    //「Menseki」クラスで使う「Zukei」と言うクラス変数を宣言
    //クラス変数のことをインスタンス名と呼ぶ
    Menseki Zukei;
    
    //クラスのインスタンスを生成
    //インスタンスはメモリ(ヒープ領域)に生成されたクラスの実体
    Zukei = new Menseki();
    //MensekiクラスのインスタンスZukeiに「.」で接続
    //フィールドx,yを指定する事によりフィールドに値を代入できる
    Zukei.x=30;
    Zukei.y=20;
    
    //メソッドの操作
    Kekka1 = Zukei.Sikaku();
    Kekka2 = Zukei.Sankaku();
    
    //結果の出力
    System.out.println("フィールドxの値:"+Integer.toString(Zukei.x));
    System.out.println("フィールドyの値:"+Integer.toString(Zukei.y));
    System.out.println("変数Kekka1の値:"+Integer.toString(Kekka1));
    System.out.println("変数Kekka2の値:"+Integer.toString(Kekka2));
  }
}



■クラスの定義

public class (クラス名) {
  (フィールド)
  (メソッド)
}
※原則として、ソースファイル(拡張子javaのファイル)一つにつき、1クラスの記載しか出来ない
※クラス名とソースファイルの名前が同じでなくてはならない


■メソッドの定義


public class Menseki{ //クラス名
  
  public int x; //フィールド(属性)
  
  public int Sikaku(){//メソッド(動作) int型のデータが戻り値
    int Ans;//メソッド(動作)
    Ans = x * y;//メソッド(動作)
    return Ans;//メソッド(動作)
  }
  
}

public [データ型] [メソッド名](パラメーター){
  処理

private [データ型] [メソッド名](パラメーター){
  処理

(例)
public int Sikaku(){
  int Ans;
  Ans = x * y;
  return Ans;
}

※戻り値を持つ必要が無い場合は、[void]を記述
(例)
public void Sikaku (){
  処理
}
※戻り値が無い場合は、値が返らないので変数に代入することは出来ない。
(単独で実行する)
  //Sikaku()メソッドを実行
  Kekka1 = Zukei. Sikaku ();


■フィールドの定義


public class Menseki{ //クラス名
  
  public int x;//フィールド(属性)
  
  public int Sikaku(){//メソッド(動作) int型のデータが戻り値
    int Ans;//メソッド(動作)
    Ans = x * y;//メソッド(動作)
    return Ans;//メソッド(動作)
  }
  
}

※クラス内でメソッドのブロックの外で宣言されている値(クラスの属性とも呼ぶ)
※[publicもしくは、private][戻り値][フィールド名]
※フィールドに定数を使用する場合は、先頭に「final」を付ける。
(例) public fainal int = 値
※クラスを使う側からフィールドを利用するには、インスタンスを生成したクラス変数とフィールド名を「.」で接続して使用。


■コンストラクタ

※クラス名と同じ名前で、voidも戻り値のデータ型も指定しない特殊なメソッド。
(例) public クラス名(パラメーター){処理}
※クラスのインスタンスを生成を「変数名=new クラス名();」としている。
(例)Keisan = new Sansu();
クラス名の後の()は、何かメソッドを呼び出しているのでは無く、コンストラクタを指定している。
だから、クラスのインスタンスの生成は「変数名=new クラス名();」ではなく、「変数名=new コンストラクタ名();」が正解となる。
※コンストラクタは「必ず最初に実行される」特徴があるので、初期処理を記述するのが一般的。


public class Menseki {
  
  public int x;
  public int y;
  
  //コンストラクタ
  public Menseki (){
    x = 1;
    y = 1;
  }
  
}

引数のあるコンストラクタを呼び出すときは、new演算子で指定するコンストラクタに引数の値を指定。


public class Sansu{
  public int x;
  public int y;
  
  //コンストラクタ
  public Sansu(int sx,int sy){
    x = sx;
    y = sy;
  }
}
(例)呼び出し方
  //コンストラクタ
  //クラスのインスタンスを生成
  Zukei = new Menseki(20,30);



■カプセル化

※カプセル化は「情報の隠蔽」のことを言います。
※i-mode JAVAでカプセル化を行う、アクセス制御の修飾子「public・protected・private」。
※「public」は情報の公開、「private」が情報の隠蔽を行う。
※クラスを定義した側で外部からのデータ利用を制限し、不用意なデータがフィールドに代入されないようにする。
サンプルで使用したMensekiクラスを例にすると、フィールドx・yに値を代入する時は代入用のメソッドを介して行うのが理想。
以下は、Mensekiクラスに情報の隠蔽機能を追加したもの。
フィールドの代入・参照は各メソッド(setX, setY, getX, getY)で行っている。


public class Menseki {
  private int x;
  private int y;
  
  //代入用のメソッド
  public void setX(int sx){
    x=sx;
  }
  public void setY(int sy){
    y=sy;
  }
  //参照用のメソッド
  public int getX(){
    return x;
  }
  public int getY(){
    return y;
  }
}

※「private」で修飾するとそのフィールド・メソッドは外部からアクセスできなくなります。
※フィールドx・yを「private」にして、フィールドを直接操作しようとする命令を記述するとコンパイル時にエラーが発生してコンパイルが出来ないようになります。




スポンサーサイト



管理者にだけ表示を許可する
Top
http://akb48boys.blog39.fc2.com/tb.php/12-728a27c9
copyright © 2011 BreathTake all rights reserved. / Template By innerlife02
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。