@startuml ' ======================== ' CLASS: Server ' ======================== class Server { - _port : int - _password : string - _clients : List - _server_fd : int + showInfo() : void + getPort() : int + start() : void } ' ======================== ' CLASS: Client ' ======================== class Client { - _id : int - _name : string - _registered : bool - _channels : List - _banned : List + getId() : int + getName() : string + isRegistered() : bool + joinChannel(channel : Channel) : void + leaveChannel(channel : Channel) : void + sendMessage(to : Client, message : string) : void } ' ======================== ' CLASS: Channel ' ======================== class Channel { - _name : string - _password : string - _owner : Client - _operators : List - _socket_id : int - _topic : string + getName() : string + setTopic(newTopic : string) : void + addOperator(client : Client) : void + removeOperator(client : Client) : void } ' ======================== ' CLASS: Commandes ' ======================== class Commandes { - _form_user : Client - _to_user : Client - _channel : Channel + MODE() : void + KICK() : void + INVITE() : void + TOPIC() : void + JOIN() : void + PRIVMSG() : void + LIST() : void + PASS() : void + NICK() : void + USERNAME() : void } ' ======================== ' CLASS: Parser ' ======================== class Parser { - _port : int - _password : string - _valid : bool - _errorMsg : string + Parser(argc : int, argv : char**) + isValid() : bool + getPort() : int + getPassword() : string + getErrorMsg() : string } ' ======================== ' RELATIONS ' ======================== Server "1" o-- "*" Client : _clients Client "1" o-- "*" Channel : _channels Channel "1" *-- "1" Client : _owner Channel "1" o-- "*" Client : _operators main ..> Parser : uses @enduml