OOPを学習しています。私はカプセル化について多くのことを学びましたが、読むほど、混乱しました。
私は(プライベートにすることで)データを隠し、プロパティまたはメソッドとしてクラスのユーザー(他の開発者)に公開することを理解しています。また、カプセル化によって詳細を隠すことも理解しています。
記事(http://www.csharp-station.com/Tutorial/CSharp/lesson19)で私は読んだ:
記事の要約
オブジェクトを設計するときは、他の人がそれをどのように使用できるかを考える必要があります。最良のシナリオでは、オブジェクトを使用するすべてのプログラムが適切に設計され、コードが変更されることはありません。ただし、実際にはプログラムは頻繁に変更され、チーム環境では多くの人が一度に同じコードに触れます。したがって、オブジェクトがどのように自然のままの画像だけでなく、間違って行くことができるかを検討することは有益である必要があります使用すること。
BankAccountオブジェクトの場合は、オブジェクト外のコードが10進数のAmountフィールドまたは文字列CustomerNameフィールドにアクセスできる状況を調べます。コードが作成された時点で、すべてがうまく機能します。ただし、開発サイクルの後半では、情報間の関係(または内部状態の定義を変更する他の有効な理由)を複製したくないため、BankAccountオブジェクトは文字列CustomerNameではなくint CustomerIDを追跡する必要があることに気付きます。 。このような変更は、元々設計されたとおりに(CustomerNameが文字列である)BankAccountクラスを使用するように構築されているため、コードに波及効果を引き起こし、アプリケーション全体でその状態にアクセスするコードを変更する必要があります。
カプセル化のオブジェクト指向の原則は、このような問題を回避するのに役立ち、メソッド、プロパティ、インデクサーなどの型メンバーを介して内部状態を非表示にし、アクセスを抽象化できます。カプセル化は、オブジェクト間の結合を減らし、コードの保守性を向上させるのに役立ちます。
質問 カプセル化は、コードに変更を加えるとき、およびその波及効果からどのように役立ちますか。データメンバーの場合、その型をintからfloatに変更すると(プロパティを使用してこれを公開している場合でも)、このコードを既に使用している変数の型を変更する必要があります。
カプセル化がこのような変更にどのように役立つかを教えてください。
このヘルプとガイダンスをありがとう。