powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Проверка коллекции временных интервалов
2 сообщений из 2, страница 1 из 1
Проверка коллекции временных интервалов
    #35196399
ZedF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется коллекция временных интервалов (каждый интервал имеет время начала и продолжительность). В коллекцию могут добавляться новые интервалы, и изменяться существующие, но требуется не допустить их пересечения.

Временной интервал - это самостоятельный класс, поэтому он имеет событие IntervalAboutToChange, которое наступает перед тем как интервал реально измениться, и поймав которое можно проверить допустимость грядущего изменения, и в случае проблем выбросить исключение.

Проблема в том, что у меня получаются два довольно похожих метода проверки, и ни как не могу сообразить, как их объединить в один.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
private void CheckNewTimeInterval(TimeInterval newTimeInterval)
        {
            foreach (TimeInterval currInterval in _collection)
            {

                if (!IntervalOK(newTimeInterval, currInterval))
                    throw new ArgumentException("Диапазоны интервалов пересекаются");
            }
        }



private void CheckChangedTimeInterval(TimeInterval changedInterval, TimeInterval originalInterval)
        {
            foreach (TimeInterval currInterval in _collection)
            {         

                if (!originalInterval.Equals(currRequestInterval) && !IntervalOK(timeInterval, currRequestInterval))
                    throw new ArgumentException("Диапазоны интервалов пересекаются");
            }
        }

Метод CheckChangedTimeInterval() вызывается перед тем, как произойдет изменение интервала, и поэтому имеет два аргумента - измененный интервал и первоначальный интервал.
Метод CheckNewTimeInterval() вызывается перед вставкой (т.е. в коллекции новый интервал еще отсутствует).
Функция IntervalOK() проверяет не пересекается-ли интервал с другим.
Можно как-нибудь их объединить в нечто одно ?
...
Рейтинг: 0 / 0
Проверка коллекции временных интервалов
    #35196675
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно на коллекции сделать етод except, порождаюший ее без заданного интервала. И метод contains.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
boolean contains(TimeIterval interval, TmeInterval exclude = null)
{
            foreach (TimeInterval currInterval in _collection)
                if (!currInterval.Equals(exclude) && newTimeInterval.intersects(interval))
                    return true;
            return false;
}

void assertNotContains(TimeIterval interval, TmeInterval exclude = null)
{
     if (contains(interval, exclude))
              throw new ArgumentException("Диапазоны интервалов пересекаются");
}
private void CheckNewTimeInterval(TimeInterval newTimeInterval)
        {
                assertNotContains(newTimeInterval, null)
        }
private void CheckChangedTimeInterval(TimeInterval changedInterval, TimeInterval originalInterval)
{
      assertNotContains(changedInterval, originalInterval)
}
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Проверка коллекции временных интервалов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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