JAva 13オブジェクト向け奥行き3


JAva 13オブジェクト向け奥行き3
アウトライン
ここには書いていません
オブジェクト向け-カプセル化
理解する
パッケージ(encapsulation)はどのように理解して、1台のコンピュータは1つのケースを利用して包んで、中の電気部品を保護して、少量のボタンを提供してそれとドッキングして使用します.私はテレビを見たいのですが、スイッチと交換台を押すだけでいいです.テレビの内部構造を知る必要がありますか?ブラウン管に触れる必要がありますか?メーカーは私たちがテレビを使うのを便利にするために、複雑な内部の細部をすべてパッケージして、簡単なインターフェースだけを暴露してくれました.例えば、電源スイッチです.具体的にどのように内部で実現したのか、私たちは心配する必要はありません.
ユーザに知らせる露出が必要であり,ユーザに知らせるすべてを隠す必要はない.これがパッケージで、白話は「露の露、蔵の蔵」です.
コンセプト
我々のプログラム設計は「高集約、低結合」を追求しなければならない.高集約はクラスの内部データ操作の詳細が自分で完成し、外部干渉を許さない.低結合:少量の方法のみを外部に露出して使用します.抽象データ型を利用してデータとデータベースの操作をカプセル化し、分割できない独立したエンティティを構成させ、データは抽象データ型の内部に保護され、できるだけ内部の詳細を隠し、外部と連絡を取るためにいくつかの対外インタフェースだけを残しておく.システムの他の部分は、データの外に包まれた許可された操作によってのみ、この抽象的なデータ型と交流し、対話する.すなわち、ユーザは、オブジェクトの内部メソッドの実装の詳細を知る必要はないが、オブジェクトが提供する外部インタフェース(オブジェクト名およびパラメータ)に基づいてオブジェクトにアクセスすることができる.
さぎょう
a)、専門の分業を実現した.ある特定の機能を実現できるコードを独立したエンティティにカプセル化した後、各プログラマーは必要に応じて呼び出すことができ、専門的な分業、すなわち仕事中のモジュール、機能開発を実現した.b)、情報を隠し、詳細を実現する.アクセス権を制御することで、クライアント・プログラマーに見られたくない情報を隠すことができます.たとえば、ある顧客の銀行のパスワードは秘密にする必要があり、その顧客に対してのみ権限を開発することができます.
javabean
ルール#ルール#
Javabeanの作成には、1)、属性をできるだけプライベート化するprivate 2)、アクセサ:setterとgetterアクセサ>privateなど、一般的にpublicの多くはsetterXx:ストレージ>getterXx:表示
コード#コード#
public class Person {  //   
        private String name;   //   
     private int age;  //   
     private boolean sex; 

​    public Person() { 
​     } 

​    //setter getter 
​     public String getName() { 
          return name; 
     } 

​     public void setName(String name) { 
          this.name = name; 
     } 

     public int getAge() { 
          return age; 
     } 

     public void setAge(int age) { 
          this.age = age; 
     } 

     public boolean isSex() { 
          return sex; 
     } 

     public void setSex(boolean sex) { 
          this.sex = sex; 
     } 

} 

