Skip to content

設計ドキュメント - クラス図

4. モジュール・クラス設計

ft_ircサーバーは、以下の主要なクラスとその関係性によって構成されています。これらのクラスは、IRCプロトコルの要件とC++98の制約の中で、役割分担と連携を考慮して設計されています。

4.1 主要クラスの概要

  • Server: シングルトンパターンを採用した、サーバーアプリケーション全体を統括するクラス。ネットワークI/Oの管理、クライアントとチャンネルのライフサイクル管理、コマンドディスパッチの調整を行います。
  • Client: サーバーに接続している個々のユーザーを表すクラス。ユーザーの認証状態、ニックネーム、ユーザー名、リアルネーム、送信・受信バッファ、および参加しているチャンネルの情報を保持します。
  • Channel: IRCチャンネルを表すクラス。チャンネル名、トピック、モード(例: +i (招待制), +k (キー), +l (リミット))、メンバーリスト、オペレーターリストなどを管理します。チャンネル内でのメッセージブロードキャスト機能を提供します。
  • CommandManager: クライアントから受信した生メッセージを解析し、適切なコマンド処理ロジックにディスパッチする役割を担います。コマンドパターンを採用しており、各IRCコマンドはICommandインターフェースを実装したクラスとして登録されます。
  • ICommand: 全てのIRCコマンドクラスが実装すべき抽象基底クラス(インターフェース)。execute純粋仮想関数を定義し、コマンド処理の統一されたインターフェースを提供します。

4.2 クラス図

以下は、ft_ircサーバーの主要なクラスとその関係性を示すクラス図です。Mermaid記法で記述されています。