カプセル化
メニューを表示するにはスワイプしてください
カプセル化は、本質的にはデータを整理するための手法。データとメソッドをクラスという形でまとめ、プログラム全体がクラスを中心に構成され、データやメソッドがそのクラス内にカプセル化される。このカプセル化によって、オブジェクトの内部状態へのアクセスを制御でき、ソフトウェアシステムのモジュール性、保守性、セキュリティが向上する。
カプセル化では、public、private、protectedなどのアクセス修飾子を使い、クラスのほとんどのフィールドやメソッドを隠し、外部から利用する必要があるものだけを公開する。
ほとんどのデータはクラス外から直接アクセスできないため、データの取得や変更にはゲッターやセッターを利用する。
良い例としては、銀行の顧客を定義するCustomerクラスが挙げられる。
index.cs
1234567891011121314151617181920212223242526272829303132public class Customer { private double accountBalance; private string customerName; private int pinCode; public Customer(double accountBalance, string customerName, int pinCode) { this.accountBalance = accountBalance; this.customerName = customerName; this.pinCode = pinCode; } public double getBalance(int pinCode) { if (pinCode == this.pinCode) return this.accountBalance; return } public void Deposit(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance += amount; } public void Withdraw(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance -= amount; } }
上記の例では、どのフィールドも外部から直接アクセスしたり変更したりすることはできません。その代わり、値を変更する必要がある場合は Deposit や Withdraw のようなメソッドを使用します。同様に、残高の値にアクセスするには getBalance メソッドを使用します。
public キーワードは、必要な場合を除き一般的に使用が推奨されません。
注意
補足として、フィールドをクラス外部からはアクセス不可にしつつ、派生クラスからはアクセス可能にしたい場合、protected アクセス修飾子を使用できます。
1. C# におけるカプセル化でアクセス修飾子はどのような役割を果たしますか?
2. カプセル化を維持するために、次のアクセス指定子のうち最も使用を控えるべきものはどれですか?
すべて明確でしたか?
フィードバックありがとうございます!
セクション 5. 章 6
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 5. 章 6