Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > вопрос по методам класса


Автор: motorway 3.9.2008, 20:15
Допустим, есть класс SomeClass с переменными a,b...;

И нужно сделать некоторый метод Method ()
{
//делаем что-то с a,b...и, возможно, с другими переменными

}

Где лучше делать этот метод (как обычно делают в хороших программах) - в самом классе или в основном классе Form1, при этом добавляя параметр с типом этого класса: Method (SomeClass sc)?
Тогда можно будет вызывать его из Form1 двумя способами: или obj.Method(), или Method(Someclass obj);

Также вопрос:
Если в классе есть некий массив, то как лучше делать: создать у класса метод для изменения массива, и далее вызывать из Form1 obj.Method(), или просто сделать obj.Array[num]=value?

Вроде проще напрямую изменять массив, чем придумывать методы.

Или это все равно как?

Автор: Angelius 5.9.2008, 12:19
Цитата

Тогда можно будет вызывать его из Form1 двумя способами: или obj.Method(), или Method(Someclass obj);

Вообще-то все зависит от ситуации, иногда лучше одно, а иногда другое, но в большинстве случаев это нужно делать первым способом (т.е. obj.Method()), тем более если в этом методе вы работаете напрямую с переменными, а не со свойствами, которые относятся к этим переменным.
 Вообще нужно делать так, чтобы при замене класса Someclass в основном классе практически ничего не нужно было менять. А если вы начнете методы всех классов реализовывать в основном классе, то это уже будет свалка, в которой будет трудно что-либо найти!

ЗЫ Поправьте если что не так, сам недавно начал программировать smile 

Автор: taiven 5.9.2008, 14:00
Создавай класс, если у тебя есть несколько методов, которые ты можешь сгруппировать. Например, если у тебя есть пара методов Copy() и Paste(), то есть смысл создать для них класс CopyPaste smile 
Цитата

Если в классе есть некий массив, то как лучше делать: создать у класса метод для изменения массива, и далее вызывать из Form1 obj.Method(), или просто сделать obj.Array[num]=value?

Нет никакого смысла создавать метод специально, чтобы просто присвоить одному из элементов массива какое-то значение. Но если у тебя есть какие-то вычисления которые часто повторяются в программе и в которых участвуют элементы массива, то есть смысл создать метод вида Method(<тип> ArrayNum) в котором всё и реализуешь, а потом просто будешь вызывать метод когда это будет необходимо и передавать ему в качестве аргумента элемент массива.

Автор: Reaf 8.9.2008, 17:41
Цитата(motorway @  3.9.2008,  20:15 Найти цитируемый пост)
Где лучше делать этот метод (как обычно делают в хороших программах) - в самом классе или в основном классе Form1, при этом добавляя параметр с типом этого класса: Method (SomeClass sc)?

Если метод связан с интерфейсом и в других формах вряд ли будет применяться - то  в классе данной формы.
В других случаях - лучше создавать "ядро"

Автор: sobik 8.9.2008, 21:08
Если переменные нужны только локально, то лучше делать метод в классе(ну а сами переменные private), если же они возвращают какие то значения, то лучше внешний метод. А вообще, как было правильно сказано, нужно смотреть по ситуации. Для одного метода целый клас писать не стоит, вопросы быстодействия никто не отменял.

Автор: Dennnis 11.9.2008, 17:22
Цитата(motorway @  3.9.2008,  20:15 Найти цитируемый пост)
Допустим, есть класс SomeClass с переменными a,b...;

И нужно сделать некоторый метод Method ()
{
//делаем что-то с a,b...и, возможно, с другими переменными

}

Где лучше делать этот метод (как обычно делают в хороших программах) - в самом классе или в основном классе Form1, при этом добавляя параметр с типом этого класса: Method (SomeClass sc)?
Тогда можно будет вызывать его из Form1 двумя способами: или obj.Method(), или Method(Someclass obj);

100% в этом же классе. Так-же в "хороших программах" все переменные классе делают private. А доступ к ним осуществляется через public свойства и методы этого класса.

Цитата(motorway @  3.9.2008,  20:15 Найти цитируемый пост)
Также вопрос:
Если в классе есть некий массив, то как лучше делать: создать у класса метод для изменения массива, и далее вызывать из Form1 obj.Method(), или просто сделать obj.Array[num]=value?

100% создавать в классе методы для его изменения.

Автор: QryStaL 11.9.2008, 17:46
Цитата(Dennnis @  11.9.2008,  17:22 Найти цитируемый пост)
100% создавать в классе методы для его изменения.

Не обязательно, можно как вариант использовать индексатор.

Автор: Dennnis 11.9.2008, 18:00
Да индексатор можно, но вот так obj.Array[num]=value точно нельзя... в "правильной программе" smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)