Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Связь классов между собой (помогите разобраться) / 18 сообщений из 18, страница 1 из 1
04.10.2017, 12:02
    #39530665
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
Добрый день!

решил выучить наконец программирование методом тыка

для практики решил реализовать систему формирования табелей рабочего времени

проблемы возникли сразу же

Хочу реализовать класс Division (подразделение организации) и Employee (работник организации)

если говорить на языке баз данных, между ними соотношение один-ко-многим

а как их связать как объекты?
То есть чтобы можно было сделать, грубо говоря
Код: c#
1.
foreach (Employee worker in someDivision)


и при этом чтобы можно было обратиться к функции Employee.ChangeDivision (Division someAntherDivision)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    class Division {
        int id;
        string name;
    }
    class Employee
    {
        string name;
        string position;
        decimal wagerate;
        }
    }



Вопросы, простите, идиотские
...
Рейтинг: 0 / 0
04.10.2017, 12:07
    #39530672
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
fundddа как их связать как объекты?
Если не руками, то взять орм и указать ЕМУ отношение.
Всё.
...
Рейтинг: 0 / 0
04.10.2017, 12:11
    #39530673
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
funddd,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
class Division {
        public int id {get; set;}
        public string name {get; set;}
}

class Employee {
        public string name {get; set;}
        public string position {get; set;}
        public decimal wagerate {get; set;}
        public Division EmplDevision {get; set;}
        //or
        public int EmplDevID {get; set;}
}



это требовалось?
...
Рейтинг: 0 / 0
04.10.2017, 12:12
    #39530674
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
Прошу, нет, умоляю, чуть-чуть раскрыть...
Как это делается руками?
И что такое орм?
...
Рейтинг: 0 / 0
04.10.2017, 12:14
    #39530677
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
WitC, а как в этом случае организовать перебор Employee, которые принадлежат к someDivision?
...
Рейтинг: 0 / 0
04.10.2017, 12:23
    #39530687
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
funddd,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
using System.Linq;
//=================


var Employees = List<Employee>(new[]{ new Employee() { EmplDevID = 1 }, new Employee() { EmplDevID = 1 },new Employee() { EmplDevID = 2 } });
var EmplInDevision = Employees.Where(empl=>empl.EmplDevID == 1);
foreach(Employee empl in EmplInDevision )
{
Console.WriteLine("EplDevision: {0}", empl.EmplDevID );
}

Cjnsjle.ReadKey();



если надо в подразделении хранить набор сотрудников:
авторclass Division {
int id;
string name;
Employee[] Employees;
}


как-то так...
...
Рейтинг: 0 / 0
04.10.2017, 12:25
    #39530689
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
если нужно получить список сотрудников для департамента, то можно их просто отфильтровать через
метод расширение Linq Where:

Код: c#
1.
var someDivisionEmployers = emploers.Where(emp => emp.DisvionId = <DivistionId>);
...
Рейтинг: 0 / 0
04.10.2017, 12:26
    #39530690
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
методом тыка вы далеко не уедите, откройте книги и почитайте, это просто.
видео курсы тоже хорошая штука, но книга запоминается на много лучше (имхо).
тогда не придется задавать такие простые вопросы
...
Рейтинг: 0 / 0
04.10.2017, 12:29
    #39530694
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
fundddИ что такое орм?
Библиотека. Делает из базы объекты туда сюда.
...
Рейтинг: 0 / 0
04.10.2017, 12:42
    #39530700
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
Eак ни странно, я все понял
Спасибо, джентльмены!
PS: Совет читать и смотреть весьма нелишний
...
Рейтинг: 0 / 0
04.10.2017, 16:08
    #39530887
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
Petro123,

"Туда, сюда, обратно, тебе и мне приятно?" (с) Мурзилка =)
...
Рейтинг: 0 / 0
05.10.2017, 08:28
    #39531213
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
Перешел к практической реализации

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    class Division
    {
        public string Name { get; set; }
        public Employee[] Employees { get; set; }
    }
    class Employee
    {
        public string Name { get; set; }
        public string Position { get; set; }
        public decimal Wagerate { get; set; }
        public Employee (string name, string position, decimal wagerate, Division division)
        {
            this.Name = name;
            this.Position = position;
            this.Wagerate = wagerate;
        }
    }


а как при инициализации Employee добавить в division создающийся объект Employee?
...
Рейтинг: 0 / 0
05.10.2017, 08:53
    #39531219
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
точнее, а как при инициализации Employee добавить в division.Employees создающийся объект Employee?
...
Рейтинг: 0 / 0
06.10.2017, 10:03
    #39531962
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
Еще вопрос (на предыдущий уже ответил):
Для использования LINQ обязательно ли вручную составлять коллекцию объектов или есть возможность запросить некий автоматически генерируемый список экземпляров класса?

Задача формирования списка объектов несложная, но если есть возможность переложить ее на автоматику, вероятность ошибки уменьшается в разы :)
...
Рейтинг: 0 / 0
06.10.2017, 13:09
    #39532143
LameUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
fundddДобрый день!

решил выучить наконец программирование методом тыка

для практики решил реализовать систему формирования табелей рабочего времени

проблемы возникли сразу же

Хочу реализовать класс Division (подразделение организации) и Employee (работник организации)

если говорить на языке баз данных, между ними соотношение один-ко-многим

а как их связать как объекты?
То есть чтобы можно было сделать, грубо говоря
Код: c#
1.
foreach (Employee worker in someDivision)


и при этом чтобы можно было обратиться к функции Employee.ChangeDivision (Division someAntherDivision)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    class Division {
        int id;
        string name;
    }
    class Employee
    {
        string name;
        string position;
        decimal wagerate;
        }
    }



Вопросы, простите, идиотские

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

1. Декретные отпуска
2. Больничные
3. Работа по совместительству (это про вашу связь один ко многим)
4. Обычные отпуска
5. История работы сотрудника (он может в одном месяце работать на разных должностях в случаях перевода из одного подразделения в другое) + увольнения
6. Командировки
7. Повышение квалификации (обучение за счет работадателя)
и т.д.
...
Рейтинг: 0 / 0
06.10.2017, 20:29
    #39532504
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
fundddЗадача формирования списка объектов несложная, но если есть возможность переложить ее на автоматику, вероятность ошибки уменьшается в разы :)
Именно. Я тебе предлагал сделать именно от базы.
Справочник дней рождения из 2-3 таблицы.
Классы будут автоматом от маппинга.
...
Рейтинг: 0 / 0
07.10.2017, 06:28
    #39532590
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
LameUser, на самом деле задача вполне себе из реальной жизни.
Полный перечень классов и их полей значительно шире :)

Petro123, в примерах и самоучителях часто используется Entity Framework (System.Data.Entity), ОРМ это что-то похожее?
...
Рейтинг: 0 / 0
07.10.2017, 10:04
    #39532609
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь классов между собой (помогите разобраться)
funddd,
Это оно.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Связь классов между собой (помогите разобраться) / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]