SubFirmTypeCol.Cs
namespace Shtan
{
public class SubFirmTypeCol : IEnumerator
{
private List<SbFirmType> _lst;
private int count;
public object Current
{
get { return _lst[count]; }
}
public int Count
{
get
{
return count;
}
set
{
count = value;
}
}
public SbFirmType this[int index]
{
get { return _lst[index]; }
set { _lst[index] = value; }
}
public void Add(SbFirmType new_type)
{
_lst.Add(new_type);
}
public void Dispose()
{
count = -1;
}
public IEnumerator GetEnumerator()
{
return this;
}
public bool MoveNext()
{
if (count == _lst.Count - 1)
{
Reset();
return false;
}
count++;
return true;
}
public void Reset()
{
count = -1;
}
public void SbFirmTypeCol()
{
_lst = new List<SbFirmType>();
}
}
}
Рис.3 Структура
Вывод
Была разработана программная реализация модели предметной области
системы взаимоотношений с клиентами. Данная система обеспечивает хранение информации о фирме и ее подразделениях и информацию о различных видах контактов с данными подразделениями. Система обеспечивает выборку фирм в зависимости от значения одного или нескольких полей, наличия или отсутствия некоторого контакта заданного типа или в заданный период. Также система обеспечивает простановку некоторого значения поля или контакта для фирм попавших в выборку.
Также были разработаны модульные тесты, обеспечивающие проверку работоспособности сконструированных классов.
Наличие у фирмы дополнительных пяти полей предполагает, что пользователь сможет самостоятельно устанавливать их название согласно их назначению. Поэтому в системе предусмотрены настройки для модификации названий этих полей и следовательно существует класс, управляющий этими настройками. Этот же класс создает экземпляры класса Firm, так как является экспертом, обладающим информацией о дополнительных полях этого класса. Наличие у фирм подразделений предполагает выполнение взаимодействий как с самой фирмой, так и с ее подразделениями. Это означает, что множество контактов принадлежат как самой фирме, так и ее подразделениям. Поскольку такие взаимодействия требуется хранить, а для этого потребуется БД, то контакты принадлежат двум сущностям: фирмам и их подразделениям. Для универсализации хранения контактов было введено обязательное подразделение, называемое «Основное подразделение», которое будет представлять всю фирму целиком. Класс фирмы содержит строго типизированные поля адресной информации и словарь _usrFields пользовательских значений. Методы класса фирмы обеспечивают управление структурой фирмы и составом ее контактов. Класс подразделения содержит строго типизированные поля контактной информации и список собственных контактов. Методы класса подразделения обеспечивают управление составом контактов и принадлежниоси подразделения к заданному типу. Класс контакта содержит строго типизированные поля, содержащие информацию о контакте. Методы класса контакта обеспечивают клонирование контакта и переопределяют операции равенства и неравенства контактов, обеспечивая необходимую семантику сравнения (по совпадению значений полей контакта). Фабрика фирм (FirmFactory) обеспечивает знание названий пользовательски полей и создает экземпляры класса Firm правильной структуры.
Классы SbFirmType и ContType представляют информацию о типах подразделений и типах контактов. Классы SbFirmTypeCol и ContTypeCol обеспечивают знание доступных типов подразделений и контактов и содержат методы для их обхода. Кроме этого SbFirmTypeCol реализует исполнение интрефейса IEnumerable с помощью внутреннего списка и тем самым обеспечивает возможность его применения в цикле ForEach.