オブジェクト向け(OO)ベース

3450 ワード

オブジェクト向け、英語Object-Oriented、略称OO)、また,オブジェクト指向解析(Object-oriented Analysis,OOA)オブジェクト指向設計(Object-oriented Design,OOD)オブジェクト指向プログラミングもある.(Object-Oriented Programming,OOP).オブジェクト向けの開発言語を使用してきたが、最初はプロセス向けのコードを書いていたので気まずい...無数のレンガを運び、多くの曲がり角を歩いた後、実はオブジェクト向けの概念が食い切れていないことに気づいたが、最近は少し時間をかけて整理し、まとめて整理した自分の知識点一方、他の人に役に立つことを望んでいます.不適切な点があれば、指摘を歓迎します.
オブジェクトは、識別可能なプロパティと動作のセットで識別される自己包含エンティティです.はっきり言って、オブジェクトは自分の特徴的な属性を持ってすでに動作して、つまり私たちの符号化の中の属性と方法です.
クラスは同じ属性と機能を持つオブジェクトの抽象集合であり,クラス内部の実装は自由に修正でき,明確な対外インタフェースを持つ.class宣言を使用すると、直感的なイメージは物事を示し、クラスはオブジェクトの抽象である.
フィールドは、クラスが設計を満たすために必要なデータを格納し、フィールドはクラスに関連する変数です.プロパティはメソッドまたはペアのメソッドですが、呼び出されたコードから見れば、プロパティがフィールドで呼び出されるフィールドです.
    Private string name ="";   //  
    Public string  Name    //  
    {
       get{return "nuss";}
    }

カプセル化:各オブジェクトには、操作に必要なすべての情報が含まれます.メソッドとプロパティはクラスにパッケージされ、クラスのインスタンスによって呼び出されます.したがって、オブジェクトは他のオブジェクトに依存して自分の操作を完了する必要はなく、良好なパッケージは結合を低減することができる.
継承:オブジェクトの継承は「is-a」の関係を表し、2つのオブジェクトAとBが「BはA」と記述できる場合、テーブル名BはAを継承できます.継承者は、被継承者の特性に加えて、独自の個性を備えているため、被継承者に対する特殊化と理解できる.継承は、クラスがどのように相互に関連し、特性を共有するかを定義します.継承の作業方法は、親と子を定義するか、ベースクラスと派生クラスと呼ばれ、子クラスは親のすべての特性を継承します.子クラスは、親クラスのすべてのプロパティを継承するだけでなく、新しいプロパティを定義することもできます.サブクラスには、親クラスの非privateのプロパティと機能があります(厳密には、子クラスは、構造関数contructorsとfinalizersを除くすべてのメンバーを継承します).サブクラスには独自の属性と機能があります.すなわち、サブクラスは親にない属性と機能を拡張することができます.子クラスは自分の方法で親クラスの機能を実現することができる.構築メソッドの場合、継承されず、呼び出されるしかありません.親クラスを呼び出すメンバーにはbaseキーを使用します.また継承は親の実装の詳細を子に漏らし,強い結合関係である.
マルチステートの異なるオブジェクトは、同じ動作を実行できますが、独自の実装コードによって実行されます.使用方法:親タイプであることを宣言し、Food food=new Bread()などのサブタイプをインスタンス化します.つまり私たちは食べ物としてパンをnewしました.多態の特徴は以下の通りである.
  • 子クラスは親クラスとして現れた.
  • サブクラスは、作業時に独自の方法で実現される.
  • 子クラスが親クラスとして現れる場合、子クラス特有の属性と方法は使用できません.マルチステートの原理:メソッドが呼び出されると、オブジェクトが親に移行されるかどうかにかかわらず、オブジェクト継承チェーンの最上位に位置するメソッドインプリメンテーションのみが呼び出されます.実は実行はサブクラスの方法で、上の例のように、私が手に入れたのは食べ物の対象ですが、本質的にはパンで、私たちはパンを食べて、それは食べ物です.

  • 抽象クラスabstractが修正したクラスまたはメソッドは抽象クラスまたは抽象メソッドであり、抽象クラスは抽象概念を表し、継承の出発点を提供し、抽象クラスはできるだけ多くの共通コードを持ち、できるだけ少ないデータを持っている.抽象クラスには次のような特徴があります.
  • 抽象クラスはインスタンス化できません.
  • 抽象的な方法は布団類を書き直さなければならない方法である.
  • クラスに抽象メソッドが含まれている場合、クラスは他の一般的なメソッドが含まれているかどうかにかかわらず抽象クラスとして定義されなければならない.

  • インタフェースインタフェースは、暗黙的な共通メソッドと属性を組み合わせて、特定の機能をカプセル化する集合です.クラスがインタフェースを実装すると、クラスはインタフェースで指定されたすべての属性とメンバーをサポートできます.宣言インタフェースは、構文的に宣言抽象クラスと全く同じですが、インタフェース内のメンバーの実行方法は許可されません.インタフェースには次のような特徴があります.
  • インタフェースはインスタンス化できません.
  • インタフェースには構造方法とフィールドがありません.
  • public、privateなどの修飾子を持つことができず、方法には方法体がない.
  • 仮想または静的を宣言することはできません.
  • 実装インタフェースは、インタフェース内のすべての方法および属性を実装しなければならない.

  • インタフェースと抽象クラスの違い
  • 抽象クラスは、いくつかのメンバーの実装を与えることができるが、インタフェースはメンバーの実装を含まない.
  • 抽象クラスの抽象メンバーは布団クラスの部分で実現することができ、インタフェースのメンバーはクラスの完全な実現を実現する必要がある.
  • 1クラスは1つの抽象クラスしか継承できないが、複数のインタフェースを実現することができる.
  • インタフェースはクラスのローカル動作を抽象化し、抽象クラスはクラス全体(フィールド、属性、方法)を抽象化する.
  • どのように使うかはまず、一つの物事を抽象的にクラスにし、自分の属性と行為を持って、作成したクラスが多くなると、必ず似たような属性と行為を持つクラスが存在します.この時、私たちは似たような属性と行為を抽象化し、それらの共通性のあるものを抽象クラスに置く必要があります.同時に異なるタイプのクラスも存在しますが、彼らは同じ動作を持っています.このとき、私たちはこの同じ動作と動作を抽象化して、共通のインタフェースに置くことができます.実は要約すると、類は対象に対する抽象である.抽象クラスはクラスに対する抽象である.インタフェースは動作の抽象です.今、指がキーボードの上で舞って、绝えずキーボードをたたく音が伝わってきて、1种の快感があって、仏を放して私はコードワードではありませんてやはりひらひらと踊っています..事実は私が寝るべきだと証明した:)
    リファレンス
  • C# Programming Guide https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide

  • 転載先:https://www.cnblogs.com/Nuss/p/8713619.html