設計ドキュメント - クラス図
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記法で記述されています。