この記事は次から転送されます:https : //www.cnblogs.com/yubinfeng/p/4553505.html
私たちの主題はオブジェクト指向プログラミングです。オブジェクト指向の基本的な知識は主に前面に紹介されており、オブジェクト指向のコア部分は
3つの主要なオブジェクト指向機能:カプセル化、継承、およびポリモーフィズム。
1.カプセル化のコンセプト
カプセル化:各オブジェクトには、操作できるすべての情報が含まれています。この機能はカプセル化と呼ばれます。このようなメソッドはクラスに含まれ、クラスのインスタンスを介して実装されます。
2.パッケージの利点
A.適切なパッケージ化により、結合を減らすことができます(インターフェイスとロジックの分離など)。
B.クラスの外部インターフェイスは変更できず、内部は自由に変更できます
C.クラスには明確な外部インターフェイスがあり、ユーザーは呼び出すだけで、内部を気にする必要はありません。
D.カプセル化されたクラス関数は比較的独立しているため、コードの再利用をより適切に実現できる
E.コードは、不注意で破壊されないように保護し、プライベートフィールドを介して内部で実現できます。注:ここでのコード保護は、コード自体の暗号化を意味するのではなく、外部から変更されることを望まないコードのプライベート実装を意味します。
パッケージをよりよく理解するために、いくつかの実用的な例を示します
例1:美しい家(家のカテゴリ)があり、家にはベッド(ベッド属性)、ソファ(ソファ属性)、デスク(デスク属性)、キャッシュキャビネット(ボックス属性)、およびドア(ドア属性)、窓があります。 (ウィンドウプロパティ)、クラスとそのプロパティメンバーを使用して、この家のオブジェクトを表すことができます。定義する前に、通行人はキャッシュボックスやベッドなどの個人のプライバシーを見ることができないと考えることができますそれはプライベートです。日光が当たらないようにウィンドウを閉じることも不可能であるため、ウィンドウはパブリック属性です。家を出るときはドアに鍵をかけ、家に帰るときはドアを開ける必要がありますが、これは外的な方法ですが、鍵を持っているなど、特定の条件でロックを解除することもできます。上記の説明を通して、このカプセル化を実現するためにコードを使用します
1 /// <summary> 2 /// House Class 3 /// </ summary> 4 class House 5 { 6 object _bed; 7 object _sofa; 8 object _desk; 9 object _box; 10 object _door; 11 object _window; 12 13 /// <summary> 14 ///ベッドのデフォルトのプライベートメンバー 15 /// </ summary> 16オブジェクトベッド 17 { 18 get {return _bed;} 19セット{_bed = value;} 20} 21 /// <summary> 22 ///ソファ(プライベート) 23 /// </まとめ> 24オブジェクトソファ 25 { 26 get {return _sofa;} 27セット{_sofa = value; } 52セット{_door = value; } 28} 29 /// <summary> 30 ///书桌(私有) 31 /// </ summary> 32オブジェクトデスク 33 { 34 get {return _desk; } 35セット{_desk = value; } 36} 37 /// <summary> 38 ///钱柜(私有) 39 /// </ summary> 40オブジェクトBox 41 { 42 get {return _box; } 43 set {_box = value; } 44} 45 46 /// <summary> 47 ///门(公有) 48 /// </ summary> 49パブリックオブジェクトDoor 50 { 51 get {return _door; } 53} 54 55 /// <概要> 56 ///ウィンドウ(パブリック) 57 /// </サマリー> 58パブリックオブジェクトウィンドウ 59 { 60 get {return _window;} 61セット{_window = value;} 62} 63}
例2:私たちの部隊は800ドル相当の黄色い羊飼いの犬を飼育します。見知らぬ人が来ると、数回吠えます。もちろん、見知らぬ人が高ければ高いほど、吠えます。このようなトランザクションの処理には、オブジェクト指向のカプセル化機能を使用でき、コードは次のように実装されます。
23パブリック文字列DogName 24 { 26セット{_dogName = value; } 25 get {return _dogName; } 27} 28 /// <summary> 29 ///犬の色の読み取り専用属性(この色は生まれた直後の色です。ここでは読み取り専用のみ提供されています。もちろん、ここでは染色は考慮されていません) 30 // / </ summary> 31 public Color DogColor 32 { 33 get {return _dogColor;} 34} 35 /// <summary> 36 ///犬の価格の読み取り専用プロパティ(これは購入した価格であり、履歴は変更できません) 37 /// </ summary> 38 public double DogPrice 39 { 40 get {return _dogPrice;} 41} 42 43 /// <summary> 44 ///犬が吠えた回数(別の見知らぬ人が来て呼ばれた)異なる時間) 45 /// </ summary> 46 public int ShoutNumber { 47 set {_shoutNumber = value;} 48 get {return _shoutNumber; } 49} 50 51 /// <summary> 52 ///狗叫的方法 53 /// </ summary> 54 public void Shout() 55 { 56 int i = 0; 57文字列ShoutNum = ""; 58 do 59 { 60 ShoutNum + = "旺!"; 61 i ++; 62} while(i <= ShoutNumber); 63 MessageBox.Show(ShoutNum); 64} 65}
上記のDogクラスは、価格、色、通話、名前など、犬に関するすべての情報であり、外部通話を容易にするためにクラスにカプセル化されています。犬の価格と色は読み取り専用属性が使用されます。これは、購入した過去の価格と色を変更できないためです(当面、染色は考慮されません)。カプセル化のアイデアにより、外部インターフェースの呼び出しに影響を与えることなく、犬の体重などの他のパブリック属性を増やし、プライベートな読み取り専用属性を保護できます。
これら2つの例を通して、私たちはパッケージングに完全に精通していると思います。私たちの犬が別の赤ちゃんを出産した場合、彼の特徴の多くは基本的に同じですが、このクラスをもう一度コピーする必要がありますか?これは、別の重要なオブジェクト指向の機能継承を使用します。以下でゆっくり紹介します。
国際的な慣行、包装の主なポイントを要約します
重要なポイント:
1.カプセル化とは、オブジェクトが操作できるすべての情報をまとめることです
2.カプセル化により、結合を減らし、統一された外部インターフェースを維持できます。内部変更は外部呼び出しに影響しません