Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2015, 00:07   #1
Progr_mmer
Новичок
Джуниор
 
Регистрация: 23.08.2015
Сообщений: 1
Стрелка Классы в C#

Подскажите пожалуйста как правильно передать данные в другой класс для обработки в данном случае?

Код:
namespace Карточка_студента_3
{
    public partial class StudentCard : Form
    {
        public StudentCard()
        {
            InitializeComponent();
        }
 
private void saverButton_Click(object sender, EventArgs e) // кнопка "сохранить"
        {
            StudentData data = new StudentData();
            data.secondName = family.Text;
            data.name = name.Text;
            data.patronymic = patronymic.Text;
            data.course = comboKurs.Text;
            data.group = comboGroup.Text;
            data.number = number.Text;
            data.scholarship = comboScholarship.Text;
 
            if (createOrChange == false)
                data.CreateFile();
            else
                data.ChangeFile(filePath);
        }
}
}
В этот класс...

Код:
namespace Карточка_студента_3
{
    class StudentData
    {
        string newFilePath = "";
        public string filePath;
        public string secondName;
        public string name;
        public string patronymic;
        public string course;
        public string group;
        public string number;
        public string scholarship;
        const string slash = "\\";
        const string space = " ";
        const string pt = ".";
        public const string fileExtension = ".txt";
 
 
 
 
 
        
 
        private void CreatePath()
        { 
          newFilePath = course + slash + group + slash + secondName;
            if (name != null)
            {
               newFilePath += space + name;
                if (patronymic != null)
                {
                    newFilePath += pt + patronymic;
                }
            }
            if (File.Exists(newFilePath))
            {
                int p;
                for (p = 2; ; p++)
                {
                    filePath = newFilePath + "(" + p + ")";
                    if (File.Exists(filePath + fileExtension))
                        continue;
                    else
                        break;
                }
            }
            else
                filePath = newFilePath;
            }
        
 
        private void CreateNewFile()
        {
            StreamWriter sw = File.CreateText(filePath + fileExtension);
            sw.WriteLine(secondName);
            sw.WriteLine(name);
            sw.WriteLine(patronymic);
            sw.WriteLine(course);
            sw.WriteLine(group);
            sw.WriteLine(number);
            sw.WriteLine(scholarship);
            sw.Close();
            sw.Dispose();
        }
 
        public void CreateFile()
        {
            CreatePath();
            CreateNewFile();
        }
        public void ChangeFile(string path)
        {
            DeleteFile(path);
            CreateFile();
        }
 
        public void DeleteFile(string path)
        {
            File.Delete(path);
        }
 
 
 
    }
}
Буду очень благодарен.
Progr_mmer вне форума Ответить с цитированием
Старый 24.08.2015, 01:18   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,603
По умолчанию

Есть следующие способы:
1. сокеты (sockets)
2. трубки (pipes)
3. сообщения (messages)

В профессиональных программах делается специальный класс "сообщение" (Message), "событие" (Event), "СлушательСобытий" (EventListener), "МенеджерСообщений" (MessageManager), "МенеджерСобытий" (EventManager.) Используется паттерн абстрактная фабрика (AbstractFactory). Создается класс Event, при срабатывании события передается сообщение от класса к классу. Разбираться надо с паттернами проектирования.

1. .NET и паттерны проектирования ( http://habrahabr.ru/post/191934/ )
2. Паттерны проектирования на платформе .NET ( http://habrahabr.ru/company/piter/blog/257721/ )
3. Осваиваем паттерны проектирования на C#. Часть 1 http://www.osp.ru/pcworld/2009/10/10685763/
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 24.08.2015, 07:38   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
правильно передать данные в другой класс для обработки в данном случае?
Какие именно данные? Упакуй их в словарь, сделай в Карточка_студента_3 какое-то свойство или метод, и присвой ему упакованное.
Код:
namespace Карточка_студента_3
{
    public partial class StudentCard : Form
    {
        public StudentCard()
        {
            InitializeComponent();
        }
 
   public Dictionary<string,string> Migrate()
        {
               Dictionary<string,string> d=new Dictionary<string,string>();
               d.Add("name","Ivanofu");
               ...
               return d;
        }
    }
...
    class StudentData
    {
        string newFilePath = "";
        public string filePath;
        public string secondName;
        public string name;
        public string patronymic;
        public string course;
        public string group;
        public string number;
        public string scholarship;
        const string slash = "\\";
        const string space = " ";
        const string pt = ".";
        public const string fileExtension = ".txt";
   public  Migrate(Dictionary<string,string> d)
        {
               
               name=d["name"];
               ...
        }
    }

}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.08.2015, 11:00   #4
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

1) поля спрячь в private и напиши "православные" set/get
2) я бы и флаг замены файла сделал полем, чтоб сам целевой объект решал что вызывать
3) один метод execute вместо двух createFile (следствие п.2)
4) если идти в дебри, то тут отлично будет выглядеть fluent-интерфейс ( data.secondName(.....).Name(....) и т.д. )
5) более дебристые дебри - fluent-builder... вводится класс с fluent-интерфейсом, который сначала принимает данные, проводит их валидацию, а потом создаёт заполненный объект типа StudentData

думаю, что 1, 2 и 3 тебе хватит вполне, а 4 и 5 нужны крайне редко
GreenWizard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
классы CppForYou Общие вопросы C/C++ 2 28.05.2013 17:21
Классы Sergey240892 Помощь студентам 18 30.05.2011 19:06
Классы... datileo Общие вопросы C/C++ 3 13.05.2011 20:38