Java_object_ Encapsulation_0330-java

目次

Java オブジェクト指向 カプセル化

概要

オブジェクト指向のカプセル化について、簡単な事例をまとめます。

カプセル化の目的

重要な変数やメソッドは、他のクラスやメソッドから安易にアクセスされない様に保護する

隠蔽(カプセル)化の方法

・変数とメソッドのアクセス拡張子をprivate にすると
 クラス外部からのアクセスが禁止されます

・引数で変数を受けてクラス内でメソッドを実行します

事例

ヒューマンのクラス
 ・名前を付ける事ができる
 ・歩数を指定すると、歩数分歩く
   例: Human が、3歩あるいた時
		 walk ...(Human) 
 ・足跡の形を変える事ができる

ソースコード

外部からアクセス可能なクラス

// java_object_0310.java
class cHuman {
  public String name = "Human" ;
  public int cWalk = 20 ;
  public String sWalk = "." ;

  public cHuman(String n ) {
      this.name = n;
  }

  public void Walk() { 
      String s = "";
      for(int i = 1; i < this.cWalk; i++ ) {
        s += this.sWalk ;
      }
      System.out.print("Walk\t" ) ;
      System.out.println( s + "(" + this.name + ")" );
    }
}

class subMain {
  public subMain(){
    cHuman h = new cHuman("Human"); 
    h.cWalk = 10 ;
    h.Walk();
  }
}
class Java_object_0310 {
  public static void main ( String[] args ) {
    subMain root = new subMain() ;
  }
}

外部アクセス禁止したクラス

// java_object_0320.java
class cHuman {
  private String name = "Human" ;
  private int cWalk = 20 ;
  private String sWalk = "." ;

  public cHuman(String n ) {
      this.name = n;
  }

  private void Walk() {
      String s = "";
      for(int i = 1; i < this.cWalk; i++ ) {
        s += this.sWalk ;
      }
      System.out.print("Walk\t" ) ;
      System.out.println( s + "(" + this.name + ")" );
    }
}

class subMain {
  public subMain(){
    // List<String> humanList = Arrays.asList("Nao*","Itsu*","Moto*","Re*" ); 
    cHuman h = new cHuman("Human"); 
    h.name = "Nao*" ;
    h.Walk();
  }
}

class Java_object_0320 {
  public static void main ( String[] args ) {
    subMain root = new subMain() ;
  }
}

カプセル化した時のアクセス方法

メソッド内部で、変数やメソッドを呼び出すメソッドを作成します。

  // name を書き換える
  public void setName(String n ) {
      this.name = n;
  }

  // name を読み出す
  public String getName(String n ) {
      return this.name ;
  }
  // Walk を実行する
  public void setWalk(String s , int c){
      this.cWalk = c ;
      this.sWalk = s ;
      this.Walk()  ;
  }

アクセスする為のメソッドを呼び出します

// 呼び出しメソッド
    h.setName("Nao*") ;
    h.setWalk("*" , 15);

全体のソースコード

// java_object_0330.java
class cHuman {
  private String name = "Human" ;
  private int cWalk = 20 ;
  private String sWalk = "." ;
  
  public cHuman(String n ) {
      this.name = n;
  }
  // name を書き換える
  public void setName(String n ) {
      this.name = n;
  }

  // name を読み出す
  public String getName(String n ) {
      return this.name ;
  }
  // Walk を実行する
  public void setWalk(String s , int c){
      this.cWalk = c ;
      this.sWalk = s ;
      this.Walk()  ;
  }
  
  private void Walk() {
      String s = "";
      for(int i = 1; i < this.cWalk; i++ ) {
        s += this.sWalk ;
      }
      System.out.print("Walk\t" ) ;
      System.out.println( s + "(" + this.name + ")" );
    }
}

class subMain {
  public subMain(){
    cHuman h = new cHuman("Human"); 
    h.setName("Nao*") ;
    h.setWalk("*" , 15);
  }
}

class Java_object_0330 {
  public static void main ( String[] args ) {
    subMain root = new subMain() ;
  }
}

		
よかったらシェアしてね!
目次