0Pricing
C# Academy · レッスン

カプセル化とアクセス修飾子

カプセル化によるデータ保護と、アクセス修飾子による公開範囲の制御を学びます

「カプセル化とアクセス修飾子」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン5/7です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全7レッスンが含まれています。

カプセル化の概要

カプセル化とアクセス修飾子

次のレッスンへようこそ!このレッスンでは、OOPの重要な概念であるカプセル化と、C#でアクセス修飾子を使ってクラスメンバーの可視性を制御する方法について学びます。それでは始めましょう!

カプセル化とアクセス修飾子 — イラスト1

カプセル化とは

カプセル化とは

カプセル化とは、データ(フィールド)と振る舞い(メソッド)を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フィールドを使用してください。
  • プロパティやメソッドを使って、フィールドへのアクセスを検証および制御してください。
  • カプセル化とアクセス修飾子を組み合わせて、コードを保護してください。

ヒント: カプセル化は、安全で保守しやすいアプリケーションの構築に役立ちます。

よくできました!

よくできました!

おめでとうございます!カプセル化とアクセス修飾子を使って、データを保護し整理する方法を学びました。次のレッスンでは、継承について学び、コードを効率的に再利用する方法を見ていきます。引き続きコーディングに取り組みましょう!

カプセル化とアクセス修飾子 — イラスト10

よくある質問

「カプセル化とアクセス修飾子」レッスンは無料ですか?

はい。「カプセル化とアクセス修飾子」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. オブジェクト指向プログラミングとは
  2. クラスとオブジェクトを定義する
  3. プロパティとメソッドを理解する
  4. C#のコンストラクター
  5. カプセル化とアクセス修飾子
  6. 継承:コードを再利用する
  7. ポリモーフィズムとメソッドのオーバーライド
← C# Academyに戻る