МИНОБРНАУКИ РОССИИ
Ф едеральное государственное бюджетное образовательное учреждение высшего образования
НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ им. Р.Е.АЛЕКСЕЕВА
Институт радиоэлектроники и информационных технологий
Компьютерные технологии в проектировании и производстве
Изучение принципов декомпозиции модели предметной области на основе объектно-ориентированной парадигмы программирования
ОТЧЕТ
Лабораторная работа №3
по дисциплине
Объектно-ориентированное программирование
РУКОВОДИТЕЛЬ:
________________ (подпись) (фамилия, и.,о.)
СТУДЕНТ:
________________
(подпись) (фамилия, и.,о.)
(шифр группы)
Работа защищена «___» ____________
С оценкой ________________________
Нижний Новгород 2019
Содержание
Цель работы 3
Задание на лабораторную работу 3
Contact.cs 10
ContType.cs 11
ContTypeCol.cs 12
FirmFactory.cs 12
Program.cs 12
SubFirm.cs 13
SbFirmType.cs 14
SubFirmTypeCol.cs 15
Рис.3 Структура 17
Цель работы
Изучение принципов декомпозиции решаемой задачи на отдельные классы. Изучение диаграмм классов и принципов модульного тестирования.
Задание на лабораторную работу
Разработать программную реализацию модели предметной области системы взаимоотношений с клиентами. Система взаимоотношений с клиентами должна обеспечивать хранение информации (адресная информация, контактная информация, 5 дополнительных текстовых полей с названием пользователя) о фирме и ее подразделениях и информацию о различных видах контактов с данными подразделениями. Система должна обеспечивать выборку фирм в зависимости от значения одного или нескольких полей, наличия или отсутствия некоторого контакта заданного типа или в заданный период. Система также должна обеспечивать простановку некоторого значения поля или контакта для фирм попавших в выборку.
Необходимо также разработать модульные тесты, обеспечивающие проверку работоспособности сконструированных классов.
Рис 1.Диаграмма классов
Код класса Firm.Cs
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shtan
{
public class Firm
{
public Dictionary<string, string> _usrFields;
public List<SubFirm> _sbFirms;
public List<Contact> _contacts;
private string country;
private string email;
private string dateIn;
private string name;
private string region;
private string postInx;
private string street;
private string town;
private string web;
public string Country
{
get
{
return country;
}
set
{
country = value;
}
}
public string Email
{
get
{
return email;
}
set
{
email = value;
}
}
public string DateIn
{
get
{
return dateIn;
}
set
{
dateIn = value;
}
}
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public string Region
{
get
{
return region;
}
set
{
region = value;
}
}
public string PostInx
{
get
{
return postInx;
}
set
{
postInx = value;
}
}
public string Street
{
get
{
return street;
}
set
{
street = value;
}
}
public string Town
{
get
{
return town;
}
set
{
town = value;
}
}
public string Web
{
get
{
return web;
}
set
{
web = value;
}
}
public int SbFirmsCount
{
get { return _sbFirms.Count; }
}
public SubFirm this[int index]
{
get { return _sbFirms[index]; }
set { _sbFirms[index] = value; }
}
// методы
public void AddCont(Contact new_contact)
{
_contacts.Add(new_contact);
}
public void AddContToSbFirm(Contact new_contact)
{
foreach (SubFirm cur_sub in _sbFirms)
cur_sub.AddCont(new_contact);
}
public void AddField(string field_name, string value)
{
_usrFields.Add(field_name, value);
}
public void AddSbFirm(SubFirm new_sub_firm)
{
_sbFirms.Add(new_sub_firm);
}
public bool ExistContact(Contact contact_for_search)
{
foreach (Contact cur_contact in _contacts)
if (cur_contact == contact_for_search)
return true;
return false;
}
public string GetField(string key)
{
string value;
_usrFields.TryGetValue(key, out value);
return value;
}
public void RenameField(string old_key, string new_key)
{
string value;
_usrFields.TryGetValue(old_key, out value);
_usrFields.Remove(old_key);
_usrFields.Add(new_key, value);
}
public void SetField(string field_name, string value)
{
_usrFields.Remove(field_name);
_usrFields.Add(field_name, value);
}
public Firm()
{
_usrFields = new Dictionary<string, string>();
_sbFirms = new List<SubFirm>();
_contacts = new List<Contact>();
}
public Firm(Dictionary<string, string> _newDictionary)
{
_usrFields = _newDictionary;
_sbFirms = new List<SubFirm>();
_contacts = new List<Contact>();
}
//получение полей
public string[] GetMain()
{
string[] result = new string[9];
result[0] = country;
result[1] = dateIn;
result[2] = email;
result[3] = name;
result[4] = postInx;
result[5] = region;
result[6] = street;
result[7] = town;
result[8] = web;
return result;
}
}
}