Таким образом, для SMTP-сервера есть упражнения.
Определите класс для каждой из команд [HELO, MAIL FROM, RCPT TO, DATA]. Эти классы должны быть неизменными и поэтому должны принимать все параметры, необходимые для построения команды в конструкторе. Кроме того, создайте класс SMTPServer, который имеет функцию send(), которая возвращает void и перегружается четыре раза, по одному для каждой команды.
У меня есть хорошая идея о том, какая функция перегрузки, однако я не совсем понимаю некоторые части:
1) как функция перегрузки фактически работает над многими классами? Должен ли я привлекать наследование?
2) Зачем беспокоиться о создании функции send() в SMTPServer? Я предполагаю, что все, что необходимо, - создать экземпляр каждой команды в главном и отправить то, что требуется.
Sidenote: Команды следующие:
1) Нет, вы не наследуете наследование - они просят вас перегрузить функцию send
члена класса SMTPServer
чтобы каждый из них мог взять другой класс команды в качестве параметра:
void SMTPServer::send(HELO command);
void SMTPServer::send(MAIL_FROM command);
void SMTPServer::send(RCPT_TO command);
void SMTPServer::send(DATA command);
2) Так как это работает ООП - вы инкапсулируете каждую ответственность вашей программы в класс (принцип единой ответственности). В этом конкретном случае SMTPServer отвечает за передачу команд. Работа main
просто настроить различные объекты и вызвать их функцию, чтобы сделать фактическую работу вашей программы.