Как использовать ООП в ИС на Winforms?
Я начал изучать ООП прочитал 4 принципа, но не знаю как применить их к моей ИС по работе фруктохранилища. Буду рад если покажете пару применений ООП к моей работе.
Пользовательского интерфейс я сделал по MVP архитектуре. У меня есть папка модели данных где я описал все сущности а дальше с помощью Entity Framework создал базу данных в MS SQL server. Вот пару сущностей которые я описал:
Класс Фруктохранилище:
class FruitStorage
{
[Key]
public int FruitStorageKod { get; set; }
public int Weightfruit { get; set; }
public int Kod_sotr {get;set;}
public int Kod_cell { get; set; }
public int Kod_chamber { get; set; }
public DateTime Date_fill { get; set; }
public virtual Sotr Sotr { get; set; }
public virtual Сhamber Chamber { get; set; }
}
Класс сотрудника:
class Sotr
{
[Key]
public int Kod_sotr { get; set; }
public string Fio { get; set; }
public string Gender { get; set; }
public string Experience { get; set; }
public DateTime Date_of_Birth { get; set; }
public string Phone { get; set; }
public ICollection<FruitStorage> Fruit_Storages2 { get; set; }
public ICollection<Сell> Сells { get; set; }
public override string ToString()
{
return Fio;
}
}
Класс клетки(поля)
class Cell
{
[Key]
public int Kod_cell { get; set; }
public int Kod_apple { get; set; }
public int Kod_sotr { get; set; }
public int Size { get; set; }
public virtual Apple Apple { get; set; }
public virtual Sotr Sotr { get; set; }
}
Класс context
class context:DbContext
{
public context() : base("Connection") { }
public DbSet<FruitStorage> FuitStorages { get; set; }
public DbSet<Sotr> Sotrs { get; set; }
public DbSet<Apple> Apples { get; set; }
public DbSet<Сell> Сells { get; set; }
public DbSet<Сhamber> Сhambers { get; set; }
}
Также есть интерфейс со всеми данными для пользователя*(Можно было здесь вместо интерфейса использовать абстрактный класс?)*
interface Interface1
{
int Kod_cell { get; }
int Kod_chamber { get; }
int Kod_sotr { get; }
int Wheight { get; }
List<Sotr> kod_sotr { set; }
List<FruitStorage> fruitOut { set; }
List<Сell> kod_cell { set; }
List<Сhamber> kod_chamber { set; }
int SotrSort { get; }
string Freecham { set; }
}
Ну и сам докладчик где реализованы все функции программы
public class FruitSoragePresenter
{
Interface1 sotrView;
context db= new context();
internal FruitSoragePresenter(Interface1 view)
{
sotrView = view;
sotrView.kod_sotr = db.Sotrs.ToList();
sotrView.fruitOut = db.FuitStorages.ToList();
sotrView.kod_cell = db.Сells.ToList();
sotrView.kod_chamber = db.Сhambers.ToList();
}
public void AddFruit()//добавление данных
{
FruitStorage storage = new FruitStorage();
storage.Kod_cell = sotrView.Kod_cell;
storage.Kod_chamber = sotrView.Kod_chamber;
storage.Kod_sotr = sotrView.Kod_sotr;
var cham = db.Сhambers.Where(p => p.Kod_chamber == sotrView.Kod_chamber).ToArray();
if (int.Parse( cham[0].Size.ToString()) >= sotrView.Wheight)
{
storage.Weightfruit = sotrView.Wheight;
}
else
{
MessageBox.Show("Переполнение камеры");
}
storage.Date_fill = DateTime.Now;
db.FuitStorages.Add(storage);
db.SaveChanges();
sotrView.fruitOut = db.FuitStorages.ToList();
}
//public delegate void MethodContainer();
//public event MethodContainer OnSortSostr;
public void SortSotr()//фильтрациия
{
FruitStorage storage = new FruitStorage();
sotrView.fruitOut = db.FuitStorages.Where(p => p.Kod_sotr == sotrView.SotrSort).ToList();
}
public int FreeChamber()//функция для определение свободных камер
{
int sizefree=0;
var freecham = db.Сhambers.ToArray();
var fruitfree = db.FuitStorages.ToArray();
for (int i=0;i<freecham.Length;i++)
{
if(sotrView.Kod_chamber==freecham[i].Kod_chamber)
{
sizefree = freecham[i].Size;
break;
}
}
for (int i = 0; i < fruitfree.Length; i++)
{
if (sotrView.Kod_chamber==fruitfree[i].Kod_chamber)
{
sizefree -= fruitfree[i].Weightfruit;
}
}
sotrView.Freecham = sizefree.ToString();
return sizefree;
}
public FruitSoragePresenter()
{
var fruit = new Form2<FruitStorage>();
fruit.Show();
}
public void deletedvalue(int index)//удаление данных
{
FruitStorage storage = db.FuitStorages.Where(o => o.FruitStorageKod == index).FirstOrDefault();
db.FuitStorages.Remove(storage);
db.SaveChanges();
sotrView.fruitOut = db.FuitStorages.ToList();
}
}