カプセル化とアクセス修飾子
カプセル化によるデータ保護と、アクセス修飾子による公開範囲の制御を学びます
「カプセル化とアクセス修飾子」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン5/7です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全7レッスンが含まれています。
カプセル化の概要
カプセル化とアクセス修飾子
次のレッスンへようこそ!このレッスンでは、OOPの重要な概念であるカプセル化と、C#でアクセス修飾子を使ってクラスメンバーの可視性を制御する方法について学びます。それでは始めましょう!

カプセル化とは
カプセル化とは
カプセル化とは、データ(フィールド)と振る舞い(メソッド)を1つの単位(クラス)にまとめながら、一部の構成要素への直接アクセスを制限する仕組みです。これにより、データの整合性を保護し、データへのアクセスに関するルールを適用できます。
重要なポイント: カプセル化を使うと、実装の詳細を隠し、必要な機能だけを公開できます。
カプセル化が重要な理由
カプセル化が重要な理由
カプセル化には、次のような利点があります:
- データ保護: クラスのフィールドへの不正なアクセスや無効なアクセスを防ぎます。
- コードの保守性: 内部実装を変更しても、外部のコードに影響しません。
- モジュール性の向上: コードを整理し、理解しやすくします。
例: privateフィールドと、それらのフィールドを管理するpublicメソッドを持つクラスは、カプセル化を示す例です。
アクセス修飾子を理解する
アクセス修飾子を理解する
C#のアクセス修飾子は、クラスメンバーにアクセスできる範囲を定義します:
- public: どこからでもアクセスできます。
- private: 同じクラス内からのみアクセスできます。
- protected: 同じクラス内および派生クラスからアクセスできます。
- internal: 同じアセンブリ内からアクセスできます。
- protected internal: 同じアセンブリ内または派生クラスからアクセスできます。
重要なポイント: カプセル化を適用するために、アクセス修飾子を使用してください。
例: privateフィールドによるカプセル化
例: privateフィールドによるカプセル化
privateフィールドとpublicメソッドを使ったカプセル化の例を見てみましょう:
重要なポイント: 直接アクセスを制限するにはprivateフィールドを使用し、制御された機能を公開するにはpublicメソッドを使用してください。
using System;
class BankAccount {
private decimal balance; // Private field
public void Deposit(decimal amount) {
if (amount > 0) {
balance += amount;
} else {
Console.WriteLine("Deposit amount must be positive.");
}
}
public decimal GetBalance() {
return balance; // Access balance through a method
}
}
class Program {
static void Main() {
BankAccount account = new BankAccount();
account.Deposit(100.50m); // Deposit money
Console.WriteLine("Balance: $" + account.GetBalance()); // Get balance
}
}
プロパティによるカプセル化
プロパティによるカプセル化
プロパティを使うと、検証ロジックを取り入れながら、フィールドをより明確にカプセル化できます。例:
ヒント: 可読性を高めるため、生のgetterやsetterではなくプロパティを使用してください。
using System;
class BankAccount {
private decimal balance; // Private field
public decimal Balance { // Property with validation
get { return balance; }
set {
if (value >= 0) {
balance = value;
} else {
Console.WriteLine("Balance cannot be negative.");
}
}
}
}
class Program {
static void Main() {
BankAccount account = new BankAccount();
account.Balance = 200; // Set balance
Console.WriteLine("Balance: $" + account.Balance); // Get balance
}
}
練習課題
練習課題
Studentというクラスを作成し、NameとAgeのprivateフィールドを定義してください。プロパティを使ってこれらのフィールドをカプセル化し、年齢が常に正の値になるようにしてください。例:
using System;
class Student {
private string name;
private int age;
public string Name {
get { return name; }
set { name = value; }
}
public int Age {
get { return age; }
set {
if (value > 0) {
age = value;
} else {
Console.WriteLine("Age must be positive.");
}
}
}
}
class Program {
static void Main() {
Student student = new Student();
student.Name = "Alice";
student.Age = 20;
Console.WriteLine("Name: " + student.Name);
Console.WriteLine("Age: " + student.Age);
}
}
カプセル化のベストプラクティス
カプセル化のベストプラクティス
ベストプラクティスを紹介します:
- 機密性の高いデータには、常にprivateフィールドを使用してください。
- プロパティやメソッドを使って、フィールドへのアクセスを検証および制御してください。
- カプセル化とアクセス修飾子を組み合わせて、コードを保護してください。
ヒント: カプセル化は、安全で保守しやすいアプリケーションの構築に役立ちます。
よくできました!
よくできました!
おめでとうございます!カプセル化とアクセス修飾子を使って、データを保護し整理する方法を学びました。次のレッスンでは、継承について学び、コードを効率的に再利用する方法を見ていきます。引き続きコーディングに取り組みましょう!

よくある質問
「カプセル化とアクセス修飾子」レッスンは無料ですか?
はい。「カプセル化とアクセス修飾子」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全7レッスンが含まれています。
「カプセル化とアクセス修飾子」で何を学びますか?
カプセル化によるデータ保護と、アクセス修飾子による公開範囲の制御を学びます ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン5/7です。
「カプセル化とアクセス修飾子」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- オブジェクト指向プログラミングとは
- クラスとオブジェクトを定義する
- プロパティとメソッドを理解する
- C#のコンストラクター
- カプセル化とアクセス修飾子
- 継承:コードを再利用する
- ポリモーフィズムとメソッドのオーバーライド