Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kachusov v0.08.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
644 Кб
Скачать
☆

3.2 Реализация

Основная функция, благодаря которой осуществляется составления графика мероприятий названа CreatePlan. В этой функции происходит формирование и заполнение следующих коллекций результатами выполнения соответствующих функции:

  • Коллекция __Events заполняется коллекцией экзофреймов _Event посредством выполнения функции EvilEvent;

  • Коллекция __Dates заполняется коллекцией экзофреймов _Date посредством выполнения функции EvilDate;

  • Коллекция __Tags заполняется коллекцией экзофреймов _Tag посредством выполнения EvilTag. В функцию EvilTag в качестве аргумента по ссылке передается ранее заполненная коллекция __Events;

  • Коллекция __Edges заполняется коллекцией экзофреймов _Edge посредством выполнения EvilEdge. В функцию EvilEdge в качестве аргумента по ссылке передается ранее заполненная коллекция __Tags;

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

Так же функция CreatePlan осуществляет вывод сообщения о предполагаемой прибыли от мероприятий по дням недели. Сообщение формируется путем обхода всех элементов в коллекции экзофреймов __Events и перебора прибыли от этого мероприятия в каждый из дней, содержащийся в коллекции _DayEq экзофрейма _Event.

После формирования коллекции __Tags, заполненной экзофреймами тэгов, осуществляется создание коллекции с ссылками на существующие экзофреймы тэгов в существующих экзофреймах мероприятий, исходя из данных о тегах, которыми характеризуется мероприятие.

После формирования коллекции __Events, заполненной экзофреймами мероприятий, для каждого экземпляра коллекции __Edges в результате выполнения метода CompairTags создаются коллекции ссылок на экзофреймы мероприятий, имеющие это ребро тегов. Для каждого экземпляра коллекции __Edges происходит вызов метода GetInfo. При условии, что данное ребро характеризует по крайней мере одно существующие мероприятие, метод GetInfo посредством формирования запроса к таблицам Event_timetable и General_log базы данных, заполняет свойство _AllEventVisitors этого ребра, содержащее список номеров индивидуальных карт клиентов, посетивших это мероприятие во время всего ретроспективного периода. После заполнения свойства _ AllEventVisitors происходит формирование свойства _UnicEventVisitors, являющиеся коллекцией уникальных посетителей мероприятий, характеризуемых этим ребром тегов, в результате отбора неповторяющихся элементов коллекции _AllEventVisitors. Заполняются следующие свойства:

  • Свойство _UnicVisit, содержащие количество уникальных посетителей мероприятий, характеризуемых этим ребром тегов за все время ретроспективного периода;

  • Свойство _VisitorReturn, содержащие отношение количества уникальных посетителей на общее количество посетителей мероприятий, характеризуемых этим ребром тегов за все время ретроспективного периода;

  • Свойство _AUnicVisit, содержащие отношение количества уникальных посетителей мероприятий, характеризуемых этим ребром тегов, к количеству мероприятий.

Для каждого экземпляра коллекции __Events выполняются следующие методы:

  • Метод DetermineEdge, в который передается коллекция __Edges. В результате выполнения метода DetermineEdge происходит заполнение свойства _Edges экзофрейма _Event, при определении наличия ссылки на данный экзофрейм в коллекции EventsAcTags каждого экземпляра коллекции __Edges.

  • Метод GetAllUV. Заполняется свойство _AllUnicVisitors, являющееся списком номеров кард уникальных посетителей всех ребер, характеризующих это мероприятие.

  • Метод daysEq, в который по ссылке передается коллекция __Dates. Заполняется свойство _DayEq, являющееся коллекцией прибылей мероприятия в каждый из дней. Вычисляется показатель прибыли мероприятия в день в результате произведения отношения суммы произведений количества уникальных посетителей по каждому ребру и дневного коэффициента к количеству ребер, характеризующих данное мероприятие на стоимость этого мероприятия.

,

Где U - количество уникальных посетителей мероприятий характеризуемых ребром n, D - дневной коэффициент, E - количество ребер, характеризующих данное мероприятие, при чем 0 < E ≤ 3, C - стоимость посещения мероприятия.

Функция EvilEvent производит создание коллекции экзофреймов мероприятий. Для каждого выбранного мероприятия на этапе выбора мероприятий для создания графика мероприятий создается экземпляр протофрейма и заполняется конструктором классов. Конструктор принимает значение имени мероприятия и заполняет следующие свойства экземпляра:

  • _ID - ID мероприятия ;

  • _Type - тип мероприятия;

  • _Cost - стоимость посещения мероприятия;

  • TagsString - теги, характеризующие мероприятие.

Функция EvilTag производит создание коллекции экзофреймов тэгов. Формируется список всех тэгов характеризующих все мероприятия и избавляется от дублирования.

Функция EvilEdge производит создание коллекции экзофреймов ребер. В конструктор фрейма ребра передается название ребра и пара отличающихся друг от друга тегов, составляющих это ребро.

Функция EvilDate производит создание коллекции экзофреймов дат.

Свойства и методы всех экзофреймов являются защищенными от внешнего воздействия структурами.