オブジェクト向け:アクセス制御、final、static

3565 ワード

アクセス制御:
アクセス制御は、システム内のすべての機能を識別し、組織し、管理し、すべてのデータを組織して管理し、簡単な唯一のインタフェースを提供する方法であり、このインタフェースの一端はアプリケーションシステムの一端が権限エンジンである.
機能:
1)不正なエージェントが保護されたネットワークリソースに侵入することを防止する.2)正当なユーザーが保護されたネットワークリソースにアクセスできるようにする.3)合法的なユーザーが保護されたネットワーク資源への不正アクセスを防止する.
自主アクセス制御:
自主アクセス制御、ユーザーが作成したアクセス・オブジェクト(ファイル、データテーブルなど)にアクセスする権限を持ち、これらのオブジェクトに対するアクセス権を他のユーザーに付与したり、権限を付与したユーザーからアクセス権を回収したりすることができることを意味します.自主アクセス制御は、主体のアイデンティティと権限に基づいてアクセス・モードを決定する最も一般的なアクセス制御手段です.
強制アクセス制御:
強制アクセス制御とは、ユーザーが作成したオブジェクトに対してシステムによって統一された強制制御を行い、どのユーザーがどのオブジェクトに対してどのオペレーティングシステムタイプのアクセスを行うことができるかを規定されたルールに従って決定し、作成者ユーザーであっても、オブジェクトを作成した後、そのオブジェクトにアクセスする権限がない場合があります.
オブジェクトベースのアクセス制御:
オブジェクトベースのアクセス制御(OBAC Model:Object-based Access Control Model):DACまたはMACモデルの主なタスクは、システム内のアクセスマスターと管理対象オブジェクトの1次元権限管理です.
タスクベースのアクセス制御モデル:
タスクベースのアクセス制御モデル(TBAC Model,Task-based Access Control Model)は、アプリケーションとエンタープライズ層の観点からセキュリティ問題を解決し、タスク(アクティビティ)の観点からセキュリティモデルを構築し、セキュリティメカニズムを実現し、タスク処理中に動的でリアルタイムのセキュリティ管理を提供する.
ロールベースのアクセス制御モデル:
ロールベースのアクセス制御モデル(RBAC Model,Role-based Access Model)では、RBACモデルの基本思想は、アクセス許可権を一定のロールに割り当て、ユーザーが異なるロールを演じることでロールが持つアクセス許可権を得ることである.
finalキーワード:
1)finalメンバー変数
JAvaはfinal修飾のメンバー変数をプログラマが初期値を明示的に指定しなければならないことを規定する.
静的初期化ブロックの初期化値:
 final static   int a ;
    static {
        // System.out.println("      "+ a);              
         a=18;
         System.out.println("      "+ a);
    }

2)final修飾局所変数と形式パラメータ
 public class FinalLocalVariableTest {  
    public void test(final  int a){
//   final           
//        a++;
   }
  
    public static void main(String[] args) {
        final  String str;
        str="aaaaa";
//final                   
        System.out.println(str);
//      
//        str="bbbb";
       System.out.println(str);
   }
}

3)final修飾参照タイプ変数
finalが基本タイプ変数を修飾する場合、基本タイプ変数を新しい値から割り当てることはできませんので、基本タイプ変数は変更できません.
finalが参照タイプ変数を修飾する場合、保存されるのは1つの参照だけで、この参照タイプ変数が参照するアドレスは変更されず、オブジェクトの内容は変更できます.
 public class FinalReferenceTest {
   public static void main(String[] args) {
        //        
        final  int [] arr ={4,3,2,1};
        System.out.println(Arrays.toString(arr));
        //          
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        //         
        arr[2]=100;
        System.out.println(Arrays.toString(arr));
        //arr=null;       
    }
 }

4)final修飾の方法はリロードできない
 public class FinalMethodFather {
    public final void test(){  
    }
  }
 class  FinalMethodSon extends  FinalMethodFather{
    //public  void  test()
 }

5)final修飾のクラスは継承できない
staticキーワード:
staticキーワードは変数、メソッドを修飾するために使用できます.
static修飾メンバー変数:
1)static修飾メンバー変数がオブジェクトに属さないデータ構造;2)static修飾のメンバー変数はクラスの範疇に属し、クラス名を直接使用して変数を参照することができる.3)static修飾のメンバー変数とクラスの情報はメソッド領域に格納され、クラスがどれだけのオブジェクトを作成しても、1つのクラスのstatic修飾のメンバー変数は1部しかありません.
public class Person {
  private static int count;
  public Person() {
    System.out.println(++count);
  }
  
  public static void main(String args[]) {
    Person person1 = new Person();
    Person person2 = new Person();
  }
}

static修飾方法:
1.メソッド呼び出し時に、String name=person.getName()など、オブジェクトの参照が暗黙的に渡されます.
2.static修飾の方法は特定のオブジェクトに対して操作する必要はなく、実行構造は入力したパラメータにのみ関係し、クラス名で直接参照することができる.例えば、double result=Math.sin(Math.PI/2);
3.staticメソッド呼び出し時に特定のオブジェクトが渡されないため、staticメソッドではstatic以外のメソッドにアクセスできません.例えば:Math.sin()、Math.sqrt()、Arrays.sort()等