Уважаемые знатоки, прошу воспринять вопрос со всей серьезностью, так как для меня он имеет фундаментальную значимость для понимания принципов ООП. Раньше передавал информацию с формы на форму используя публичные статические глобальные переменные. Однако это противоречит принципу инкапсуляции. После продолжительных поисков пришел к методу перегрузки стандартной функции-инициализации формы с параметрами или дописыванию параметров в этой функции.
Пример:
public Form2(string text)
{
InitializeComponent();
}
Но при дальнейшем углублении обнаружил, что если мне нужно будет создавать экземпляр класса, то при передаче его придется использовать только публичные поля. Осознав ошибку начал пользоваться сеттерами-сеттерами, конструктором и приватными полями.
Пример:
Класс:
public class User
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public User(string name)
{
Name = name;
}
}
Форма, с которой берутся данные:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
User user = new User(textBox1.Text);
form2.LoadText(user);
form2.Show();
}
}
Форма на которую передаются данные:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public void LoadText(User user)
{
textBox1.Text = user.Name;
}
}
Насколько я понимаю в рамках инкапсуляции поля у класса остаются приватными, а работа с экземпляром происходит строго в рамках конструктора. В свою очередь перенос данных происходит не через глобальные переменные, а через вызов функции, что тоже не должно выходить за рамки.
Во время одной из дискуссий на форуме прочитал комментарий, в котором было написано, что подобное использование экземпляра класса является нерациональным. Прошу подсказать является ли последняя представленная реализация корректной в рамках ООП, и если нет, то подскажите, в какую сторону копать.
P.S. Намеренно не использую MVC, так пока что боюсь подступать к ней без погружения в ООП. Поэтому прошу писать про него только в том случае, если это единственный выход.