Как использовать ООП в ИС на 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();
        }
  }

Ответы (0 шт):