オブジェクト向けの三大特徴五大原則

2326 ワード

今日、胡巴は10年間のインターネットの仕事の経験と4年間のアンドロイド開発の大牛の面接経験を分かち合った.原文:http://blog.csdn.net/dongfeng9ge/article/details/53428250
 :     65k       ?
 :         

もう少しで笑って死ぬところだったが、突然自分のjavaの基礎が弱いことを思い出し、3つの特徴の5つの原則を探して、以下のように抜粋した.
3つの特性は、パッケージ、継承、マルチステートです.
パッケージとは、客観的な物事を抽象的なクラスにカプセル化し、クラスは自分のデータと方法を信頼できるクラスやオブジェクトだけに操作させ、信頼できないものに対して情報を隠すことができる.カプセル化はオブジェクト向けの特徴の一つであり,オブジェクトとクラス概念の主な特性である.簡単に言えば、クラスは、データをカプセル化し、これらのデータを操作するコードの論理エンティティです.1つのオブジェクトの内部では、一部のコードまたは一部のデータはプライベートであってもよく、外部からアクセスできません.このようにして、オブジェクトは内部データに対して異なるレベルの保護を提供し、プログラム内の関係のない部分が意外に変更されたり、オブジェクトのプライベート部分が誤って使用されたりすることを防止する.
継承とは、あるタイプのオブジェクトに別のタイプのオブジェクトの属性を取得させる方法です.レベル別の概念をサポートします.継承とは、既存のクラスのすべての機能を使用し、元のクラスを再記述することなく拡張できる能力です.継承によって作成された新しいクラスを「子クラス」または「派生クラス」と呼び、継承されたクラスを「ベースクラス」、「親クラス」または「スーパークラス」と呼ぶ.継承の過程は、一般から特殊な過程である.継承を実現するには、「継承」(Inheritance)と「組合せ」(Component)で実現します.継承概念の実現方式は2種類ある:継承とインタフェース継承を実現する.継承の実装とは、追加の符号化を必要とせずにベースクラスの属性と方法を直接使用する能力を指す.インタフェース継承とは、属性とメソッドの名前のみを使用しますが、サブクラスが実装する能力を提供する必要があります.
マルチステートとは,1つのクラスインスタンスの同じ方法が異なる場合に異なる表現形式を持つことを指す.マルチステートメカニズムは、異なる内部構造を持つオブジェクトが同じ外部インタフェースを共有できるようにします.これは、異なるオブジェクトに対する特定の操作は異なるが、共通のクラスによって同じ方法で呼び出すことができることを意味する.
5大基本原則単一職責原則SRP(Single Responsibility Principle)とは、1つのクラスの機能が単一で、万象を網羅できないことを指す.一人のように、割り当てられた仕事はあまり多くてはいけません.そうしないと、朝から晩まで忙しくても、効率が高くなりません.
オープンクローズ原則OCP(Open-Close Principle)1つのモジュールは、拡張性の面ではオープンであるべきであり、変更性の面では閉鎖されるべきである.例えば、1つのネットワークモジュールは、もともとサービス側の機能だけで、今クライアント機能を追加するには、サービス側の機能コードを修正する必要がない前提の下で、クライアント機能の実現コードを増やすことができ、これは設計の初めに、サービス側とクライアントを分離し、公共部分を抽象化しなければならない.
置換原則(the Liskov Substitution Principle LSP)サブクラスは、親クラスを置換し、親クラスが出現可能な任意の場所に出現させることができるべきである.例えば、会社は年度のパーティーをして、すべての従業員が抽選に参加することができて、それではベテランの従業員にしても新入社員にしても、本社の従業員にしても派遣の従業員にしても、抽選に参加することができて、さもなくばこの会社は調和がとれません.
依存原則(the Dependency Inversion Principle DIP)は抽象に具体的に依存し,上層は下層に依存する.BはAより低いモジュールであると仮定するが、BはAの機能を使用する必要がある.この場合、BはAの具体的なクラスを直接使用するべきではない.Bは抽象インタフェースを定義し、Aによってこの抽象インタフェースを実現しなければならない.Bはこの抽象インタフェースだけを使用する.このように依存逆転の目的を達成し、BもAへの依存を解除し、逆にAはBによって定義された抽象インタフェースに依存する.上位モジュールでは下位モジュールへの依存を回避することは困難であり,BもAの実現に直接依存すると循環依存をもたらす可能性がある.よくある問題は、AモジュールをコンパイルするときにBモジュールのcppファイルに直接含める必要があり、BをコンパイルするときもAのcppファイルに直接含める必要があることです.
インタフェース分離の原則(the Interface Segregation Principle ISP)モジュール間は、特定のクラスによって強く結合されるのではなく、抽象的なインタフェースによって分離される必要があります.