Почитал про Sciter...
Если кто работал — поделитесь впечатлениями
Хочу использовать в курсовых для реализации интерфейса.
Ибо если Qt — то студенты начинаю лепить прогу сразу в дизайнере.
И лепят бизнес-код в классы интерфейса.
Нужно заставить их отделять реализацию бизнес-логики от реализации интерфейса.
Что скажете?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>... LVV>Ибо если Qt — то студенты начинаю лепить прогу сразу в дизайнере. LVV>И лепят бизнес-код в классы интерфейса. LVV>Нужно заставить их отделять реализацию бизнес-логики от реализации интерфейса. LVV>Что скажете?
Запретите им пользоваться виджетами, пусть делают весь GUI на QML (QtQuick). Очень простой синтаксис, и хочешь не хочешь — придётся разделять логику. Вот из этой темы
Здравствуйте, LaptevVV, Вы писали:
LVV>Нужно заставить их отделять реализацию бизнес-логики от реализации интерфейса. LVV>Что скажете?
Пусть реализуют попутно какой-то REST API и возможность стартовать как сервис, допустим. Это их вынудит выделить "движок" с бизнес-логикой, который можно стартовать как headless-сервис. А сам UI, например, уже есть заранее готовый (главное его сконфигурить на нужный порт локал-хоста).
Здравствуйте, LaptevVV, Вы писали:
LVV>Нужно заставить их отделять реализацию бизнес-логики от реализации интерфейса.
Зачем? Какая задача — такая и архитектура. Если мне надо посчитать 2+2, то городить из-за этого какие-то слои глупо. Надо им ставить такие задачи, где лапша из бизнес-логики и UI тупо неудобна.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, LaptevVV, Вы писали:
LVV>Почитал про Sciter... LVV>И лепят бизнес-код в классы интерфейса.
Вещь хорошая, но требует знания html и скупо документированная.
LVV>Нужно заставить их отделять реализацию бизнес-логики от реализации интерфейса. LVV>Что скажете?
К решению задачи отделения логики от реализации ортогонально.
Здравствуйте, LaptevVV, Вы писали:
LVV>Нужно заставить их отделять реализацию бизнес-логики от реализации интерфейса. LVV>Что скажете?
На самом деле полезно даже не в смысле архитектуры, а в том что HTML/CSS для UI practitioners нужно знать по любому.
Ну и понятие что UI code flow сильно отличается от линейного кода бизнес-логики.
Ничего конкретного так и не сказали.
А задлача моя простая.
ЗАСТАВИТЬ студентов отделять мух от котлет.
Ибо если все делается на С++, то ОЧЕНЬ немногие на 2 курсе понимают,
что интерфейс и бизнес-логика (какая бы она ни была) — это две БОЛЬШИЕ разницы.
При программировании в Qt многократно наблюдал реализацию ВСЕГО в классе mainwindow.
Устаешь постоянно с этим бороться.
Хочется, чтобы инструментарий просто не позволял такого подхода.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
... LVV>А задлача моя простая. LVV>ЗАСТАВИТЬ студентов отделять мух от котлет. LVV>Ибо если все делается на С++, то ОЧЕНЬ немногие на 2 курсе понимают, LVV>что интерфейс и бизнес-логика (какая бы она ни была) — это две БОЛЬШИЕ разницы. LVV>При программировании в Qt многократно наблюдал реализацию ВСЕГО в классе mainwindow. LVV>Устаешь постоянно с этим бороться.
Бороться — не надо!
А поставить задачу по типу:
Сделать единый набор классов (обозначим его как Core), реализующий определенную, заранее оговоренную, бизнес-логику.
Данный набор Core мы применим далее в виде двух приложений и теста:
1) Приложение с GUI (используй тот же Qt, STL, если надо — boost);
2) Приложение командной строки (используй STL, и при необходимости boost);
3) Дополнительно — сделать Unit-тест для проверки функционирования вышеупомянутого набора Core классов.
Для первого случая — сделаем "адаптер" (обозначим его как GUIProxy) — являющийся мостиком между GUI и бизнес логикой.
Для второго случая — сделеам простейшую обертку — для парсинга параметров командной строки.
А третий — обеспечить набор проверочных данных и запустить Unit-test.
Лично я, здесь бы применил boost — так как Qt уже применялось в процессе создания GUI версии приложения.
LVV>Хочется, чтобы инструментарий просто не позволял такого подхода.
Инструментарий может позволять многое. И должен позволять многое
Постановка ТЗ — должна поставить требуемые рамки.
P.S. Если есть желание сделать задачу ещё разнообразней и интересней —
можно предложить сделать кроссплатформенную реализацию: Linux (Ubuntu; Debian) и Windows
Здравствуйте, LaptevVV, Вы писали:
LVV>А про это кто чего скажет?
Есть миллион реактивных js-фрэймворков, но для их освоение требуется знание кучи всякой требухи, которая ни к архитектуре, ни к плюсам отношения не имеет. Зачем забивать себе и студням этим голову?
Правильное решение тебе уже сказали — заставь их делать CLI в дополнение к гуйне.
Здравствуйте, LaptevVV, Вы писали:
N>>Правильное решение тебе уже сказали — заставь их делать CLI в дополнение к гуйне. LVV>Стесняюсь просить: CLI — это что? https://en.wikipedia.org/wiki/Command-line_interface
Здравствуйте, LaptevVV, Вы писали:
LVV>А про это кто чего скажет?
Смотря для чего.
Vue и отец ея Angular это декларативный маппинг/биндинг DOM дерева на некую структуру данных (JSON).
Т.е. это можно изучать как пример предельной (ultimate) изоляции данных (model) от представления (view). ( В Sciter кстати есть аналогичный фреймворк — samples/+plus )
Понять особенности построения UI из этих фреймворков — сложно.
На самом деле я бы серьезно рекомендовал Sciter — там есть как native API к DOM и событиям так и параллельный механизм в скрипте.
Т.е. можно использовать как в курсе C++ так и в чем-то другом.
Освоив Sciter UI (HTML/CSS/DOM/script/native) можно заниматься как web frontend UI так и native UI.
Здравствуйте, c-smile, Вы писали:
... CS>Но если говорить про UI если не от сохи а от трактора, то надо смотреть MFC / wxWidgets или тот же QT. CS>Они все имплементируют изначальный IBM CUA : https://www.amazon.com/Object-Oriented-Interface-Design-Common-Guidelines/dp/1565291700
+100500
Только несколько примечаний:
MFC — достаточно старый фреймворк, не думаю что актуален для студентов в 2018
wxWidgets — специфическая штука (на любителя), также актуальность под вопросом
Qt — IMHO самое то, что надо!
Помнится, у нас был отдельный курс по разработке интерфейсоов.
Там элементы этого давались.
Есть ли сейчас — не в курсе. Давно в учебный план не лазил.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!