C#上級

上級 C#で学ぶイベント駆動設計|練習問題編

導入

イベント駆動設計は、ユーザーインターフェースやリアルタイムシステムにおいて非常に重要な技術です。特にC#のようなオブジェクト指向言語では、イベントとデリゲートの概念を活用することで、柔軟で拡張性の高いアプリケーションを構築できます。この記事では、特定のシチュエーションを通じてイベント駆動設計の実践的な側面に焦点を当て、練習問題を通じて理解を深めていきます。

教科書レベルの解説(イベント駆動設計)

重要な概念の整理

イベント駆動設計では、アプリケーションの状態やユーザーのアクションに応じて、特定の処理を実行する仕組みを構築します。C#では、イベントを発生させるオブジェクト(発行者)と、イベントを受け取るオブジェクト(リスナー)との間でデリゲートを使用して通信を行います。この設計パターンは、特にGUIアプリケーションやゲーム開発において、ユーザーの操作に対する応答を効率的に管理するために役立ちます。

コード例(C#)


using System;

public class Button
{
    public event Action Clicked;

    public void Click()
    {
        Clicked?.Invoke();
    }
}

public class Program
{
    public static void Main()
    {
        Button button = new Button();
        button.Clicked += () => Console.WriteLine("Button was clicked!");

        // Simulating a button click
        button.Click();
    }
}

コードの行ごとの解説

  1. using System; – 必要な名前空間をインポートします。
  2. public class Button – ボタンを表すクラスを定義します。
  3. public event Action Clicked; – ボタンがクリックされた際に発生するイベントを定義します。
  4. public void Click() – ボタンがクリックされたことをシミュレートするメソッドです。
  5. Clicked?.Invoke(); – イベントが登録されている場合に、イベントを発生させます。
  6. public class Program – メインプログラムを定義します。
  7. button.Clicked += () => Console.WriteLine(“Button was clicked!”); – ボタンがクリックされた時の処理を定義します。
  8. button.Click(); – ボタンのクリックをシミュレートします。

練習問題編

以下の練習問題を解くことで、イベント駆動設計の理解を深めてください。

  1. 問題1: 上記のコードに新しいイベント「Hovered」を追加し、マウスオーバー時にメッセージを表示するように実装してください。
  2. 問題2: ボタンのクリック回数をカウントする機能を追加し、クリックされた回数を表示するように修正してください。
  3. 問題3: 複数のボタンを作成し、各ボタンがクリックされた際に異なるメッセージを表示するようにしてください。

まとめ

  • イベント駆動設計は、ユーザーのアクションに応じてアプリケーションの動作を制御するための強力な手法です。
  • C#のデリゲートとイベントを活用することで、柔軟かつメンテナンスしやすいコードを書くことが可能です。