Epic issue: Создание controller
Opened this issue · 3 comments
-
Добавить в пакет sqlcmd пакет controller
-
В пакете controller добавить класс MainController
-
У MainController должен быть конструктор, который на вход принимает абстракции/интерфейсы View и DatabaseManager
-
В классе MainController реализовать приватный метод void connectToDb(), который будет удовлетворять следующим Userstories:
[Подключение к базе] Я как ЮЗЕР хочу подключиться к существующей базе данных и вносить в нее правки
В коде контроллера использовать только абстракции View и DatabaseManager! Никаких реализаций!
а) [успешно подключились] я вижу приветствие от программы -> я ввожу имя базы, юзер, пароль -> я вижу сообщение что все ок (подключение успешно) -> PROFIT
б) [неправильный пароль] я вижу приветствие от программы -> я ввожу имя базы, юзер, пароль (не верный) -> я вижу сообщение, что пароль не правильный -> я вижу поле для повторного ввода пароля -> я ввожу его (правильный) -> подключение успешно -> ПРОФИТ
в) [несуществующая база] приветствие -> ввожу имя несуществующей базы c какими-то логином и паролем -> вижу что базы не существует -> повторное поле ввода -> ввожу все правильно -> подключился
г) [несуществующий пользователь]
-
В класс MainController добавить метод public void run() из которого будет вызываться метод connectToDb()
-
В пакете controller добавить класс Main, который будет точкой входа проекта, то есть должен содержать метод public static void main()
-
В методе main():
а) создать объекты-реализации интерфейсов View и DatabaseManager
б) создать объект MainController и передать в его конструтор объекты-реализации View и DatabaseManager
в) у созданного объекта MainController вызвать метод run() -
Убедиться, что приложение удовлетворяет требованиям описанным Userstories в п.4
Поздравляю! Только, что в своем проекте ты применил один из важнейших принципов ООП - DIP (Dependency Inversion Principle). Обязательно почитай о нем и разберись. Вот тебе ссылка на википедию :)
Надо продумать реализацию метода run.
Пока не понятно, что он должен делать кроме как подключаться при запуске .
@danilkuznetsov ну, как раз для начала этого и достаточно, по-моему... Эта таска просто выдает костяк для следующего уровня - работы с командами. После ее выполнения, у нас уже будет класс Main, который будет точкой входа, он вообще по идее уже изменений терпеть не будет, а MainController со своим методом run() затем плавно переходит в задание по командам. Ну, это я так вижу...
Добавил еще в таску важну строку:
В коде контроллера использовать только абстракции View и DatabaseManager! Никаких реализаций!
Может уточнить еще глубже "В коде контроллера использовать только переменные экземпляра MainController, инициализированные в конструкторе"?