経典MVC思想
概要
MVCは階層的な考え方であり、設計モデルである.
M:Model層(モデル層)
データ、業務を処理し、処理後のデータをビューレイヤに提供する
V:Viewレイヤ(ビューレイヤ)
ユーザーのためにデータを展示することは、データの最も直感的な体現である.
C:Controller層(ビジネスロジック層)
インタフェースレイヤのデータを受信し、受信したデータをカプセル化し、タイプ変換します.モデルレイヤのサービスを呼び出してビジネスロジックの処理を行います.適切なビューを呼び出してデータをレンダリングします.
メリット
  • コード量を減らし、性能(効率)を向上させる.
  • コードの拡張性を向上させる(コードをあまり変更する必要はなく、変更する必要はありません)
  • は、高凝集、低結合の原則
  • に従う.
    [外部チェーン画像の転送に失敗しました.ソース局には盗難防止チェーンがある可能性があります.画像を保存して直接アップロードすることをお勧めします(img-pZvJ 4 SlB-1609312950192)(/1581945749553.png)]
    パーミッション修飾子
    public:一目瞭然;
    protected:子承父業(息子が自分で使う);
    default:家族の和合;
    private:既存に占有
    オブジェクト向け-マルチステート
    彼女は私を家に連れて行って、義母は見て、気が狂った!「曽志偉」に似ていたのか.
    概要
    マルチステートpolymorphismは、主に動的コンパイルを実現するために使用され、言い換えれば、プログラムの最終状態は、コンパイル中ではなく実行中にのみ決定される.これは、大規模なシステムにとって、システムの柔軟性と拡張性を向上させることができます.
    JAvaではどのようにマルチステートを実現しますか?マルチステートのメリットを使用しますか?
    参照変数の2つのタイプ:•コンパイル時のタイプ(ファジイ点、一般的には親)
    •宣言時のタイプによって決定されます.
    •ランタイムタイプ(ランタイム、具体的にどのサブクラスがどのサブクラスであるか)
    •実際に対応するオブジェクトのタイプによって決まります.
    マルチステートの存在には3つの必須条件があります.継承するには、書き換える方法があり、親参照が子オブジェクトを指します.
    コード#コード#
    ここには書いていません
    参照データ型の型変換
    •子から親への変換:自動変換
    アップグレード・オブジェクトでは、サブクラスに追加されたメンバー変数とメソッドを操作できません.
    アップグレード・オブジェクトは、サブクラスが継承または書き換えるメンバー変数とメソッドを操作できます.
    子クラスが親クラスのメソッドを書き換えた場合、アップコンバート・オブジェクトがメソッドを呼び出すと、呼び出された書き換えメソッドになります.
    •親から子への変換:変換の強制
    (決して手術ではなく、親の正体が子である場合、タイプ変換エラーが発生します
    抽象クラス
    概要
    キーワードabstract宣言を用いたクラスを「抽象クラス」と呼ぶ.
    抽象クラスは抽象的な世界をモデリングし、親として使用します.例えば、図形の面積を要求しますか?これはあなたの思考がいったいどんな図形ですか?この図形は抽象的すぎますか?三角形ですか、原型ですか?図形はどのように面積を求めますか?この時、図形を抽象クラスと定義することができます.
    いくつかのポイント
  • 抽象メソッドと抽象クラスはabstractで修飾する必要があります.
  • 抽象メソッドにはメソッド体がなく、実装する必要がないと宣言するだけです.
  • 抽象メソッドのあるクラスは抽象可能なクラスしか定義できません.
  • 反対に抽象クラスの中の方法は必ずしも抽象的な方法ばかりではなく、抽象的な方法もないかもしれません.
  • 抽象クラスは、属性、メソッド、構築メソッドを含むことができる.
  • 抽象クラスはインスタンス化できない、およびnewで抽象クラスをインスタンス化できない.布団クラス呼び出しにのみ使用できる.
  • 抽象クラスは継承にのみ使用できます.
  • 抽象メソッドは布団クラスによって実現されなければならない.抽象クラスのサブクラスはすべての抽象メソッドを上書きしなければインスタンス化されない.そうしないと抽象クラスである.
  • コード#コード#
    ここには書いていません
    インタフェース
    概要
    インタフェース(interface)は、「抽象クラス」よりも「抽象」の「抽象クラス」であり、より規範的にサブクラスを制約することができる.全面的に専門的に実現した:規範と具体的な実現の分離
    定義方法
    •フォーマット:
    •[アクセス修飾子]interfaceインタフェース名[extends親インタフェース1,親インタフェース2...]
    •定数定義//常にpublic static final
    •メソッド定義//常に:public abstract•
    ​ }
    実装方法
  • サブクラスはimplementsによってインタフェースの仕様
  • を実現する.
  • インタフェースはインスタンスを作成できませんが、参照変数のタイプを宣言するために使用できます.
  • クラスはインタフェースを実現し、インタフェース内のすべての方法を実現しなければならない.これらの方法はpublicのみである.
  • Javaのクラスは単一継承のみをサポートし、インタフェースはマルチ継承
  • をサポートする.
    空のインタフェース
    JVMのIDの1つにすぎません.JVMのパスポートです.1)、java.lang.Cloneable:すべてのオブジェクトがクローンできるわけではありません.そうでなければCloneNotSupportedException 2)、java.io.Serializable
    実際の開発では、ビジネスロジック処理クラスは、抽象クラスを継承するか、インタフェースを実装するか、インタフェースを優先的に使用し、単一継承の限界を回避します.abstract classは「is a」関係、interfaceは「like a」関係を表します.