Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
116 / 115 / 64
Регистрация: 03.06.2013
Сообщений: 582

Инкапсуляция или как правильно отделить логику

11.03.2016, 00:42. Показов 1493. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю проект в WPF(но это не важно). Вопрос таков: может ли класс где обработчики всех событий формы, иметь переменную(другой класс, в котором содержится логика), а потом при загрузке страницы инициализировать эту переменную и использовать в коде. Приведу пример:

Это класс формы и тут он получает переменную типа CurrentWeather ну и потом обращается к свойствам этого класса и заполняет нужные текстовые контролы на форме. Правильно ли это с точки зрения разделения логики? Если делать иначе, то тогда нужно какому то классу передавать в каком-то методе имя контрола, а
это тоже как-то не ахти.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   
public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            
        }
 
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            CurrentWeather currentWeather = CurrentWeather.GetCurrentWeather("Dnipropetrovs'k", "Ukraine");
            city.Content = currentWeather.City;
        }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.03.2016, 00:42
Ответы с готовыми решениями:

Как правильно отделить логику от вида
Есть таблица в БД состоящая из четырех столбцов н.п. ID SURNAME NAME PHONE 1 Петров Петя 1111 2 Иванов Вова 2222 ...

Как отделить бизнес логику от UI ?
У меня бизнес логика перемешена с UI. Как отделить бизнес логику в отдельный класс, экземпляр которого может генерировать значения больше и...

Как правильно отделить пакет библиотеки от тестов?
Поделитесь, пожалуйста, опытом: кто как организует проект с тестами? Пока пишу тесты прямо в коде и запускаю их из main. Но скоро...

3
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
11.03.2016, 00:45
MaxSlim, я бы просто сделал контрол например WeatherControl, и вместо City (это грид или еще что?) просто ставил бы этот контрол. Вообще в программировании редко бывает проблема с малым количеством уровней абстракции, обычно наоборот, непонятно, откуда управление пришло и куда ушло
1
116 / 115 / 64
Регистрация: 03.06.2013
Сообщений: 582
11.03.2016, 01:29  [ТС]
Psilon, да, я тоже создал WeatherManager только пока думаю куда его приктнуть. city.Content - это лейбл обычный и их там по форме дофига и больше. ЧТо значит ставили этот контрол, я же не динамически его создаю, он уже имеется на форме, я просто не могу понять в каком месте в коде нужно присваивать свойсвтам контролов, свойства других классов. Я в курсе о привязке и о шаблонах данных, но пока хотелось бы сделать проще.

Добавлено через 11 минут
Psilon, еще вопро не по теме, я уверен вы наверняка сталкивались, можно ли вывести юникод в label? Хочется такую стречоку вывести с кодом \u2b71 , но в результате имею только квадратик(
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
11.03.2016, 10:05
MaxSlim, можно, конечно, квадратик будет разве что в консоли. Хотя если лейбл нестандартный, то уже хз

Если City.Content это просто строка, то ничего особо менять не нужно хз. Если бы это была сложная логика, можно было бы вынести в контрол.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2016, 10:05
Помогаю со студенческими работами здесь

Как правильно переписать логику OnInput?
Здравствуйте. Есть логика в OnInput, нужно оставить первый INPUT и вместо оставшиеся двух инпутов выводить значения которые считаются в...

Как правильно реализовать логику программы?
Здравствуйте! Хочу реализовать такую логику программы: телефон - стартовая активность А -> активность Б и т. д.; планшет: стартовая...

Symfony 2: как правильно организовать бизнес-логику?
Всем привет! Вот я недавно начал один проект на Symfony 2 и сразу же столкнулся одной проблемой - организацией бизнес-логики. Например, у...

Как правильно составить логику приложения (игра)?
Народ, выручайте советом! Я снова застрял на очередной задаче... Вот текст: Я застрял на этапе структурирования приложения....

Игра "Лабиринт". Отделить логику от интерфейса
Привет всем, извините за возможно глупый вопрос, но что значит отделить логику от интерфейса. Пишу игру лабиринт, компьютер должен найти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере 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-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru