С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157

О форме и расчётах

09.09.2011, 11:17. Показов 1008. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот возник вопрос.
Допустим мы хотим создать программу, производящую расчёт чего-либо(пусть это будут двигатели они мне ближе). Так вот мы создаём формочку, на которую бросаем кнопочки, текстбохы, панели для отображения графиков и т.п. Для отображения работы формы используется файл Form1.cs(если форму не переименовываем), в котором и происходит обработка всех событий.
А вот сам расчёт где делается?
Т.е. я бы сделал весь расчёт прямо в этом же файле, но как я понял такой подход неверен или скажем так некультурен. Где бы вы описали такой расчёт???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2011, 11:17
Ответы с готовыми решениями:

Как сделать, чтобы после "выпадения" предмета во 2 форме - в 1 форме этот предмет добавлялся в некий массив?
всем доброго времени суток! Делаю небольшую прогу: ее часть - "открытие кейсов"). так вот, у меня есть 2 формы: 1 - главная, 2 -...

Ошибка в расчётах.
Помогите разобраться в чём ошибка программы. Необходимо произвести расчёты на основе вводимых данных Если вводить через переменные ...

Ошибка в расчётах ATMega 8515
Ошибка в расчётах ATMiko 8515 Здравствуйте! У меня возникла проблема с данным МК, дело в том, что при попытке реализации кодера (в...

10
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
09.09.2011, 11:21
Можно создать отдельный класс. Проект - Добавить класс. И в нём реализовать все нужные методы. например создать класс Engine, в котором сделать private-переменные типа Колесо, цепь, вал. И сделать открытые методы типа ПолучитьКПД(), которые будут возвращать значения. Кроме того, класс можно сделать статическим, если нет необходимости в нескольких экземплярах.
А в форме вызываем уже эти методы и выводим в форме результаты.
C#
1
textBox1.Text = Engine.GetKPD(a, b, c);
1
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
09.09.2011, 11:23
ну раз вы так нежелаете делать расчеты в том же файле (я думаю вы имеете в виду класса), но можете вынести все это в отдельный класс... а ещё лучше, раз уж вы хотите сделать всё красиво и гибко, то используйте паттерн MVC
0
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
09.09.2011, 13:49  [ТС]
создал файл(через add/class), назвал его Solut, в нём реализую метод void execute(массив принимаемый, массив выдаваемый), выполняющий некоторый расчёт.
По нажатию клавиши в классе Form1(правильно сказал??) должен вызываться этот метод, т.е. могу ли я просто (как раньше) написать:
C#
1
2
3
4
private button1_click()
{
execute(array1,array2)
}
array1,array2 - массивы, допустим, получаемые из .txt файла.
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
09.09.2011, 13:53
да, верно всё, но если вы хотите чтобы у вас второй массив изменялся (ну тоесть если нужно взять первый массив, обработать его и результат закинуть во второй массив), то лучше написать метод таким образом, чтобы второй массив передавался по ссылке:
C#
1
2
3
void Execute(someType[] array1, ref someType[] array2){
   //....
}
либо так:
C#
1
2
3
someType[] Execute(someType[] array){
   //...
}
0
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
09.09.2011, 14:02  [ТС]
Виноват, что забыл пояснить.
Выполнив всё то, что было в предыдущем посте, студия выдаёт ошибку вида:

An object reference is required for the non-static field, method, or property 'interpol2.Solut.Execute(double[], double[], int, int, double)'
0
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
09.09.2011, 14:15
.Lexx., пометь свой класс как static (если тебе не надо создавать экземпляры этого класса) и методы в нём тоже делай статическими.
1
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
09.09.2011, 14:34  [ТС]
Да действительно пошло, но тогда я не понимаю немного. Почему добавление static так подействовало?О_о
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
09.09.2011, 14:39
если вы делаете обычное поле (не static), то для того чтобы вызвать этот метод вам нужно создать объект этого класса и тогда уже сможете вызвать этот метод. если же метод объявлен как static, то вы можете его вызывать используя класс - тоесть пишете Имя класса, точку и потом имя метода
читайте ООП
1
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
09.09.2011, 15:19  [ТС]
ох, блин, точняк, спасибо)
Читаю Шилдта, слушаю лекции и всё равно понятнее становится, когда читаю посты тут))

Попробовал оба варианта реализации, оба работают, пойду ещё разок прошвырнусь по описанию)))

Добавлено через 21 минуту
Не воткнул в одно:
статические поля, методы и классы - это, как бы сказать, некое подобие констант, которые мы используя объекты, менять не можем.
а второй вариант и есть ООП
Для каких "случаев жизни" какой из вариантов лучше использовать. Т.е. например у меня работают оба варианта, тогда какой лучше и почему.

Также хотел спросить:
когда говорят библиотеки, dll и всё такое имеется в виду именно подключаемые модули потипу классов да?(ну т.е. в моём варианте я подключил файл-класс, в котором содержался расчёт )
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
09.09.2011, 15:24
Цитата Сообщение от .Lexx. Посмотреть сообщение
огда говорят библиотеки, dll и всё такое имеется в виду именно подключаемые модули потипу классов да?
ымэнно!

Цитата Сообщение от .Lexx. Посмотреть сообщение
Для каких "случаев жизни" какой из вариантов лучше использовать.
нестатические методы обычно используются когда в методе могут использоваться некие значения полей конкретного объекта
статическим метод можно сделать когда не требуется участия самого объекта в процессе исполнения метода - когда не используются значения свойств какого-то объекта
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2011, 15:24
Помогаю со студенческими работами здесь

Ошибки в расчётах на больших циклах
Только начал изучать CUDA. При использовании больших циклов в потоке постоянно вылетает ошибка 4(cudaErrorLaunchFailure) или...

Взаимодействие форм при расчётах
Всем доброе утро. Прошу помощи. Есть 3-одинаковые формы, но в двух прописаны разные расчёты (к примеру: способ1 и способ2), вопрос в том...

Возможность учёта цвета числа в расчётах
В столбце находятся числа разного цвета (черного и зеленого) необходимо в отдельную ячейку сложить числа зелёного цвета, если это возможно...

Использование формулы, выбранной из списка формул в расчётах
Добрый день.Помогите, пожалуйста, решить задачку. Есть две таблицы: Таблица с формулам "Список Формул" . У каждой формулы...

Помощь в нахождении ошибки в расчётах (параметры цикла)
Помочь найти ошибку в расчётах... Дан мне цикл. При нахождении различных параметров для процессов, (для точек я нашла, построила...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru