データを守る「カプセル化(Encapsulation)」とは?
C#などのオブジェクト指向言語では、カプセル化(Encapsulation)という仕組みを使って、
クラス内部のデータを外部から直接アクセスできないように保護し、安全で正しい使い方を促します。
カプセル化とは?
カプセル化とは、クラスの内部にあるフィールド(変数)をprivateにして隠し、
外部からはプロパティやメソッドを通して制御付きでアクセスできるようにすることです。
なぜカプセル化が必要?
- 間違った値の代入を防げる(例:年齢にマイナスが入るのを防ぐ)
- 内部構造を隠せる(使い方だけを公開)
- 将来的な変更がしやすくなる
カプセル化の基本例
public class Person {
private int age; // 外から直接アクセス不可
public int Age {
get { return age; }
set {
if (value >= 0) {
age = value;
} else {
Console.WriteLine("年齢は0以上である必要があります。");
}
}
}
}
Person p = new Person();
p.Age = 25; // → OK
Console.WriteLine(p.Age); // → 25
p.Age = -5; // → エラー処理が実行される
自動実装プロパティもカプセル化の一部
public class Product {
public string Name { get; set; } // get/set を通じてアクセス
}
アクセス修飾子で範囲を制御
private
:クラス内部からのみアクセス可能(基本はこれ)
public
:どこからでもアクセス可能(必要なものだけ公開)
protected
:継承先からはアクセス可能
カプセル化のポイント
- フィールドはprivateにする
- プロパティ(get/set)を通じてアクセスさせる
- 入力チェックやロジックをプロパティ内で実行可能
まとめ
カプセル化(Encapsulation)は、クラスの内部データを安全に守り、正しい手順でのみアクセスさせる設計手法です。
これにより、信頼性が高く、変更に強いクラス設計が可能になります。
C#では、private
とpublic
、プロパティ
を上手に使い分けることがポイントです!