Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ カプセル化 | OOP原則
C#オブジェクト指向構造

bookカプセル化

メニューを表示するにはスワイプしてください

カプセル化は、本質的にはデータを整理するための手法。データとメソッドをクラスという形でまとめ、プログラム全体がクラスを中心に構成され、データやメソッドがそのクラス内にカプセル化される。このカプセル化によって、オブジェクトの内部状態へのアクセスを制御でき、ソフトウェアシステムのモジュール性、保守性、セキュリティが向上する。

カプセル化では、publicprivateprotectedなどのアクセス修飾子を使い、クラスのほとんどのフィールドやメソッドを隠し、外部から利用する必要があるものだけを公開する。

ほとんどのデータはクラス外から直接アクセスできないため、データの取得や変更にはゲッターセッターを利用する。

良い例としては、銀行の顧客を定義するCustomerクラスが挙げられる。

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829303132
public 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; } }

上記の例では、どのフィールドも外部から直接アクセスしたり変更したりすることはできません。その代わり、値を変更する必要がある場合は DepositWithdraw のようなメソッドを使用します。同様に、残高の値にアクセスするには getBalance メソッドを使用します。

public キーワードは、必要な場合を除き一般的に使用が推奨されません。

Note
注意

補足として、フィールドをクラス外部からはアクセス不可にしつつ、派生クラスからはアクセス可能にしたい場合、protected アクセス修飾子を使用できます。

1. C# におけるカプセル化でアクセス修飾子はどのような役割を果たしますか?

2. カプセル化を維持するために、次のアクセス指定子のうち最も使用を控えるべきものはどれですか?

question mark

C# におけるカプセル化でアクセス修飾子はどのような役割を果たしますか?

正しい答えを選んでください

question mark

カプセル化を維持するために、次のアクセス指定子のうち最も使用を控えるべきものはどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  6
some-alt