OOPの3つの特性:カプセル化


OOP言語の3つの主要な機能。


はじめに
(このセクションをxdの導入にスキップするだけです).
さて、JavaとCPPは私が私の学校から学んだ言語です、しかし、この夏、私は私たちがC .の上で若干の解説をするために「よりよい」と私の教授から電子メールを受け取ります
そして、それらの2つの言語がオブジェクト指向プログラミング言語であるということを知っています.C言語のような手続き指向言語とは異なる3つの機能を持っています.
これらの3つの機能のために多くのコンプレックスからのインタビューに高い発生率を持って、私は私の知識の要約を決定します.
このブログはJavaの言語に基づいています.そしてこのブログの中で、私の「my word」と私の考えを使って、彼らが何であるのか、なぜ存在しているのか、その使い方を説明しようと思います.私のブログで間違っている場合は私を修正してください.ありがとう!

導入

  • カプセル化
  • 遺産
  • 多型
  • カプセル化:理由


    1 .定義(何)
    同じ機能を持っているオブジェクトを置くか、一緒に同じクラスに属し、それらをよくパックします.
    あなたが会社で知っているように、異なったマネージャーまたは監督者によって導かれる部門がたくさんあります.例えば、我々はIT_Department クラスとHR_Department クラス.
    class HR_Department{
    
        private String Manager;
        private String[] Dep_Members;
    
        HR_Department(String manager_name){// constructor of HR_Dep
            Manager = manager_name;
        }
    
        private void employ(){
            System.out.println("Our company need to employ a new employee.");
        }
        private void dismissal(){
            System.out.println("We decide to dismissal someone...");
        }
    }
    
    class IT_Department{
    
        private String Manager;
        private String[] Dep_Members;
    
        IT_Department(String manager_name){// constructor of IT_Dep
            Manager = manager_name;
        }
    
        private void Access_Database(){
            System.out.println("Our IT Department can access database of our company.");
        }
        private void Power_outage(){
            System.out.println("IT Department decide to shut down the power for fixing problems.");
        }
    }
    
    class Google_Inc{
        private IT_Department it_Dep;
        private HR_Department hr_Dep;
    
        Google_Inc(String IT_Manager_Name,String HR_Manager_Name){// constructor of Google_Inc
            it_Dep = new IT_Department(IT_Manager_Name);
            hr_Dep = new HR_Department(HR_Manager_Name);
    
            System.out.println("Google Inc is established successfully!");
        }
    }
    
    public class Test {
    
        public static void main(String[] args) {
            // set up a company call newGoogle_Inc XD
            Google_Inc google_Inc = new Google_Inc("Jack", "Rose");
        }
    }
    
    あなたがこの会社のCEOであるならば、あなたはこれらの異なる部門を管理するのを援助するために何人かのマネージャーを雇わなければなりません、そして、もちろん、あなたは完全な順序でどんな部門仕事も必要として、互いを助けます
    .
    重要性(理由):
    あなたが簡単に想像することができます、どのように厄介なこのシナリオは、我々はすべてのクラスのデータのすべての部分にアクセスしていない場合になります.
    人事部従業員がIT部門でチェックインすることなく電源を切るとき、あなたはそれに耐えられないと思います.(私は、どんな会社XDのためにも決して働かないでください)それは危険で、どこからともなく線です.
    したがって、カプセル化の存在はたった今その重要性を示します.会社の例は、どんなプログラムの、コードの、データの管理にも適しています.あなたがプログラムを設計したあと、あなたのユーザーのいくつかがあなたのデータにアクセスして、それらを編集することができる間、それは危険です.
    Javaの場合、通常はパーミッション修飾子を使用してクラス(データ)をよくパックします.
    1 .public2 .protected (デフォルト)
    3 .private (以前のコードブロックで参照できるように、クラスや変数を変更するのに最も使いました)
    明らかに、あなたが正しく使用する場合は、それを実現することができます
    許可修飾子を使用すると、コードの利点がわかります.
    重要な変数( vars )または関数( function )を分離する
    2 .便利なアクセスVarsまたは機能
    重要度の増加
    セキュリティの向上
    そしてもちろん、これらの利点はまた、コードがアクセスし、それらにアクセスするためにより多くのステップを費やすことにつながるアクセスをより困難になります.
    カプセル化の実装
    それらを使用する前に、あなたはアクセスされることができる異なった変更されたVarsまたはFunsの範囲を知る必要があります.
    変更する
    同級
    同じパッケージ
    サブクラス
    オールクラス
    プライベート
    はい
    デフォルト
    はい
    はい
    はい
    保護
    はい
    はい
    はい
    公共
    はい
    はい
    はい
    はい
    どうにかprotected デフォルトに等しい.
    EG : HR部の管理者名を直接割り当てることはできません= :

    したがって、「getters」と「setter」と呼ばれるいくつかの関数を設定する必要があります.
    class IT_Department{
    
        private String Manager;
        private String[] Dep_Members;
    
        IT_Department(String manager_name){// constructor of IT_Dep
            Manager = manager_name;
        }
    
        String getManager(){ // a classic getter function
            //return manager's name
            return Manager;
        }
        void setManager(String name){// a classic setter function
            //set name to manager's name
            this.Manager = name;
        }
    
        private void Access_Database(){
            System.out.println("Our IT Department can access database of our company.");
        }
        private void Power_outage(){
            System.out.println("IT Department decide to shut down the power for fixing problems.");
        }
    }
    
    したがって、カプセル化の実装は、コードで抽象的です.カプセル化を現象や特徴と呼ぶことを好む.あなたがコードのはっきりして厳しいフレームを持っているならば、あなたのコードはとてもよくて快適に見えます.
    主な機能では
    public static void main(String[] args) {
            // set up a company call newGoogle_Inc
            Google_Inc google_Inc = new Google_Inc("Jack", "Rose");
    
            String name = google_Inc.it_Dep.getManager(); // assign "Jack" to name.
            google_Inc.it_Dep.setManager("Ben");// assign "Ben" to IT Department's manager
        }
    
    あなたのアドバイスとコメントは前進する力です.あなたの読書をありがとう.
    あなた自身をプッシュしない場合はどのように良い知っていることはありません.
    リッキーRuan
    電子メール[email protected]