@startuml ' ======================== ' CLASS: Server ' ======================== class Server { - _port : int - _password : string - _users : List - _server_fd : int - _state_msg : std::pair - _pollManager : PollManager + showInfo() : void + getPort() : int + start() : void } ' ======================== ' CLASS: User ' ======================== class User { - _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 : User, message : string) : void } ' ======================== ' CLASS: Channel ' ======================== class Channel { - _name : string - _password : string - _owner : User - _operators : List - _socket_id : int - _topic : string + getName() : string + setTopic(newTopic : string) : void + addOperator(User : User) : void + removeOperator(User : User) : void } ' ======================== ' CLASS: Commandes ' ======================== class Commandes { - _form_user : User - _to_user : User - _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 } ' ======================== ' CLASS: PollManager ' ======================== class PollManager { - _fds : vector - _fd_events : map + addFd(fd : int, events : short) : void + removeFd(fd : int) : void + updateFd(fd : int, events : short) : void + pollEvents(timeout : int) : int + getFds() : vector } ' ======================== ' RELATIONS ' ======================== Server "1" o-- "*" User : _users User "1" o-- "*" Channel : _channels Channel "1" *-- "1" User : _owner Channel "1" o-- "*" User : _operators main ..> Parser : uses Server "1" *-- "1" PollManager : pollManager @enduml