Добавил:
выбрасываю тут свой мусор, надеюсь, что он кому-то может пригодится... Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
laba4.docx
Скачиваний:
5
Добавлен:
03.12.2023
Размер:
840.2 Кб
Скачать

Класс Filter

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace laba4

{

public class Filter

{

private ILogExp expression;

private string field_name;

private string filter_value;

public Filter(ILogExp new_expression, string new_field_name, string new_filter_value)

{

expression = new_expression;

field_name = new_field_name;

filter_value = new_filter_value;

}

public bool check(Firm firm)

{

List<Field> firm_fields = firm.Get_fields_list();

for (int i = 0; i < firm_fields.Count; ++i)

{

if (firm_fields[i].get_name() == field_name)

return expression.check(filter_value, firm_fields[i].get_value());

}

return false;

}

}

}

Рис.4-6 Работа приложения

Вывод

Были изучены базовые принципы проектирования объектно-ориентированных программ,UML-диаграмм последовательности и деятельности, а также принципы тестирования пользовательского интерфейса.

Была разработана программная реализация представления фирмы на основной форме в системе взаимоотношений с клиентами с обеспечением возможностей: выбора состава полей для отображения; выполнения фильтрации фирм по содержимому нескольких полей и контактов; добавления новых фирм и редактирования полей существующих фирм и их контактов для основного подразделения.

Также разработаны автономные тесты, обеспечивающие проверку правильности добавления новой фирмы и фильтрацию фирм по значениям полей «Город» и «Дата начала контактов» с использованием графического интерфейса.

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

Основной контроллер содержит менеджер фирм, который определяет текущее представление фирмы (состав полей) FirmVw и текущий набор фирм, которые отображаются с помощью элемента ListView, расположенного на основной форме frmMain.

Каждый тип логического выражения StrFieldExpr, DateFieldExpr, IntFieldExp, необходимый на данный момент в системе, имеет ссылку на строго типизированный интерфейс логического выражения. В качестве реализации данного интерфейса выступают обобщенные классы логических выражений для операций равно (EQ), не равно (NoEQ), больше (GT), меньше (LT), больше или равно (GE), меньше или равно (LE), содержит (Contains) и не содержит (NoContains).

Системное событие о необходимости выполнения фильтрации фирм передается в основной контроллер MainContr, который создает частный контроллер фильтрации FilterContr и указывает ему ссылку на текущий менеджер фирм. Далее создается форма для выбора условий фильтрации по каждому полю frmFilter, с которой связывается ассоциацией частный контроллер FilterContr.

Форма frmFilter содержит два компонента для отображения двух видов полей (данных и строк), которые отображают разный состав возможных логических условий.

Чтобы создать такие компоненты, в визуальном редакторе была скомпонованаодна из панелей, скопирован код в отдельный класс и модернизирован этот класс наличием в именах элементов индекса соответствующей панели, тем самым обеспечивая уникальность имен элементов. А также класс компонент получает текущую высоту свойства Location панели для перемещения панели по высоте исходной формы.

При нажатии на кнопку «Применить» все включенные правила фильтрации помещаются в контроллер фильтрации и форма закрывается. При этом основной контроллер MainContr получает от частного контроллера фильтрации FilterContr новый экземпляр класса FirmMngr, содержащий отфильтрованный список фирм и замещает на него первоначальную ссылку менеджера фирм.

Соседние файлы в предмете Объектно-ориентированное программирование