JujaLabs / sqlcmd

0 stars 5 forks source link

Epic issue: Создание controller #114

Open Shtramak opened 6 years ago

Shtramak commented 6 years ago
  1. Добавить в пакет sqlcmd пакет controller

  2. В пакете controller добавить класс MainController

  3. У MainController должен быть конструктор, который на вход принимает абстракции/интерфейсы View и DatabaseManager

  4. В классе MainController реализовать приватный метод void connectToDb(), который будет удовлетворять следующим Userstories:

[Подключение к базе] Я как ЮЗЕР хочу подключиться к существующей базе данных и вносить в нее правки

В коде контроллера использовать только абстракции View и DatabaseManager! Никаких реализаций!

а) [успешно подключились] я вижу приветствие от программы -> я ввожу имя базы, юзер, пароль -> я вижу сообщение что все ок (подключение успешно) -> PROFIT б) [неправильный пароль] я вижу приветствие от программы -> я ввожу имя базы, юзер, пароль (не верный) -> я вижу сообщение, что пароль не правильный -> я вижу поле для повторного ввода пароля -> я ввожу его (правильный) -> подключение успешно -> ПРОФИТ в) [несуществующая база] приветствие -> ввожу имя несуществующей базы c какими-то логином и паролем -> вижу что базы не существует -> повторное поле ввода -> ввожу все правильно -> подключился г) [несуществующий пользователь]

  1. В класс MainController добавить метод public void run() из которого будет вызываться метод connectToDb()

  2. В пакете controller добавить класс Main, который будет точкой входа проекта, то есть должен содержать метод public static void main()

  3. В методе main(): а) создать объекты-реализации интерфейсов View и DatabaseManager б) создать объект MainController и передать в его конструтор объекты-реализации View и DatabaseManager в) у созданного объекта MainController вызвать метод run()

  4. Убедиться, что приложение удовлетворяет требованиям описанным Userstories в п.4

Поздравляю! Только, что в своем проекте ты применил один из важнейших принципов ООП - DIP (Dependency Inversion Principle). Обязательно почитай о нем и разберись. Вот тебе ссылка на википедию :)

danilkuznetsov commented 6 years ago

Надо продумать реализацию метода run. Пока не понятно, что он должен делать кроме как подключаться при запуске .

Shtramak commented 6 years ago

@danilkuznetsov ну, как раз для начала этого и достаточно, по-моему... Эта таска просто выдает костяк для следующего уровня - работы с командами. После ее выполнения, у нас уже будет класс Main, который будет точкой входа, он вообще по идее уже изменений терпеть не будет, а MainController со своим методом run() затем плавно переходит в задание по командам. Ну, это я так вижу... Добавил еще в таску важну строку: В коде контроллера использовать только абстракции View и DatabaseManager! Никаких реализаций!

ivshapovalov commented 6 years ago

Может уточнить еще глубже "В коде контроллера использовать только переменные экземпляра MainController, инициализированные в конструкторе"?