|
29 / 1 / 0
Регистрация: 25.02.2020
Сообщений: 82
|
|
Архитектура консольного калькулятора26.08.2021, 06:02. Показов 2621. Ответов 9
Доброго времени суток!
Подскажите, как будет правильно? Поясню, с точки зрения архитектуры, в модели, мы располагаем данные и основную логику программы. Следовательно, блок с набором команд нужно разместить в модели. Или, все-таки Command оставить отдельно? Может быть этот блок вообще вынести в отельную библиотеку? p.s. не обращайте внимания на то что это WPF, код будет перенесен в консоль
0
|
|
| 26.08.2021, 06:02 | |
|
Ответы с готовыми решениями:
9
Прошу покритиковать код моего консольного калькулятора Создание консольного калькулятора Создание консольного калькулятора |
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
||
| 26.08.2021, 09:22 | ||
|
m054, ICommand - это интерфейс для биндинга действия кнопки на какую то команду в mvvm. Вам в консоли они вообще не нужны, ибо нечего биндить. Вам больше подойдет классический mvc без всяких биндингов.
Добавлено через 5 минут Вообще, если у вас не задание на архитектурные шаблоны, то будет достаточно сделать класс Calculator со всеми операциями и вызывать его прямо из консоли.
0
|
||
|
50 / 24 / 8
Регистрация: 11.08.2020
Сообщений: 98
|
|
| 26.08.2021, 10:00 | |
|
Не думаю, что тут модель вообще нужна. Мне сложно представить какие модели данных могут понадобиться для калькулятора (конечно могу быть и не прав).
Модель должна описывать какую-либо сущность. К примеру у прямоугольника есть длина и ширина, получится класс Rectangle с полями length и width. Так же модель может содержать обработку своих данных, вроде получения площади. А деление площади на пополам уже к модели относиться не может. Так и тут обработчики команд запихивать в папку Models будет неправильно.
0
|
|
|
|
|
| 26.08.2021, 13:58 | |
|
Rosgard, ваша модель и есть некий класс "Calculator", в котором заключается вся логика обсчета (т.н. бизнес-логика). Этот класс не должен зависеть от типа программы: консоль или винформ, т.е. должен работать везде.
В качестве интерфейса в данном случае выступает консоль. Это будет типа "View". Она должна уметь работать с моделью, т.е. с вашим классом "Calculator": вводить данные и выводить результат операций.
1
|
|
|
50 / 24 / 8
Регистрация: 11.08.2020
Сообщений: 98
|
|
| 26.08.2021, 14:08 | |
|
wizard41, это не модель, а бэкэнд. Я говорю про MVVM, MVC и т.д.
0
|
|
|
50 / 24 / 8
Регистрация: 11.08.2020
Сообщений: 98
|
|
| 26.08.2021, 14:44 | |
|
wizard41, вот к словам придираться не обязательно. И так понятно, что имелась в виду архитектура в целом, независимо от названия и технологий, в которых она применима.
В своем сообщении вы попытались объединить модель данных и логику работы с ней, назвав это все моделью. Это тоже самое, что объединить model и viewModel в mvvm, или model и controller в mvc. Калькулятор слишком прост, чтобы писать его используя архитектурные шаблоны. Но даже так логика работы приложения не может называться моделью, если она не производит работу с данными этой модели, которые содержатся в полях и/или свойствах.
0
|
|
|
|
|||
| 26.08.2021, 15:29 | |||
|
Добавлено через 6 минут Ваш класс - это модель. Сделайте еще прослойку типа контроллера - в нем проверяйте корректность ввода чисел. Сделайте "view" с двумя методами, собсно Console.ReadLine и Console.Write.Не важно каким образом будут вводиться и выводится данные; ваш класс (модель) должен уметь обрабатывать их везде.
1
|
|||
|
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
|
||||||
| 27.08.2021, 14:01 | ||||||
|
MVC:
0
|
||||||
|
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
|
||||||||||||||||
| 29.08.2021, 20:09 | ||||||||||||||||
|
Для развития навыков как-то решил написать калькулятор а-ля БЛОКНОТ. В результате появилось такое решение:
Calculate.cs
Program.cs
Не по теме:
Добавлено через 19 минут Применять так:
0
|
||||||||||||||||
| 29.08.2021, 20:09 | |
|
Помогаю со студенческими работами здесь
10
Написание консольного строкового калькулятора Создание консольного валютного калькулятора
Оцените, пожалуйста, качество кода разговаривающего консольного калькулятора В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|