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

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.

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