Найти в Дзене
Изучаем C# - Деревья и рекурсия (часть 3)
Часть 1: Часть 2: Пусть мы хотим найти все организации в дереве, которые удовлетворяют определённому условию. Подумаем, каким будет метод поиска. Во-первых, он будет принимать на вход корневую организацию и условие поиска. Условие может быть любым куском кода, то есть, это будет функция. Функция условия должна принимать на вход организацию, которую мы хотим проверить, и выдавать в ответ логическое значение true/false. Таким образом, функция условия будет иметь тип данных Func<Organization, bool>...
1 месяц назад
Изучаем C# - Деревья и рекурсия (часть 2)
В прошлой статье мы изучили, как выглядят деревья в программировании и как обойти дерево. Для задания дерева достаточно в каждом узле дерева хранить либо список дочерних объектов, либо ссылку на родительский. Если есть что-то одно, то можно найти и второе. У нас уже есть класс Organization (организация), и каждая организация содержит в себе список дочерних Childes: Также у организации есть Id родительской - ParentId. Сейчас он не используется и потому горит серым. Из прошлой статьи у нас также остался пример организаций и код для обхода дерева в OrganizationTreeWalker...
1 месяц назад
Изучаем C# - Деревья и рекурсия (часть 1)
В программировании часто возникают древовидные структуры данных, так что нужно уметь с ними работать. Например, организации и подразделения - одна организация может содержать несколько дочерних организаций и подразделений, те в свою очередь могут содержать ещё дочерние организации и так далее: Каждая организация хранит в себе список дочерних организаций или ссылку на родительскую - таким образом, во всех задачах, где объект должен хранить список дочерних объектов или ссылку на родительский объект возникает дерево...
1 месяц назад
Изучаем C# - Пример ООП (часть 4)
Предыдущие статьи: В прошлой статье мы сделали CRUD-сервисы для работы с сущностями Person (человек) и DisabilitySheet (больничный). Теперь надо сделать CRUD-сервисы для AppointmentOrder (приказ о назначении) и HolidayOrder (приказ об отпуске). Поскольку у этих двух сущностей есть общие поля, мы создали для них общий базовый класс BaseOrder (базовый приказ). Поскольку иерархия CRUD-сервисов повторяет иерархию сущностей, то мы должны сначала сделать сервис для BaseOrder и уже потом - для этих двух сущностей...
1 месяц назад
Изучаем C# - Пример ООП (часть 3)
Часть 1: Часть 2: Сейчас будет трудная тема, но зато она активно используется на практике. Итак, мы имеем сервис для людей - PersonService. Нам также надо создать сервисы для каждой нашей сущности: AppointmentOrderService, HolidayOrderService, DisabilitySheetService. Однако, если мы начнём их создавать, то увидим, что они похожи друг на друга. Много кода дублируется. А дублирование кода - это плохо, потому что его надо будет поддерживать: со временем придётся делать какой-то новый функционал, что-то менять, и придётся менять каждый сервис по отдельности, что долго и неудобно...
1 месяц назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала